# Copyright (C) 2022 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. load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") load("//build/bazel/rules:linker_config.bzl", "linker_config") load("//build/bazel/rules:prebuilt_file.bzl", "PrebuiltFileInfo") SRC = "foo.json" OUT_EXP = "foo.pb" def _test_linker_config_actions_impl(ctx): env = analysistest.begin(ctx) actions = analysistest.target_actions(env) asserts.equals(env, 1, len(actions), "expected 1 action got {}".format(actions)) in_file = actions[0].inputs.to_list()[0] out_files = actions[0].outputs.to_list() asserts.equals(env, 1, len(out_files), "expected 1 out file got {}".format(out_files)) asserts.equals( env, SRC, in_file.basename, "expected source file {} got {}".format(SRC, in_file.basename), ) asserts.equals( env, OUT_EXP, out_files[0].basename, "expected out file {} got {}".format(OUT_EXP, out_files[0].basename), ) # gets build target we are testing for target_under_test = analysistest.target_under_test(env) prebuilt_file_info = target_under_test[PrebuiltFileInfo] asserts.equals( env, "linker.config.pb", prebuilt_file_info.filename, "expected PrebuiltFileInfo filename to be {} but got {}".format("linkerconfig.pb", prebuilt_file_info.filename), ) asserts.equals( env, "etc", prebuilt_file_info.dir, "expected PrebuiltFileInfo dir to be {} but got {}".format("etc", prebuilt_file_info.dir), ) asserts.equals( env, out_files[0], prebuilt_file_info.src, "expected PrebuiltFileInfo src to be {} but got {}".format(out_files[0], prebuilt_file_info.src), ) return analysistest.end(env) linker_config_actions_test = analysistest.make(_test_linker_config_actions_impl) def _test_linker_config_actions(): name = "linker_config_actions" test_name = name + "_test" linker_config( name = name, src = SRC, tags = ["manual"], ) linker_config_actions_test( name = test_name, target_under_test = name, ) return test_name def _test_linker_config_commands_impl(ctx): env = analysistest.begin(ctx) actions = analysistest.target_actions(env) in_files = actions[0].inputs.to_list() asserts.true(env, len(in_files) > 0, "expected at least 1 input file got {}".format(in_files)) args = actions[0].argv asserts.equals(env, 6, len(args), "expected 4 args got {}".format(args)) asserts.equals(env, "proto", args[1]) asserts.equals(env, "-s", args[2]) asserts.equals(env, "-o", args[4]) return analysistest.end(env) linker_config_commands_test = analysistest.make(_test_linker_config_commands_impl) def _test_linker_config_commands(): name = "linker_config_commands" test_name = name + "_test" linker_config( name = name, src = SRC, tags = ["manual"], ) linker_config_commands_test( name = test_name, target_under_test = name, ) return test_name def linker_config_test_suite(name): native.test_suite( name = name, tests = [ _test_linker_config_actions(), _test_linker_config_commands(), ], )