src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/testutil/chmod.go (about)

     1  package testutil
     2  
     3  import (
     4  	"io/fs"
     5  	"os"
     6  )
     7  
     8  // ChmodOrSkip runs [os.Chmod], but skips the test if file's mode is not exactly
     9  // mode or if there is any error.
    10  func ChmodOrSkip(s Skipper, name string, mode fs.FileMode) {
    11  	err := os.Chmod(name, mode)
    12  	if err != nil {
    13  		s.Skipf("chmod: %v", err)
    14  	}
    15  	fi, err := os.Stat(name)
    16  	if err != nil {
    17  		s.Skipf("stat: %v", err)
    18  	}
    19  	if fi.Mode() != mode {
    20  		s.Skipf("file mode %O is not %O", fi.Mode(), mode)
    21  	}
    22  }