Ctrl K
ComunidadGuías…

builder/build/code_build_env_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package build

import "testing"

func TestExpandBuildEnvsForSlugBuildPreservesBuildKeysAndAddsLegacyAliases(t *testing.T) {
	envs := map[string]string{
		"BUILD_PROCFILE":                "web: flask --app demo.app run --host 0.0.0.0 --port $PORT",
		"BUILD_NO_CACHE":                "true",
		"BUILD_ENABLE_ORACLEJDK":        "True",
		"BUILD_ORACLEJDK_URL":           "https://example.com/jdk.tar.gz",
		"BUILD_MAVEN_SETTING_NAME":      "tencent",
		"BUILD_MAVEN_CUSTOM_OPTS":       "-DskipTests",
		"BUILD_MAVEN_CUSTOM_GOALS":      "clean package",
		"BUILD_MAVEN_JAVA_OPTS":         "-Xmx1024m",
		"BUILD_MAVEN_MIRROR_DISABLE":    "true",
		"BUILD_MAVEN_MIRROR_OF":         "central",
		"BUILD_MAVEN_MIRROR_URL":        "https://mirror.example.com",
		"BUILD_GOPROXY":                 "https://goproxy.cn",
		"BUILD_GOPRIVATE":               "git.example.com",
		"BUILD_GO_INSTALL_PACKAGE_SPEC": "./cmd/demo",
		"BUILD_PIP_INDEX_URL":           "https://pypi.example.com/simple",
		"BUILD_NODE_ENV":                "production",
		"BUILD_NODE_MODULES_CACHE":      "true",
		"BUILD_NODE_BUILD_CMD":          "npm run build",
		"BUILD_NPM_REGISTRY":            "https://registry.npmmirror.com",
		"BUILD_YARN_REGISTRY":           "https://registry.yarnpkg.com",
		"BUILD_RUNTIMES":                "3.14",
		"BUILD_RUNTIMES_SERVER":         "nginx",
		"BUILD_RUNTIMES_MAVEN":          "3.9.14",
		"BUILD_GOVERSION":               "1.25",
		"BUILD_PYTHON_PACKAGE_MANAGER":  "pip",
	}

	got := expandBuildEnvsForSlugBuild(envs)

	if got["BUILD_PROCFILE"] != envs["BUILD_PROCFILE"] {
		t.Fatalf("expected BUILD_PROCFILE to be preserved, got %q", got["BUILD_PROCFILE"])
	}
	if got["PROCFILE"] != envs["BUILD_PROCFILE"] {
		t.Fatalf("expected PROCFILE alias to be synthesized, got %q", got["PROCFILE"])
	}
	if got["NO_CACHE"] != envs["BUILD_NO_CACHE"] {
		t.Fatalf("expected NO_CACHE alias to be synthesized, got %q", got["NO_CACHE"])
	}
	if got["ENABLE_ORACLEJDK"] != envs["BUILD_ENABLE_ORACLEJDK"] {
		t.Fatalf("expected ENABLE_ORACLEJDK alias to be synthesized, got %q", got["ENABLE_ORACLEJDK"])
	}
	if got["ORACLEJDK_URL"] != envs["BUILD_ORACLEJDK_URL"] {
		t.Fatalf("expected ORACLEJDK_URL alias to be synthesized, got %q", got["ORACLEJDK_URL"])
	}
	if got["MAVEN_SETTING_NAME"] != envs["BUILD_MAVEN_SETTING_NAME"] {
		t.Fatalf("expected MAVEN_SETTING_NAME alias to be synthesized, got %q", got["MAVEN_SETTING_NAME"])
	}
	if got["MAVEN_CUSTOM_OPTS"] != envs["BUILD_MAVEN_CUSTOM_OPTS"] {
		t.Fatalf("expected MAVEN_CUSTOM_OPTS alias to be synthesized, got %q", got["MAVEN_CUSTOM_OPTS"])
	}
	if got["MAVEN_CUSTOM_GOALS"] != envs["BUILD_MAVEN_CUSTOM_GOALS"] {
		t.Fatalf("expected MAVEN_CUSTOM_GOALS alias to be synthesized, got %q", got["MAVEN_CUSTOM_GOALS"])
	}
	if got["MAVEN_JAVA_OPTS"] != envs["BUILD_MAVEN_JAVA_OPTS"] {
		t.Fatalf("expected MAVEN_JAVA_OPTS alias to be synthesized, got %q", got["MAVEN_JAVA_OPTS"])
	}
	if got["MAVEN_MIRROR_DISABLE"] != envs["BUILD_MAVEN_MIRROR_DISABLE"] {
		t.Fatalf("expected MAVEN_MIRROR_DISABLE alias to be synthesized, got %q", got["MAVEN_MIRROR_DISABLE"])
	}
	if got["MAVEN_MIRROR_OF"] != envs["BUILD_MAVEN_MIRROR_OF"] {
		t.Fatalf("expected MAVEN_MIRROR_OF alias to be synthesized, got %q", got["MAVEN_MIRROR_OF"])
	}
	if got["MAVEN_MIRROR_URL"] != envs["BUILD_MAVEN_MIRROR_URL"] {
		t.Fatalf("expected MAVEN_MIRROR_URL alias to be synthesized, got %q", got["MAVEN_MIRROR_URL"])
	}
	if got["GOPROXY"] != envs["BUILD_GOPROXY"] {
		t.Fatalf("expected GOPROXY alias to be synthesized, got %q", got["GOPROXY"])
	}
	if got["GOPRIVATE"] != envs["BUILD_GOPRIVATE"] {
		t.Fatalf("expected GOPRIVATE alias to be synthesized, got %q", got["GOPRIVATE"])
	}
	if got["GO_INSTALL_PACKAGE_SPEC"] != envs["BUILD_GO_INSTALL_PACKAGE_SPEC"] {
		t.Fatalf("expected GO_INSTALL_PACKAGE_SPEC alias to be synthesized, got %q", got["GO_INSTALL_PACKAGE_SPEC"])
	}
	if got["PIP_INDEX_URL"] != envs["BUILD_PIP_INDEX_URL"] {
		t.Fatalf("expected PIP_INDEX_URL alias to be synthesized, got %q", got["PIP_INDEX_URL"])
	}
	if got["NODE_ENV"] != envs["BUILD_NODE_ENV"] {
		t.Fatalf("expected NODE_ENV alias to be synthesized, got %q", got["NODE_ENV"])
	}
	if got["NODE_MODULES_CACHE"] != envs["BUILD_NODE_MODULES_CACHE"] {
		t.Fatalf("expected NODE_MODULES_CACHE alias to be synthesized, got %q", got["NODE_MODULES_CACHE"])
	}
	if got["NODE_BUILD_CMD"] != envs["BUILD_NODE_BUILD_CMD"] {
		t.Fatalf("expected NODE_BUILD_CMD alias to be synthesized, got %q", got["NODE_BUILD_CMD"])
	}
	if got["NPM_REGISTRY"] != envs["BUILD_NPM_REGISTRY"] {
		t.Fatalf("expected NPM_REGISTRY alias to be synthesized, got %q", got["NPM_REGISTRY"])
	}
	if got["YARN_REGISTRY"] != envs["BUILD_YARN_REGISTRY"] {
		t.Fatalf("expected YARN_REGISTRY alias to be synthesized, got %q", got["YARN_REGISTRY"])
	}
	if got["RUNTIMES"] != envs["BUILD_RUNTIMES"] {
		t.Fatalf("expected RUNTIMES alias to be synthesized, got %q", got["RUNTIMES"])
	}
	if got["RUNTIMES_SERVER"] != envs["BUILD_RUNTIMES_SERVER"] {
		t.Fatalf("expected RUNTIMES_SERVER alias to be synthesized, got %q", got["RUNTIMES_SERVER"])
	}
	if got["RUNTIMES_MAVEN"] != envs["BUILD_RUNTIMES_MAVEN"] {
		t.Fatalf("expected RUNTIMES_MAVEN alias to be synthesized, got %q", got["RUNTIMES_MAVEN"])
	}
	if got["GOVERSION"] != envs["BUILD_GOVERSION"] {
		t.Fatalf("expected GOVERSION alias to be synthesized, got %q", got["GOVERSION"])
	}
	if _, ok := got["PYTHON_PACKAGE_MANAGER"]; ok {
		t.Fatalf("did not expect BUILD_PYTHON_PACKAGE_MANAGER to be converted for slug builds")
	}
}

func TestExpandBuildEnvsForSlugBuildDoesNotOverrideExistingLegacyAliases(t *testing.T) {
	envs := map[string]string{
		"BUILD_PROCFILE": "web: gunicorn demo.wsgi:application --bind 0.0.0.0:$PORT",
		"PROCFILE":       "web: python app.py",
	}

	got := expandBuildEnvsForSlugBuild(envs)

	if got["PROCFILE"] != "web: python app.py" {
		t.Fatalf("expected explicit PROCFILE to win, got %q", got["PROCFILE"])
	}
}

func TestExpandBuildEnvsForSlugBuildBackfillsBlankLegacyAliases(t *testing.T) {
	envs := map[string]string{
		"BUILD_GOPROXY":                 "https://goproxy.cn",
		"BUILD_GOPRIVATE":               "github.com/acme/*",
		"BUILD_GO_INSTALL_PACKAGE_SPEC": "./cmd/demo",
		"GOPROXY":                       "",
		"GOPRIVATE":                     "",
		"GO_INSTALL_PACKAGE_SPEC":       "",
	}

	got := expandBuildEnvsForSlugBuild(envs)

	if got["GOPROXY"] != envs["BUILD_GOPROXY"] {
		t.Fatalf("expected blank GOPROXY alias to be backfilled, got %q", got["GOPROXY"])
	}
	if got["GOPRIVATE"] != envs["BUILD_GOPRIVATE"] {
		t.Fatalf("expected blank GOPRIVATE alias to be backfilled, got %q", got["GOPRIVATE"])
	}
	if got["GO_INSTALL_PACKAGE_SPEC"] != envs["BUILD_GO_INSTALL_PACKAGE_SPEC"] {
		t.Fatalf("expected blank GO_INSTALL_PACKAGE_SPEC alias to be backfilled, got %q", got["GO_INSTALL_PACKAGE_SPEC"])
	}
}

func TestExpandBuildEnvsForSlugBuildAddsNodeCompatibilityAliases(t *testing.T) {
	envs := map[string]string{
		"BUILD_PACKAGE_TOOL": "pnpm",
		"BUILD_OUTPUT_DIR":   "build",
		"BUILD_BUILD_CMD":    "pnpm run build",
	}

	got := expandBuildEnvsForSlugBuild(envs)

	if got["PACKAGE_TOOL"] != "pnpm" {
		t.Fatalf("expected PACKAGE_TOOL alias to be synthesized, got %q", got["PACKAGE_TOOL"])
	}
	if got["DIST_DIR"] != "build" {
		t.Fatalf("expected DIST_DIR alias to be synthesized from BUILD_OUTPUT_DIR, got %q", got["DIST_DIR"])
	}
	if got["NODE_BUILD_CMD"] != "pnpm run build" {
		t.Fatalf("expected NODE_BUILD_CMD alias to be synthesized from BUILD_BUILD_CMD, got %q", got["NODE_BUILD_CMD"])
	}
}

func TestExpandBuildEnvsForSlugBuildPrefersExplicitNodeCompatAliases(t *testing.T) {
	envs := map[string]string{
		"BUILD_DIST_DIR":      "public",
		"BUILD_OUTPUT_DIR":    "build",
		"BUILD_NODE_BUILD_CMD": "npm run build",
		"BUILD_BUILD_CMD":     "pnpm run build",
	}

	got := expandBuildEnvsForSlugBuild(envs)

	if got["DIST_DIR"] != "public" {
		t.Fatalf("expected BUILD_DIST_DIR to win for DIST_DIR, got %q", got["DIST_DIR"])
	}
	if got["NODE_BUILD_CMD"] != "npm run build" {
		t.Fatalf("expected BUILD_NODE_BUILD_CMD to win for NODE_BUILD_CMD, got %q", got["NODE_BUILD_CMD"])
	}
}