1*7594170eSAndroid Build Coastguard Worker# Copyright (C) 2022 The Android Open Source Project 2*7594170eSAndroid Build Coastguard Worker# 3*7594170eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*7594170eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*7594170eSAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*7594170eSAndroid Build Coastguard Worker# 7*7594170eSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*7594170eSAndroid Build Coastguard Worker# 9*7594170eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*7594170eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*7594170eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*7594170eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*7594170eSAndroid Build Coastguard Worker# limitations under the License. 14*7594170eSAndroid Build Coastguard Worker 15*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") 16*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules:prebuilt_file.bzl", "PrebuiltFileInfo", "prebuilt_file") 17*7594170eSAndroid Build Coastguard Worker 18*7594170eSAndroid Build Coastguard Workerdef _prebuilt_file_with_filename_from_src_test_impl(ctx): 19*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 20*7594170eSAndroid Build Coastguard Worker target = analysistest.target_under_test(env) 21*7594170eSAndroid Build Coastguard Worker 22*7594170eSAndroid Build Coastguard Worker actual_prebuilt_file_info = target[PrebuiltFileInfo] 23*7594170eSAndroid Build Coastguard Worker 24*7594170eSAndroid Build Coastguard Worker # We can't stub a source file object for testing so we scope it out 25*7594170eSAndroid Build Coastguard Worker actual_prebuilt_file_info_without_src = PrebuiltFileInfo( 26*7594170eSAndroid Build Coastguard Worker dir = actual_prebuilt_file_info.dir, 27*7594170eSAndroid Build Coastguard Worker filename = actual_prebuilt_file_info.filename, 28*7594170eSAndroid Build Coastguard Worker installable = actual_prebuilt_file_info.installable, 29*7594170eSAndroid Build Coastguard Worker ) 30*7594170eSAndroid Build Coastguard Worker expected_prebuilt_file_info_without_src = PrebuiltFileInfo( 31*7594170eSAndroid Build Coastguard Worker dir = "etc/policy", 32*7594170eSAndroid Build Coastguard Worker filename = "file.policy", 33*7594170eSAndroid Build Coastguard Worker installable = True, 34*7594170eSAndroid Build Coastguard Worker ) 35*7594170eSAndroid Build Coastguard Worker 36*7594170eSAndroid Build Coastguard Worker # Check PrebuiltFileInfo provider, excluding src 37*7594170eSAndroid Build Coastguard Worker asserts.equals( 38*7594170eSAndroid Build Coastguard Worker env, 39*7594170eSAndroid Build Coastguard Worker actual_prebuilt_file_info_without_src, 40*7594170eSAndroid Build Coastguard Worker expected_prebuilt_file_info_without_src, 41*7594170eSAndroid Build Coastguard Worker "PrebuiltFileInfo needs to match with expected result", 42*7594170eSAndroid Build Coastguard Worker ) 43*7594170eSAndroid Build Coastguard Worker 44*7594170eSAndroid Build Coastguard Worker # Check PrebuiltFileInfo src separately 45*7594170eSAndroid Build Coastguard Worker asserts.equals( 46*7594170eSAndroid Build Coastguard Worker env, 47*7594170eSAndroid Build Coastguard Worker actual_prebuilt_file_info.src.path, 48*7594170eSAndroid Build Coastguard Worker target.label.package + "/dir/file.policy", 49*7594170eSAndroid Build Coastguard Worker "PrebuiltFileInfo src needs to match with what is given to prebuilt_file rule", 50*7594170eSAndroid Build Coastguard Worker ) 51*7594170eSAndroid Build Coastguard Worker 52*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 53*7594170eSAndroid Build Coastguard Worker 54*7594170eSAndroid Build Coastguard Workerprebuilt_file_with_filename_from_src_test = analysistest.make( 55*7594170eSAndroid Build Coastguard Worker _prebuilt_file_with_filename_from_src_test_impl, 56*7594170eSAndroid Build Coastguard Worker) 57*7594170eSAndroid Build Coastguard Worker 58*7594170eSAndroid Build Coastguard Workerdef _prebuilt_file_with_filename_from_src_test(): 59*7594170eSAndroid Build Coastguard Worker name = "prebuilt_file_with_filename_from_src" 60*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 61*7594170eSAndroid Build Coastguard Worker prebuilt_file( 62*7594170eSAndroid Build Coastguard Worker name = name, 63*7594170eSAndroid Build Coastguard Worker dir = "etc/policy", 64*7594170eSAndroid Build Coastguard Worker filename_from_src = True, 65*7594170eSAndroid Build Coastguard Worker src = "dir/file.policy", 66*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 67*7594170eSAndroid Build Coastguard Worker ) 68*7594170eSAndroid Build Coastguard Worker prebuilt_file_with_filename_from_src_test( 69*7594170eSAndroid Build Coastguard Worker name = test_name, 70*7594170eSAndroid Build Coastguard Worker target_under_test = name, 71*7594170eSAndroid Build Coastguard Worker ) 72*7594170eSAndroid Build Coastguard Worker return test_name 73*7594170eSAndroid Build Coastguard Worker 74*7594170eSAndroid Build Coastguard Workerdef prebuilt_file_test_suite(name): 75*7594170eSAndroid Build Coastguard Worker native.test_suite( 76*7594170eSAndroid Build Coastguard Worker name = name, 77*7594170eSAndroid Build Coastguard Worker tests = [ 78*7594170eSAndroid Build Coastguard Worker _prebuilt_file_with_filename_from_src_test(), 79*7594170eSAndroid Build Coastguard Worker ], 80*7594170eSAndroid Build Coastguard Worker ) 81