diff options
author | 2024-09-30 14:05:50 -0700 | |
---|---|---|
committer | 2024-10-02 11:48:43 -0700 | |
commit | cceefc885db4bf7c6e03950abc2c947d195fcd68 (patch) | |
tree | dc794713557428d0104299463dde5e15a38cb271 | |
parent | 8bce3818334988d4ac7da979c7a8a529613c455b (diff) |
Add test for sabi propagation to static libraries
Bug: 367784740
Test: TestSabi
Flag: EXEMPT test only
Change-Id: I7ffa177cb826889e956d0d37d4eb7267f259dd35
-rw-r--r-- | cc/Android.bp | 1 | ||||
-rw-r--r-- | cc/sabi_test.go | 66 |
2 files changed, 67 insertions, 0 deletions
diff --git a/cc/Android.bp b/cc/Android.bp index 3688c8a9a..88a793cd8 100644 --- a/cc/Android.bp +++ b/cc/Android.bp @@ -102,6 +102,7 @@ bootstrap_go_package { "orderfile_test.go", "prebuilt_test.go", "proto_test.go", + "sabi_test.go", "sanitize_test.go", "sdk_test.go", "test_data_test.go", diff --git a/cc/sabi_test.go b/cc/sabi_test.go new file mode 100644 index 000000000..849fc36e8 --- /dev/null +++ b/cc/sabi_test.go @@ -0,0 +1,66 @@ +// Copyright 2024 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 ( + "android/soong/android" + "testing" +) + +func TestSabi(t *testing.T) { + bp := ` + cc_library { + name: "libsabi", + srcs: ["sabi.cpp"], + static_libs: ["libdirect"], + header_abi_checker: { + enabled: true, + symbol_file: "libsabi.map.txt", + ref_dump_dirs: ["abi-dumps"], + }, + } + + cc_library { + name: "libdirect", + srcs: ["direct.cpp"], + whole_static_libs: ["libtransitive"], + } + + cc_library { + name: "libtransitive", + srcs: ["transitive.cpp"], + } + ` + + result := android.GroupFixturePreparers( + PrepareForTestWithCcDefaultModules, + ).RunTestWithBp(t, bp) + + libsabiStatic := result.ModuleForTests("libsabi", "android_arm64_armv8-a_static") + sabiObjSDump := libsabiStatic.Output("obj/sabi.sdump") + + libDirect := result.ModuleForTests("libdirect", "android_arm64_armv8-a_static") + directObjSDump := libDirect.Output("obj/direct.sdump") + + libTransitive := result.ModuleForTests("libtransitive", "android_arm64_armv8-a_static") + transitiveObjSDump := libTransitive.Output("obj/transitive.sdump") + + libsabiShared := result.ModuleForTests("libsabi", "android_arm64_armv8-a_shared") + sabiLink := libsabiShared.Rule("sAbiLink") + + android.AssertStringListContains(t, "sabi link inputs", sabiLink.Inputs.Strings(), sabiObjSDump.Output.String()) + android.AssertStringListContains(t, "sabi link inputs", sabiLink.Inputs.Strings(), directObjSDump.Output.String()) + android.AssertStringListContains(t, "sabi link inputs", sabiLink.Inputs.Strings(), transitiveObjSDump.Output.String()) +} |