func SetUpTempDirs()

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
}