in internal/acceptance/acceptance.go [1071:1124]
func verifyStructure(t *testing.T, image, builder string, cache bool, checks *StructureTest) {
t.Helper()
start := time.Now()
configurations := []string{structureTestConfig}
if checks != nil {
tmpDir, err := ioutil.TempDir("", "container-structure-tests")
if err != nil {
t.Fatalf("Error creating temp directory: %v", err)
}
defer func() {
if keepArtifacts {
return
}
if err = os.RemoveAll(tmpDir); err != nil {
log.Printf("Removing temp directory for container-structure-tests: %v", err)
}
}()
// Create a config file for container-structure-tests.
buf, err := json.Marshal(checks)
if err != nil {
t.Fatalf("Marshalling container-structure-tests configuration: %v", err)
}
configPath := filepath.Join(tmpDir, "config.json")
err = ioutil.WriteFile(configPath, buf, 0644)
if err != nil {
t.Fatalf("Writing container-structure-tests configuration: %v", err)
}
configurations = append(configurations, configPath)
}
// Container-structure-test command to test the image.
args := []string{"test", "--image", image}
for _, configuration := range configurations {
args = append(args, "--config", configuration)
}
cmd := exec.Command(structureBin, args...)
outFile, errFile, cleanup := outFiles(t, builder, "container-structure-test", fmt.Sprintf("%s-cache-%t", image, cache))
defer cleanup()
var outb bytes.Buffer
cmd.Stdout = io.MultiWriter(outFile, &outb)
cmd.Stderr = errFile
t.Logf("Running structure tests (logs %s)", filepath.Dir(outFile.Name()))
if err := cmd.Run(); err != nil {
t.Fatalf("Error running structure tests: %v, logs:\n%s", err, outb.String())
}
t.Logf("Successfully ran structure tests on %s (in %s)", image, time.Since(start))
}