| // 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 cc |
| |
| import ( |
| _ "fmt" |
| _ "sort" |
| |
| "testing" |
| |
| "android/soong/android" |
| "android/soong/multitree" |
| ) |
| |
| func TestCcApiStubLibraryOutputFiles(t *testing.T) { |
| bp := ` |
| cc_api_stub_library { |
| name: "foo", |
| symbol_file: "foo.map.txt", |
| first_version: "29", |
| } |
| ` |
| result := prepareForCcTest.RunTestWithBp(t, bp) |
| outputs := result.ModuleForTests("foo", "android_arm64_armv8-a_shared").AllOutputs() |
| expected_file_suffixes := []string{".c", "stub.map", ".o", ".so"} |
| for _, expected_file_suffix := range expected_file_suffixes { |
| android.AssertBoolEquals(t, expected_file_suffix+" file not found in output", true, android.SuffixInList(outputs, expected_file_suffix)) |
| } |
| } |
| |
| func TestCcApiStubLibraryVariants(t *testing.T) { |
| bp := ` |
| cc_api_stub_library { |
| name: "foo", |
| symbol_file: "foo.map.txt", |
| first_version: "29", |
| } |
| ` |
| result := prepareForCcTest.RunTestWithBp(t, bp) |
| variants := result.ModuleVariantsForTests("foo") |
| expected_variants := []string{"29", "30", "S", "Tiramisu"} //TODO: make this test deterministic by using fixtures |
| for _, expected_variant := range expected_variants { |
| android.AssertBoolEquals(t, expected_variant+" variant not found in foo", true, android.SubstringInList(variants, expected_variant)) |
| } |
| } |
| |
| func TestCcLibraryUsesCcApiStubLibrary(t *testing.T) { |
| bp := ` |
| cc_api_stub_library { |
| name: "foo", |
| symbol_file: "foo.map.txt", |
| first_version: "29", |
| } |
| cc_library { |
| name: "foo_user", |
| shared_libs: [ |
| "foo#29", |
| ], |
| } |
| |
| ` |
| prepareForCcTest.RunTestWithBp(t, bp) |
| } |
| |
| func TestApiSurfaceOutputs(t *testing.T) { |
| bp := ` |
| api_surface { |
| name: "mysdk", |
| contributions: [ |
| "foo", |
| ], |
| } |
| |
| cc_api_contribution { |
| name: "foo", |
| symbol_file: "foo.map.txt", |
| first_version: "29", |
| } |
| ` |
| result := android.GroupFixturePreparers( |
| prepareForCcTest, |
| multitree.PrepareForTestWithApiSurface, |
| ).RunTestWithBp(t, bp) |
| mysdk := result.ModuleForTests("mysdk", "") |
| |
| actual_surface_inputs := mysdk.Rule("phony").BuildParams.Inputs.Strings() |
| expected_file_suffixes := []string{"mysdk/foo/foo.map.txt"} |
| for _, expected_file_suffix := range expected_file_suffixes { |
| android.AssertBoolEquals(t, expected_file_suffix+" file not found in input", true, android.SuffixInList(actual_surface_inputs, expected_file_suffix)) |
| } |
| |
| // check args/inputs to rule |
| /*api_surface_gen_rule_args := result.ModuleForTests("mysdk", "").Rule("genApiSurfaceBuildFiles").Args |
| android.AssertStringEquals(t, "name", "foo.mysdk", api_surface_gen_rule_args["name"]) |
| android.AssertStringEquals(t, "symbol_file", "foo.map.txt", api_surface_gen_rule_args["symbol_file"])*/ |
| } |