1*7594170eSAndroid Build Coastguard Worker# Copyright (C) 2023 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 cocc 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 Worker"""CcInfo testing subject.""" 16*7594170eSAndroid Build Coastguard Worker 17*7594170eSAndroid Build Coastguard Workerload("@rules_testing//lib:truth.bzl", "subjects") 18*7594170eSAndroid Build Coastguard Worker 19*7594170eSAndroid Build Coastguard Workerdef cc_info_subject(info, *, meta): 20*7594170eSAndroid Build Coastguard Worker """Creates a new `CcInfoSubject` for a CcInfo provider instance. 21*7594170eSAndroid Build Coastguard Worker 22*7594170eSAndroid Build Coastguard Worker Method: CcInfoSubject.new 23*7594170eSAndroid Build Coastguard Worker 24*7594170eSAndroid Build Coastguard Worker Args: 25*7594170eSAndroid Build Coastguard Worker info: The CcInfo object 26*7594170eSAndroid Build Coastguard Worker meta: ExpectMeta object. 27*7594170eSAndroid Build Coastguard Worker 28*7594170eSAndroid Build Coastguard Worker Returns: 29*7594170eSAndroid Build Coastguard Worker A `CcInfoSubject` struct 30*7594170eSAndroid Build Coastguard Worker """ 31*7594170eSAndroid Build Coastguard Worker 32*7594170eSAndroid Build Coastguard Worker # buildifier: disable=uninitialized 33*7594170eSAndroid Build Coastguard Worker public = struct( 34*7594170eSAndroid Build Coastguard Worker # go/keep-sorted start 35*7594170eSAndroid Build Coastguard Worker headers = lambda *a, **k: _cc_info_subject_headers(self, *a, **k), 36*7594170eSAndroid Build Coastguard Worker includes = lambda *a, **k: _cc_info_subject_includes(self, *a, **k), 37*7594170eSAndroid Build Coastguard Worker system_includes = lambda *a, **k: _cc_info_subject_system_includes(self, *a, **k), 38*7594170eSAndroid Build Coastguard Worker # go/keep-sorted end 39*7594170eSAndroid Build Coastguard Worker ) 40*7594170eSAndroid Build Coastguard Worker self = struct( 41*7594170eSAndroid Build Coastguard Worker actual = info, 42*7594170eSAndroid Build Coastguard Worker meta = meta, 43*7594170eSAndroid Build Coastguard Worker ) 44*7594170eSAndroid Build Coastguard Worker return public 45*7594170eSAndroid Build Coastguard Worker 46*7594170eSAndroid Build Coastguard Workerdef _cc_info_subject_includes(self): 47*7594170eSAndroid Build Coastguard Worker """Returns a `CollectionSubject` for the `includes` attribute. 48*7594170eSAndroid Build Coastguard Worker 49*7594170eSAndroid Build Coastguard Worker Method: CcInfoSubject.includes 50*7594170eSAndroid Build Coastguard Worker """ 51*7594170eSAndroid Build Coastguard Worker return subjects.collection( 52*7594170eSAndroid Build Coastguard Worker self.actual.compilation_context.includes, 53*7594170eSAndroid Build Coastguard Worker meta = self.meta.derive("includes()"), 54*7594170eSAndroid Build Coastguard Worker ) 55*7594170eSAndroid Build Coastguard Worker 56*7594170eSAndroid Build Coastguard Workerdef _cc_info_subject_system_includes(self): 57*7594170eSAndroid Build Coastguard Worker """Returns a `CollectionSubject` for the `system_includes` attribute. 58*7594170eSAndroid Build Coastguard Worker 59*7594170eSAndroid Build Coastguard Worker Method: CcInfoSubject.system_includes 60*7594170eSAndroid Build Coastguard Worker """ 61*7594170eSAndroid Build Coastguard Worker return subjects.collection( 62*7594170eSAndroid Build Coastguard Worker self.actual.compilation_context.system_includes, 63*7594170eSAndroid Build Coastguard Worker meta = self.meta.derive("system_includes()"), 64*7594170eSAndroid Build Coastguard Worker ) 65*7594170eSAndroid Build Coastguard Worker 66*7594170eSAndroid Build Coastguard Workerdef _cc_info_subject_headers(self): 67*7594170eSAndroid Build Coastguard Worker """Returns a `CollectionSubject` for the `headers` attribute. 68*7594170eSAndroid Build Coastguard Worker 69*7594170eSAndroid Build Coastguard Worker Method: CcInfoSubject.headers 70*7594170eSAndroid Build Coastguard Worker """ 71*7594170eSAndroid Build Coastguard Worker return subjects.depset_file( 72*7594170eSAndroid Build Coastguard Worker self.actual.compilation_context.headers, 73*7594170eSAndroid Build Coastguard Worker meta = self.meta.derive("headers()"), 74*7594170eSAndroid Build Coastguard Worker ) 75