|
@@ -16,7 +16,6 @@ package cc
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
- "io/ioutil"
|
|
|
"os"
|
|
|
"path/filepath"
|
|
|
"reflect"
|
|
@@ -27,36 +26,10 @@ import (
|
|
|
"android/soong/android"
|
|
|
)
|
|
|
|
|
|
-var buildDir string
|
|
|
-
|
|
|
-func setUp() {
|
|
|
- var err error
|
|
|
- buildDir, err = ioutil.TempDir("", "soong_cc_test")
|
|
|
- if err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func tearDown() {
|
|
|
- os.RemoveAll(buildDir)
|
|
|
-}
|
|
|
-
|
|
|
func TestMain(m *testing.M) {
|
|
|
- run := func() int {
|
|
|
- setUp()
|
|
|
- defer tearDown()
|
|
|
-
|
|
|
- return m.Run()
|
|
|
- }
|
|
|
-
|
|
|
- os.Exit(run())
|
|
|
+ os.Exit(m.Run())
|
|
|
}
|
|
|
|
|
|
-var ccFixtureFactory = android.NewFixtureFactory(
|
|
|
- &buildDir,
|
|
|
- prepareForCcTest,
|
|
|
-)
|
|
|
-
|
|
|
var prepareForCcTest = android.GroupFixturePreparers(
|
|
|
PrepareForTestWithCcIncludeVndk,
|
|
|
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
|
@@ -66,62 +39,62 @@ var prepareForCcTest = android.GroupFixturePreparers(
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
-// testCcWithConfig runs tests using the ccFixtureFactory
|
|
|
+// testCcWithConfig runs tests using the prepareForCcTest
|
|
|
//
|
|
|
// See testCc for an explanation as to how to stop using this deprecated method.
|
|
|
//
|
|
|
// deprecated
|
|
|
func testCcWithConfig(t *testing.T, config android.Config) *android.TestContext {
|
|
|
t.Helper()
|
|
|
- result := ccFixtureFactory.RunTestWithConfig(t, config)
|
|
|
+ result := prepareForCcTest.RunTestWithConfig(t, config)
|
|
|
return result.TestContext
|
|
|
}
|
|
|
|
|
|
-// testCc runs tests using the ccFixtureFactory
|
|
|
+// testCc runs tests using the prepareForCcTest
|
|
|
//
|
|
|
-// Do not add any new usages of this, instead use the ccFixtureFactory directly as it makes it much
|
|
|
+// Do not add any new usages of this, instead use the prepareForCcTest directly as it makes it much
|
|
|
// easier to customize the test behavior.
|
|
|
//
|
|
|
// If it is necessary to customize the behavior of an existing test that uses this then please first
|
|
|
-// convert the test to using ccFixtureFactory first and then in a following change add the
|
|
|
+// convert the test to using prepareForCcTest first and then in a following change add the
|
|
|
// appropriate fixture preparers. Keeping the conversion change separate makes it easy to verify
|
|
|
// that it did not change the test behavior unexpectedly.
|
|
|
//
|
|
|
// deprecated
|
|
|
func testCc(t *testing.T, bp string) *android.TestContext {
|
|
|
t.Helper()
|
|
|
- result := ccFixtureFactory.RunTestWithBp(t, bp)
|
|
|
+ result := prepareForCcTest.RunTestWithBp(t, bp)
|
|
|
return result.TestContext
|
|
|
}
|
|
|
|
|
|
-// testCcNoVndk runs tests using the ccFixtureFactory
|
|
|
+// testCcNoVndk runs tests using the prepareForCcTest
|
|
|
//
|
|
|
// See testCc for an explanation as to how to stop using this deprecated method.
|
|
|
//
|
|
|
// deprecated
|
|
|
func testCcNoVndk(t *testing.T, bp string) *android.TestContext {
|
|
|
t.Helper()
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
|
|
|
return testCcWithConfig(t, config)
|
|
|
}
|
|
|
|
|
|
-// testCcNoProductVndk runs tests using the ccFixtureFactory
|
|
|
+// testCcNoProductVndk runs tests using the prepareForCcTest
|
|
|
//
|
|
|
// See testCc for an explanation as to how to stop using this deprecated method.
|
|
|
//
|
|
|
// deprecated
|
|
|
func testCcNoProductVndk(t *testing.T, bp string) *android.TestContext {
|
|
|
t.Helper()
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
|
|
|
return testCcWithConfig(t, config)
|
|
|
}
|
|
|
|
|
|
-// testCcErrorWithConfig runs tests using the ccFixtureFactory
|
|
|
+// testCcErrorWithConfig runs tests using the prepareForCcTest
|
|
|
//
|
|
|
// See testCc for an explanation as to how to stop using this deprecated method.
|
|
|
//
|
|
@@ -129,33 +102,33 @@ func testCcNoProductVndk(t *testing.T, bp string) *android.TestContext {
|
|
|
func testCcErrorWithConfig(t *testing.T, pattern string, config android.Config) {
|
|
|
t.Helper()
|
|
|
|
|
|
- ccFixtureFactory.Extend().
|
|
|
+ prepareForCcTest.
|
|
|
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(pattern)).
|
|
|
RunTestWithConfig(t, config)
|
|
|
}
|
|
|
|
|
|
-// testCcError runs tests using the ccFixtureFactory
|
|
|
+// testCcError runs tests using the prepareForCcTest
|
|
|
//
|
|
|
// See testCc for an explanation as to how to stop using this deprecated method.
|
|
|
//
|
|
|
// deprecated
|
|
|
func testCcError(t *testing.T, pattern string, bp string) {
|
|
|
t.Helper()
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
testCcErrorWithConfig(t, pattern, config)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// testCcErrorProductVndk runs tests using the ccFixtureFactory
|
|
|
+// testCcErrorProductVndk runs tests using the prepareForCcTest
|
|
|
//
|
|
|
// See testCc for an explanation as to how to stop using this deprecated method.
|
|
|
//
|
|
|
// deprecated
|
|
|
func testCcErrorProductVndk(t *testing.T, pattern string, bp string) {
|
|
|
t.Helper()
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.ProductVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
@@ -193,7 +166,10 @@ func TestFuchsiaDeps(t *testing.T) {
|
|
|
},
|
|
|
}`
|
|
|
|
|
|
- result := ccFixtureFactory.Extend(PrepareForTestOnFuchsia).RunTestWithBp(t, bp)
|
|
|
+ result := android.GroupFixturePreparers(
|
|
|
+ prepareForCcTest,
|
|
|
+ PrepareForTestOnFuchsia,
|
|
|
+ ).RunTestWithBp(t, bp)
|
|
|
|
|
|
rt := false
|
|
|
fb := false
|
|
@@ -229,7 +205,10 @@ func TestFuchsiaTargetDecl(t *testing.T) {
|
|
|
},
|
|
|
}`
|
|
|
|
|
|
- result := ccFixtureFactory.Extend(PrepareForTestOnFuchsia).RunTestWithBp(t, bp)
|
|
|
+ result := android.GroupFixturePreparers(
|
|
|
+ prepareForCcTest,
|
|
|
+ PrepareForTestOnFuchsia,
|
|
|
+ ).RunTestWithBp(t, bp)
|
|
|
ld := result.ModuleForTests("libTest", "fuchsia_arm64_shared").Rule("ld")
|
|
|
var objs []string
|
|
|
for _, o := range ld.Inputs {
|
|
@@ -474,7 +453,7 @@ func TestVndk(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.ProductVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
@@ -495,7 +474,7 @@ func TestVndk(t *testing.T) {
|
|
|
|
|
|
// Check VNDK snapshot output.
|
|
|
snapshotDir := "vndk-snapshot"
|
|
|
- snapshotVariantPath := filepath.Join(buildDir, snapshotDir, "arm64")
|
|
|
+ snapshotVariantPath := filepath.Join("out/soong", snapshotDir, "arm64")
|
|
|
|
|
|
vndkLibPath := filepath.Join(snapshotVariantPath, fmt.Sprintf("arch-%s-%s",
|
|
|
"arm64", "armv8-a"))
|
|
@@ -596,7 +575,7 @@ func TestVndkLibrariesTxtAndroidMk(t *testing.T) {
|
|
|
name: "llndk.libraries.txt",
|
|
|
insert_vndk_version: true,
|
|
|
}`
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
ctx := testCcWithConfig(t, config)
|
|
@@ -646,7 +625,7 @@ func TestVndkUsingCoreVariant(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
config.TestProductVariables.VndkUseCoreVariant = BoolPtr(true)
|
|
@@ -673,7 +652,7 @@ func TestDataLibs(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
config.TestProductVariables.VndkUseCoreVariant = BoolPtr(true)
|
|
@@ -724,7 +703,7 @@ func TestDataLibsRelativeInstallPath(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
config.TestProductVariables.VndkUseCoreVariant = BoolPtr(true)
|
|
@@ -1349,7 +1328,7 @@ func TestVndkExt(t *testing.T) {
|
|
|
nocrt: true,
|
|
|
}
|
|
|
`
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.ProductVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
@@ -1794,7 +1773,7 @@ func TestProductVndkExtDependency(t *testing.T) {
|
|
|
nocrt: true,
|
|
|
}
|
|
|
`
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.ProductVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
@@ -2121,7 +2100,7 @@ func TestEnforceProductVndkVersion(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- ctx := ccFixtureFactory.RunTestWithBp(t, bp).TestContext
|
|
|
+ ctx := prepareForCcTest.RunTestWithBp(t, bp).TestContext
|
|
|
|
|
|
checkVndkModule(t, ctx, "libvndk", "", false, "", productVariant)
|
|
|
checkVndkModule(t, ctx, "libvndk_sp", "", true, "", productVariant)
|
|
@@ -2349,7 +2328,7 @@ func TestMakeLinkType(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
// native:vndk
|
|
@@ -3141,7 +3120,7 @@ func TestDataLibsPrebuiltSharedTestLibrary(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
|
|
|
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
|
|
|
config.TestProductVariables.VndkUseCoreVariant = BoolPtr(true)
|
|
@@ -3457,7 +3436,8 @@ func TestProductVariableDefaults(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- result := ccFixtureFactory.Extend(
|
|
|
+ result := android.GroupFixturePreparers(
|
|
|
+ prepareForCcTest,
|
|
|
android.PrepareForTestWithVariables,
|
|
|
|
|
|
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
|
@@ -3484,7 +3464,8 @@ func TestEmptyWholeStaticLibsAllowMissingDependencies(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- result := ccFixtureFactory.Extend(
|
|
|
+ result := android.GroupFixturePreparers(
|
|
|
+ prepareForCcTest,
|
|
|
android.PrepareForTestWithAllowMissingDependencies,
|
|
|
).RunTestWithBp(t, bp)
|
|
|
|
|
@@ -3536,7 +3517,7 @@ func TestInstallSharedLibs(t *testing.T) {
|
|
|
}
|
|
|
`
|
|
|
|
|
|
- config := TestConfig(buildDir, android.Android, nil, bp, nil)
|
|
|
+ config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
|
|
ctx := testCcWithConfig(t, config)
|
|
|
|
|
|
hostBin := ctx.ModuleForTests("bin", config.BuildOSTarget.String()).Description("install")
|
|
@@ -3827,7 +3808,10 @@ var prepareForTestWithMemtagHeap = android.GroupFixturePreparers(
|
|
|
func TestSanitizeMemtagHeap(t *testing.T) {
|
|
|
variant := "android_arm64_armv8-a"
|
|
|
|
|
|
- result := ccFixtureFactory.Extend(prepareForTestWithMemtagHeap).RunTest(t)
|
|
|
+ result := android.GroupFixturePreparers(
|
|
|
+ prepareForCcTest,
|
|
|
+ prepareForTestWithMemtagHeap,
|
|
|
+ ).RunTest(t)
|
|
|
ctx := result.TestContext
|
|
|
|
|
|
checkHasMemtagNote(t, ctx.ModuleForTests("default_test", variant), Sync)
|
|
@@ -3882,7 +3866,8 @@ func TestSanitizeMemtagHeap(t *testing.T) {
|
|
|
func TestSanitizeMemtagHeapWithSanitizeDevice(t *testing.T) {
|
|
|
variant := "android_arm64_armv8-a"
|
|
|
|
|
|
- result := ccFixtureFactory.Extend(
|
|
|
+ result := android.GroupFixturePreparers(
|
|
|
+ prepareForCcTest,
|
|
|
prepareForTestWithMemtagHeap,
|
|
|
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
|
|
variables.SanitizeDevice = []string{"memtag_heap"}
|
|
@@ -3942,7 +3927,8 @@ func TestSanitizeMemtagHeapWithSanitizeDevice(t *testing.T) {
|
|
|
func TestSanitizeMemtagHeapWithSanitizeDeviceDiag(t *testing.T) {
|
|
|
variant := "android_arm64_armv8-a"
|
|
|
|
|
|
- result := ccFixtureFactory.Extend(
|
|
|
+ result := android.GroupFixturePreparers(
|
|
|
+ prepareForCcTest,
|
|
|
prepareForTestWithMemtagHeap,
|
|
|
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
|
|
variables.SanitizeDevice = []string{"memtag_heap"}
|