Let tests override environment

Pass an environment to TestConfig that will be used for
all Config.Getenv calls.

Test: none
Change-Id: I683cd9c9e0db61c9bfd2adb27fca78f558f225c4
diff --git a/android/config.go b/android/config.go
index a70fa76..9061652 100644
--- a/android/config.go
+++ b/android/config.go
@@ -78,6 +78,7 @@
 	srcDir   string // the path of the root source directory
 	buildDir string // the path of the build output directory
 
+	env       map[string]string
 	envLock   sync.Mutex
 	envDeps   map[string]string
 	envFrozen bool
@@ -168,15 +169,15 @@
 }
 
 // TestConfig returns a Config object suitable for using for tests
-func TestConfig(buildDir string) Config {
+func TestConfig(buildDir string, env map[string]string) Config {
 	config := &config{
 		ProductVariables: productVariables{
 			DeviceName: stringPtr("test_device"),
 		},
 
-		buildDir:          buildDir,
-		captureBuild:      true,
-		ignoreEnvironment: true,
+		buildDir:     buildDir,
+		captureBuild: true,
+		env:          env,
 	}
 	config.deviceConfig = &deviceConfig{
 		config: config,
@@ -186,8 +187,8 @@
 }
 
 // TestConfig returns a Config object suitable for using for tests that need to run the arch mutator
-func TestArchConfig(buildDir string) Config {
-	testConfig := TestConfig(buildDir)
+func TestArchConfig(buildDir string, env map[string]string) Config {
+	testConfig := TestConfig(buildDir, env)
 	config := testConfig.config
 
 	config.Targets = map[OsClass][]Target{
@@ -212,6 +213,8 @@
 		ConfigFileName:           filepath.Join(buildDir, configFileName),
 		ProductVariablesFileName: filepath.Join(buildDir, productVariablesFileName),
 
+		env: originalEnv,
+
 		srcDir:   srcDir,
 		buildDir: buildDir,
 	}
@@ -335,9 +338,7 @@
 		if c.envFrozen {
 			panic("Cannot access new environment variables after envdeps are frozen")
 		}
-		if !c.ignoreEnvironment {
-			val, _ = originalEnv[key]
-		}
+		val, _ = c.env[key]
 		c.envDeps[key] = val
 	}
 	return val
diff --git a/android/paths_test.go b/android/paths_test.go
index 3986b71..248f4d4 100644
--- a/android/paths_test.go
+++ b/android/paths_test.go
@@ -209,7 +209,7 @@
 }
 
 func TestPathForModuleInstall(t *testing.T) {
-	testConfig := TestConfig("")
+	testConfig := TestConfig("", nil)
 
 	hostTarget := Target{Os: Linux}
 	deviceTarget := Target{Os: Android}
diff --git a/android/prebuilt_test.go b/android/prebuilt_test.go
index 9a1de9c..93f5805 100644
--- a/android/prebuilt_test.go
+++ b/android/prebuilt_test.go
@@ -118,7 +118,7 @@
 	}
 	defer os.RemoveAll(buildDir)
 
-	config := TestConfig(buildDir)
+	config := TestConfig(buildDir, nil)
 
 	for _, test := range prebuiltsTests {
 		t.Run(test.name, func(t *testing.T) {