| // Copyright (C) 2021 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package java |
| |
| import ( |
| "testing" |
| |
| "android/soong/android" |
| ) |
| |
| var prepareForTestWithSystemServerClasspath = android.GroupFixturePreparers( |
| PrepareForTestWithJavaDefaultModules, |
| ) |
| |
| func TestPlatformSystemServerClasspathVariant(t *testing.T) { |
| result := android.GroupFixturePreparers( |
| prepareForTestWithSystemServerClasspath, |
| android.FixtureWithRootAndroidBp(` |
| platform_systemserverclasspath { |
| name: "platform-systemserverclasspath", |
| } |
| `), |
| ).RunTest(t) |
| |
| variants := result.ModuleVariantsForTests("platform-systemserverclasspath") |
| android.AssertIntEquals(t, "expect 1 variant", 1, len(variants)) |
| } |
| |
| func TestPlatformSystemServerClasspath_ClasspathFragmentPaths(t *testing.T) { |
| result := android.GroupFixturePreparers( |
| prepareForTestWithSystemServerClasspath, |
| android.FixtureWithRootAndroidBp(` |
| platform_systemserverclasspath { |
| name: "platform-systemserverclasspath", |
| } |
| `), |
| ).RunTest(t) |
| |
| p := result.Module("platform-systemserverclasspath", "android_common").(*platformSystemServerClasspathModule) |
| android.AssertStringEquals(t, "output filepath", "systemserverclasspath.pb", p.ClasspathFragmentBase.outputFilepath.Base()) |
| android.AssertPathRelativeToTopEquals(t, "install filepath", "out/soong/target/product/test_device/system/etc/classpaths", p.ClasspathFragmentBase.installDirPath) |
| } |
| |
| func TestPlatformSystemServerClasspathModule_AndroidMkEntries(t *testing.T) { |
| preparer := android.GroupFixturePreparers( |
| prepareForTestWithSystemServerClasspath, |
| android.FixtureWithRootAndroidBp(` |
| platform_systemserverclasspath { |
| name: "platform-systemserverclasspath", |
| } |
| `), |
| ) |
| |
| t.Run("AndroidMkEntries", func(t *testing.T) { |
| result := preparer.RunTest(t) |
| |
| p := result.Module("platform-systemserverclasspath", "android_common").(*platformSystemServerClasspathModule) |
| |
| entries := android.AndroidMkEntriesForTest(t, result.TestContext, p) |
| android.AssertIntEquals(t, "AndroidMkEntries count", 1, len(entries)) |
| }) |
| |
| t.Run("classpath-fragment-entry", func(t *testing.T) { |
| result := preparer.RunTest(t) |
| |
| want := map[string][]string{ |
| "LOCAL_MODULE": {"platform-systemserverclasspath"}, |
| "LOCAL_MODULE_CLASS": {"ETC"}, |
| "LOCAL_INSTALLED_MODULE_STEM": {"systemserverclasspath.pb"}, |
| // Output and Install paths are tested separately in TestPlatformSystemServerClasspath_ClasspathFragmentPaths |
| } |
| |
| p := result.Module("platform-systemserverclasspath", "android_common").(*platformSystemServerClasspathModule) |
| |
| entries := android.AndroidMkEntriesForTest(t, result.TestContext, p) |
| got := entries[0] |
| for k, expectedValue := range want { |
| if value, ok := got.EntryMap[k]; ok { |
| android.AssertDeepEquals(t, k, expectedValue, value) |
| } else { |
| t.Errorf("No %s defined, saw %q", k, got.EntryMap) |
| } |
| } |
| }) |
| } |
| |
| func TestSystemServerClasspathFragmentWithoutContents(t *testing.T) { |
| prepareForTestWithSystemServerClasspath. |
| ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern( |
| `\QEither contents or standalone_contents needs to be non-empty\E`)). |
| RunTestWithBp(t, ` |
| systemserverclasspath_fragment { |
| name: "systemserverclasspath-fragment", |
| } |
| `) |
| } |