| // Copyright 2021 Google Inc. All rights reserved. |
| // |
| // 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 android_sdk |
| |
| import ( |
| "fmt" |
| "runtime" |
| "sort" |
| "testing" |
| |
| "android/soong/android" |
| "android/soong/cc" |
| |
| "github.com/google/blueprint/pathtools" |
| ) |
| |
| var fixture = android.GroupFixturePreparers( |
| android.PrepareForIntegrationTestWithAndroid, |
| cc.PrepareForIntegrationTestWithCc, |
| android.FixtureRegisterWithContext(registerBuildComponents), |
| ) |
| |
| func TestSdkRepoHostDeps(t *testing.T) { |
| if runtime.GOOS != "linux" { |
| t.Skipf("Skipping sdk_repo_host testing that is only supported on linux not %s", runtime.GOOS) |
| } |
| |
| result := fixture.RunTestWithBp(t, ` |
| android_sdk_repo_host { |
| name: "platform-tools", |
| } |
| `) |
| |
| // produces "sdk-repo-{OS}-platform-tools.zip" |
| result.ModuleForTests("platform-tools", "linux_glibc_common").Output("sdk-repo-linux-platform-tools.zip") |
| } |
| |
| func TestRemapPackageSpecs(t *testing.T) { |
| testcases := []struct { |
| name string |
| input []string |
| remaps []remapProperties |
| output []string |
| err string |
| }{ |
| { |
| name: "basic remap", |
| input: []string{"a", "c"}, |
| remaps: []remapProperties{ |
| {From: "a", To: "b"}, |
| }, |
| output: []string{"b", "c"}, |
| }, |
| { |
| name: "non-matching remap", |
| input: []string{"a"}, |
| remaps: []remapProperties{ |
| {From: "b", To: "c"}, |
| }, |
| output: []string{"a"}, |
| }, |
| { |
| name: "glob", |
| input: []string{"bin/d", "liba.so", "libb.so", "lib/c.so"}, |
| remaps: []remapProperties{ |
| {From: "lib*.so", To: "lib/"}, |
| }, |
| output: []string{"bin/d", "lib/c.so", "lib/liba.so", "lib/libb.so"}, |
| }, |
| { |
| name: "bad glob", |
| input: []string{"a"}, |
| remaps: []remapProperties{ |
| {From: "**", To: "./"}, |
| }, |
| err: fmt.Sprintf("Error parsing \"**\": %v", pathtools.GlobLastRecursiveErr.Error()), |
| }, |
| { |
| name: "globbed dirs", |
| input: []string{"a/b/c"}, |
| remaps: []remapProperties{ |
| {From: "a/*/c", To: "./"}, |
| }, |
| output: []string{"b/c"}, |
| }, |
| } |
| |
| for _, test := range testcases { |
| t.Run(test.name, func(t *testing.T) { |
| specs := map[string]android.PackagingSpec{} |
| for _, input := range test.input { |
| spec := android.PackagingSpec{} |
| spec.SetRelPathInPackage(input) |
| specs[input] = spec |
| } |
| |
| err := remapPackageSpecs(specs, test.remaps) |
| |
| if test.err != "" { |
| android.AssertErrorMessageEquals(t, "", test.err, err) |
| } else { |
| outputs := []string{} |
| for path, spec := range specs { |
| android.AssertStringEquals(t, "path does not match rel path", path, spec.RelPathInPackage()) |
| outputs = append(outputs, path) |
| } |
| sort.Strings(outputs) |
| android.AssertArrayString(t, "outputs mismatch", test.output, outputs) |
| } |
| }) |
| } |
| } |