1// Copyright (C) 2021 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package sdk
16
17import (
18	"testing"
19
20	"android/soong/android"
21)
22
23func TestSnapshotWithPackageDefaultLicense(t *testing.T) {
24	result := android.GroupFixturePreparers(
25		prepareForSdkTestWithJava,
26		android.PrepareForTestWithLicenses,
27		android.PrepareForTestWithLicenseDefaultModules,
28		android.MockFS{
29			"NOTICE1": nil,
30			"NOTICE2": nil,
31		}.AddToFixture(),
32	).RunTestWithBp(t, `
33		package {
34			default_applicable_licenses: ["mylicense"],
35		}
36
37		license {
38			name: "mylicense",
39			license_kinds: [
40				"SPDX-license-identifier-Apache-2.0",
41				"legacy_unencumbered",
42			],
43			license_text: [
44				"NOTICE1",
45				"NOTICE2",
46			],
47		}
48
49		sdk {
50			name: "mysdk",
51			java_header_libs: ["myjavalib"],
52		}
53
54		java_library {
55			name: "myjavalib",
56			srcs: ["Test.java"],
57			system_modules: "none",
58			sdk_version: "none",
59		}
60	`)
61
62	CheckSnapshot(t, result, "mysdk", "",
63		checkUnversionedAndroidBpContents(`
64// This is auto-generated. DO NOT EDIT.
65
66package {
67    // A default list here prevents the license LSC from adding its own list which would
68    // be unnecessary as every module in the sdk already has its own licenses property.
69    default_applicable_licenses: ["Android-Apache-2.0"],
70}
71
72java_import {
73    name: "myjavalib",
74    prefer: false,
75    visibility: ["//visibility:public"],
76    apex_available: ["//apex_available:platform"],
77    licenses: ["mysdk_mylicense"],
78    jars: ["java/myjavalib.jar"],
79}
80
81license {
82    name: "mysdk_mylicense",
83    visibility: ["//visibility:private"],
84    license_kinds: [
85        "SPDX-license-identifier-Apache-2.0",
86        "legacy_unencumbered",
87    ],
88    license_text: [
89        "licenses/NOTICE1",
90        "licenses/NOTICE2",
91    ],
92}
93		`),
94		checkVersionedAndroidBpContents(`
95// This is auto-generated. DO NOT EDIT.
96
97package {
98    // A default list here prevents the license LSC from adding its own list which would
99    // be unnecessary as every module in the sdk already has its own licenses property.
100    default_applicable_licenses: ["Android-Apache-2.0"],
101}
102
103java_import {
104    name: "mysdk_myjavalib@current",
105    sdk_member_name: "myjavalib",
106    visibility: ["//visibility:public"],
107    apex_available: ["//apex_available:platform"],
108    licenses: ["mysdk_mylicense@current"],
109    jars: ["java/myjavalib.jar"],
110}
111
112license {
113    name: "mysdk_mylicense@current",
114    sdk_member_name: "mylicense",
115    visibility: ["//visibility:private"],
116    license_kinds: [
117        "SPDX-license-identifier-Apache-2.0",
118        "legacy_unencumbered",
119    ],
120    license_text: [
121        "licenses/NOTICE1",
122        "licenses/NOTICE2",
123    ],
124}
125
126sdk_snapshot {
127    name: "mysdk@current",
128    visibility: ["//visibility:public"],
129    java_header_libs: ["mysdk_myjavalib@current"],
130}
131		`),
132		checkAllCopyRules(`
133.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
134NOTICE1 -> licenses/NOTICE1
135NOTICE2 -> licenses/NOTICE2
136`),
137	)
138}
139