MCPcopy
hub / github.com/perkeep/perkeep / TestXattr

Function TestXattr

pkg/fs/fs_test.go:531–635  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

529}
530
531func TestXattr(t *testing.T) {
532 setxattr := func(path, attr string, data []byte, flags int) error {
533 return ignoringEINTR(func() error {
534 return syscallx.Setxattr(path, attr, data, flags)
535 })
536 }
537 getxattr := func(path, attr string, data []byte) (sz int, err error) {
538 err = ignoringEINTR(func() error {
539 sz, err = syscallx.Getxattr(path, attr, data)
540 return err
541 })
542 return
543 }
544 listxattr := func(path string, data []byte) (sz int, err error) {
545 err = ignoringEINTR(func() error {
546 sz, err = syscallx.Listxattr(path, data)
547 return err
548 })
549 return
550 }
551 removexattr := func(path, attr string) (err error) {
552 return ignoringEINTR(func() error {
553 return syscallx.Removexattr(path, attr)
554 })
555 }
556
557 condSkip(t)
558 inEmptyMutDir(t, func(env *mountEnv, rootDir string) {
559 name1 := filepath.Join(rootDir, "1")
560 attr1 := "attr1"
561 attr2 := "attr2"
562
563 contents := []byte("Some file contents")
564
565 if err := os.WriteFile(name1, contents, 0644); err != nil {
566 t.Fatal(err)
567 }
568
569 buf := make([]byte, 8192)
570 // list empty
571 n, err := listxattr(name1, buf)
572 if err != nil {
573 t.Errorf("Error in initial listxattr: %v", err)
574 }
575 if n != 0 {
576 t.Errorf("Expected zero-length xattr list, got %q", buf[:n])
577 }
578
579 // get missing
580 n, err = getxattr(name1, attr1, buf)
581 if err == nil {
582 t.Errorf("Expected error getting non-existent xattr, got %q", buf[:n])
583 }
584
585 // Set (two different attributes)
586 err = setxattr(name1, attr1, []byte("hello1"), 0)
587 if err != nil {
588 t.Fatalf("Error setting xattr: %v", err)

Callers

nothing calls this directly

Calls 11

ignoringEINTRFunction · 0.85
condSkipFunction · 0.85
inEmptyMutDirFunction · 0.85
parseXattrListFunction · 0.85
FatalMethod · 0.80
LogfMethod · 0.80
FatalfMethod · 0.65
SetxattrMethod · 0.45
GetxattrMethod · 0.45
ListxattrMethod · 0.45
RemovexattrMethod · 0.45

Tested by

no test coverage detected