xref: /aosp_15_r20/build/soong/provenance/provenance_singleton_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1/*
2 * Copyright (C) 2022 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package provenance
18
19import (
20	"strings"
21	"testing"
22
23	"android/soong/android"
24)
25
26func TestProvenanceSingleton(t *testing.T) {
27	result := android.GroupFixturePreparers(
28		PrepareForTestWithProvenanceSingleton,
29		android.PrepareForTestWithAndroidMk).RunTestWithBp(t, "")
30
31	outputs := result.SingletonForTests("provenance_metadata_singleton").AllOutputs()
32	for _, output := range outputs {
33		testingBuildParam := result.SingletonForTests("provenance_metadata_singleton").Output(output)
34		switch {
35		case strings.Contains(output, "soong/provenance_metadata.textproto"):
36			android.AssertStringEquals(t, "Invalid build rule", "android/soong/provenance.mergeProvenanceMetaData", testingBuildParam.Rule.String())
37			android.AssertIntEquals(t, "Invalid input", len(testingBuildParam.Inputs), 0)
38			android.AssertStringDoesContain(t, "Invalid output path", output, "soong/provenance_metadata.textproto")
39			android.AssertIntEquals(t, "Invalid args", len(testingBuildParam.Args), 0)
40
41		case strings.HasSuffix(output, "provenance_metadata"):
42			android.AssertStringEquals(t, "Invalid build rule", "<builtin>:phony", testingBuildParam.Rule.String())
43			android.AssertStringEquals(t, "Invalid input", testingBuildParam.Inputs[0].String(), "out/soong/provenance_metadata.textproto")
44			android.AssertStringEquals(t, "Invalid output path", output, "provenance_metadata")
45			android.AssertIntEquals(t, "Invalid args", len(testingBuildParam.Args), 0)
46		}
47	}
48}
49