func extractTestData()

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
}