func verifyCopiedFiles()

in tools/dockerversioning/scripts/dockerfiles/main.go [181:228]


func verifyCopiedFiles(version versions.Version, templateDir string) (failureCount int) {
	failureCount = 0
	findFilesToCopy(templateDir, func(path string, sourceFileInfo os.FileInfo) {
		failureCount++

		source := filepath.Join(templateDir, path)
		target := filepath.Join(version.Dir, path)
		targetFileInfo, err := os.Stat(target)
		if err != nil {
			log.Printf("%s is expected but cannot be stat'ed", target)
			log.Printf("Please, check accessability of %s", source)
			return
		}

		// Check mode for owner only.
		sourcePerm := os.FileMode(sourceFileInfo.Mode().Perm() & 0700)
		targetPerm := os.FileMode(targetFileInfo.Mode().Perm() & 0700)
		if sourcePerm != targetPerm {
			log.Printf("%s has wrong file mode %v, expected %v", target, targetPerm, sourcePerm)
			return
		}

		expected, err := ioutil.ReadFile(source)
		check(err)
		actual, err := ioutil.ReadFile(filepath.Join(version.Dir, path))
		if err != nil {
			log.Printf("%s is expected but cannot be read", target)
			return
		}

		if !reflect.DeepEqual(expected, actual) {
			log.Printf("%s content is different from its template", target)
			return
		}

		log.Printf("%s: OK", target)

		failureCount--
	})

	if failureCount == 0 {
		log.Print("Copied files verification completed: PASSED")
	} else {
		log.Print("Copied files verification completed: FAILED")
	}

	return
}