in internal/buildpacktestenv/buildpacktestenv.go [71:169]
func SetUpTempDirs(t *testing.T, customCodeDir string) TempDirs {
t.Helper()
layersDir := t.TempDir()
platformDir := t.TempDir()
codeDir := ""
if customCodeDir != "" {
err := os.Mkdir(filepath.Join(os.TempDir(), customCodeDir), 0700)
if err != nil {
t.Fatalf("creating code dir: %v", err)
}
codeDir = filepath.Join(os.TempDir(), customCodeDir)
} else {
codeDir = t.TempDir()
}
buildpackDir := t.TempDir()
stack := "com.stack"
buildpackTOML := fmt.Sprintf(`
api = "0.9"
[buildpack]
id = "my-id"
version = "my-version"
name = "my-name"
[[stacks]]
id = "%s"
`, stack)
if err := ioutil.WriteFile(filepath.Join(buildpackDir, "buildpack.toml"), []byte(buildpackTOML), 0644); err != nil {
t.Fatalf("writing buildpack.toml: %v", err)
}
planTOML := `
[[entries]]
name = "entry-name"
version = "entry-version"
[entries.metadata]
entry-meta-key = "entry-meta-value"
`
if err := ioutil.WriteFile(filepath.Join(buildpackDir, "plan.toml"), []byte(planTOML), 0644); err != nil {
t.Fatalf("writing plan.toml: %v", err)
}
if err := os.Setenv("CNB_STACK_ID", stack); err != nil {
t.Fatalf("setting env var CNB_STACK_ID: %v", err)
}
if err := os.Setenv("CNB_BUILDPACK_DIR", buildpackDir); err != nil {
t.Fatalf("setting env var CNB_BUILDPACK_DIR: %v", err)
}
// Set Plartform dir
if err := os.Setenv("CNB_PLATFORM_DIR", platformDir); err != nil {
t.Fatalf("setting env var CNB_PLATFORM_DIR: %v", err)
}
// Set Build plan path
if err := os.Setenv("CNB_BUILD_PLAN_PATH", filepath.Join(buildpackDir, "plan.toml")); err != nil {
t.Fatalf("setting env var CNB_BUILD_PLAN_PATH: %v", err)
}
// Set Layers dir
if err := os.Setenv("CNB_LAYERS_DIR", layersDir); err != nil {
t.Fatalf("setting env var CNB_LAYERS_DIR: %v", err)
}
// Set CNB_BP_PLAN_PATH
if err := os.Setenv("CNB_BP_PLAN_PATH", filepath.Join(buildpackDir, "plan.toml")); err != nil {
t.Fatalf("setting env var CNB_BP_PLAN_PATH: %v", err)
}
temps := TempDirs{
CodeDir: codeDir,
LayersDir: layersDir,
PlatformDir: platformDir,
BuildpackDir: buildpackDir,
PlanFile: filepath.Join(buildpackDir, "plan.toml"),
}
t.Cleanup(func() {
if err := os.RemoveAll(codeDir); err != nil {
t.Fatalf("removing code dir %q: %v", codeDir, err)
}
if err := os.Unsetenv("CNB_STACK_ID"); err != nil {
t.Fatalf("unsetting CNB_STACK_ID: %v", err)
}
if err := os.Unsetenv("CNB_BUILDPACK_DIR"); err != nil {
t.Fatalf("unsetting CNB_BUILDPACK_DIR: %v", err)
}
if err := os.Unsetenv("CNB_PLATFORM_DIR"); err != nil {
t.Fatalf("unsetting CNB_PLATFORM_DIR: %v", err)
}
if err := os.Unsetenv("CNB_BUILD_PLAN_PATH"); err != nil {
t.Fatalf("unsetting CNB_BUILD_PLAN_PATH: %v", err)
}
})
return temps
}