in metric/system/cgroup/testhelpers/file_setup.go [58:112]
func extractTestData(path string) error {
r, err := zip.OpenReader(path)
if err != nil {
return err
}
defer r.Close()
dest := filepath.Dir(path)
extractAndWriteFile := func(zipFile *zip.File) error {
rc, err := zipFile.Open()
if err != nil {
return err
}
defer rc.Close()
path := filepath.Join(dest, zipFile.Name) //nolint: gosec // test with controlled input
if found, err := exists(path); err != nil || found {
return err
}
if zipFile.FileInfo().IsDir() {
err = os.MkdirAll(path, zipFile.Mode())
if err != nil {
return err
}
} else {
destFile, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.FileMode(0700))
if err != nil {
return err
}
defer destFile.Close()
_, err = io.Copy(destFile, rc) //nolint: gosec // test with controlled input
if err != nil {
return err
}
err = os.Chmod(path, zipFile.Mode())
if err != nil {
return err
}
}
return nil
}
for _, f := range r.File {
err := extractAndWriteFile(f)
if err != nil {
return err
}
}
return nil
}