Convert test that disallows non existent paths to use fixtures

This change needed to add some additional files to the registered
files for PrepareForTestWithJavaDefaultModules because otherwise they
would fail when "TestAllowNonExistentPaths = false". Those files were
being added by the TestJavaLintRequiresCustomLintFileToExist (albeit in
some cases in different locations to that required by the default
modules but as the files are needed by the modules defined in
PrepareForTestWithJavaDefaultModules they should be defined in it.

A couple of other places also provided some files so moving them into
PrepareForTestWithJavaDefaultModules caused some conflicts which needed
to be resolved.

Bug: 183184375
Test: m nothing
Change-Id: I76ce9f1673c1c1c4000635b76b8377d582224bf1
This commit is contained in:
Paul Duffin 2021-03-20 14:19:46 +00:00
parent 958408d921
commit 76e5c8a37f
5 changed files with 53 additions and 35 deletions

View File

@ -117,6 +117,11 @@ var PrepareForTestWithAllowMissingDependencies = GroupFixturePreparers(
}),
)
// Prepares a test that disallows non-existent paths.
var PrepareForTestDisallowNonExistentPaths = FixtureModifyConfig(func(config Config) {
config.TestAllowNonExistentPaths = false
})
func NewTestArchContext(config Config) *TestContext {
ctx := NewTestContext(config)
ctx.preDeps = append(ctx.preDeps, registerArchMutator)

View File

@ -141,13 +141,12 @@ var apexFixtureFactory = android.NewFixtureFactory(
}
`),
android.FixtureMergeMockFs(android.MockFS{
"a.java": nil,
"PrebuiltAppFoo.apk": nil,
"PrebuiltAppFooPriv.apk": nil,
"build/make/target/product/security": nil,
"apex_manifest.json": nil,
"AndroidManifest.xml": nil,
"system/sepolicy/apex/myapex-file_contexts": nil,
"a.java": nil,
"PrebuiltAppFoo.apk": nil,
"PrebuiltAppFooPriv.apk": nil,
"apex_manifest.json": nil,
"AndroidManifest.xml": nil,
"system/sepolicy/apex/myapex-file_contexts": nil,
"system/sepolicy/apex/myapex.updatable-file_contexts": nil,
"system/sepolicy/apex/myapex2-file_contexts": nil,
"system/sepolicy/apex/otherapex-file_contexts": nil,

View File

@ -133,6 +133,15 @@ func defaultModuleToPath(name string) string {
}
}
// Test that the PrepareForTestWithJavaDefaultModules provides all the files that it uses by
// running it in a fixture that requires all source files to exist.
func TestPrepareForTestWithJavaDefaultModules(t *testing.T) {
android.GroupFixturePreparers(
PrepareForTestWithJavaDefaultModules,
android.PrepareForTestDisallowNonExistentPaths,
).RunTest(t)
}
func TestJavaLinkType(t *testing.T) {
testJava(t, `
java_library {
@ -1220,33 +1229,22 @@ func TestJavaLintWithoutBaseline(t *testing.T) {
}
func TestJavaLintRequiresCustomLintFileToExist(t *testing.T) {
config := TestConfig(t.TempDir(),
nil,
`
java_library {
name: "foo",
srcs: [
],
min_sdk_version: "29",
sdk_version: "system_current",
lint: {
baseline_filename: "mybaseline.xml",
},
}
`, map[string][]byte{
"build/soong/java/lint_defaults.txt": nil,
"prebuilts/cmdline-tools/tools/bin/lint": nil,
"prebuilts/cmdline-tools/tools/lib/lint-classpath.jar": nil,
"framework/aidl": nil,
"a.java": nil,
"AndroidManifest.xml": nil,
"build/make/target/product/security": nil,
})
config.TestAllowNonExistentPaths = false
testJavaErrorWithConfig(t,
"source path \"mybaseline.xml\" does not exist",
config,
)
android.GroupFixturePreparers(
PrepareForTestWithJavaDefaultModules,
android.PrepareForTestDisallowNonExistentPaths,
).ExtendWithErrorHandler(android.FixtureExpectsAllErrorsToMatchAPattern([]string{`source path "mybaseline.xml" does not exist`})).
RunTestWithBp(t, `
java_library {
name: "foo",
srcs: [
],
min_sdk_version: "29",
sdk_version: "system_current",
lint: {
baseline_filename: "mybaseline.xml",
},
}
`)
}
func TestJavaLintUsesCorrectBpConfig(t *testing.T) {

View File

@ -45,12 +45,29 @@ var PrepareForTestWithJavaBuildComponents = android.GroupFixturePreparers(
// Make java build components available to the test.
android.FixtureRegisterWithContext(registerRequiredBuildComponentsForTest),
android.FixtureRegisterWithContext(registerJavaPluginBuildComponents),
// Additional files needed in tests that disallow non-existent source files.
// This includes files that are needed by all, or at least most, instances of a java module type.
android.MockFS{
// Needed for linter used by java_library.
"build/soong/java/lint_defaults.txt": nil,
// Needed for apps that do not provide their own.
"build/make/target/product/security": nil,
}.AddToFixture(),
)
// Test fixture preparer that will define default java modules, e.g. standard prebuilt modules.
var PrepareForTestWithJavaDefaultModules = android.GroupFixturePreparers(
// Make sure that all the module types used in the defaults are registered.
PrepareForTestWithJavaBuildComponents,
// Additional files needed when test disallows non-existent source.
android.MockFS{
// Needed for framework-res
defaultJavaDir + "/AndroidManifest.xml": nil,
// Needed for framework
defaultJavaDir + "/framework/aidl": nil,
// Needed for various deps defined in GatherRequiredDepsForTest()
defaultJavaDir + "/a.java": nil,
}.AddToFixture(),
// The java default module definitions.
android.FixtureAddTextFile(defaultJavaDir+"/Android.bp", gatherRequiredDepsForTest()),
// Add dexpreopt compat libs (android.test.base, etc.) and a fake dex2oatd module.

View File

@ -44,7 +44,6 @@ var prepareForSdkTestWithApex = android.GroupFixturePreparers(
`),
android.FixtureMergeMockFs(map[string][]byte{
"build/make/target/product/security": nil,
"apex_manifest.json": nil,
"system/sepolicy/apex/myapex-file_contexts": nil,
"system/sepolicy/apex/myapex2-file_contexts": nil,