xref: /aosp_15_r20/external/bazelbuild-rules_license/tests/BUILD (revision f578df4fd057ffe2023728444759535685631548)
1*f578df4fSJingwen Chen# Test cases for license rules.
2*f578df4fSJingwen Chen
3*f578df4fSJingwen Chenload("@rules_license//rules:compliance.bzl", "check_license", "licenses_used")
4*f578df4fSJingwen Chenload("@rules_license//rules:license.bzl", "license")
5*f578df4fSJingwen Chenload("@rules_license//rules:license_kind.bzl", "license_kind")
6*f578df4fSJingwen Chen
7*f578df4fSJingwen Chenpackage(
8*f578df4fSJingwen Chen    default_applicable_licenses = [":license"],
9*f578df4fSJingwen Chen    default_visibility = [
10*f578df4fSJingwen Chen        "//examples:__subpackages__",
11*f578df4fSJingwen Chen        "//tests:__subpackages__",
12*f578df4fSJingwen Chen    ],
13*f578df4fSJingwen Chen)
14*f578df4fSJingwen Chen
15*f578df4fSJingwen Chen# license_kind rules generally appear in a central location per workspace. They
16*f578df4fSJingwen Chen# are intermingled with normal target build rules
17*f578df4fSJingwen Chenlicense_kind(
18*f578df4fSJingwen Chen    name = "generic_notice_license",
19*f578df4fSJingwen Chen    conditions = [
20*f578df4fSJingwen Chen        "notice",
21*f578df4fSJingwen Chen    ],
22*f578df4fSJingwen Chen)
23*f578df4fSJingwen Chen
24*f578df4fSJingwen Chenlicense_kind(
25*f578df4fSJingwen Chen    name = "generic_restricted_license",
26*f578df4fSJingwen Chen    conditions = [
27*f578df4fSJingwen Chen        "restricted",
28*f578df4fSJingwen Chen    ],
29*f578df4fSJingwen Chen)
30*f578df4fSJingwen Chen
31*f578df4fSJingwen Chen# The default license for an entire package is typically named "license".
32*f578df4fSJingwen Chenlicense(
33*f578df4fSJingwen Chen    name = "license",
34*f578df4fSJingwen Chen    package_name = "A test case package",
35*f578df4fSJingwen Chen    # Note the UTF-8 encoded copyright symbol.
36*f578df4fSJingwen Chen    copyright_notice = "Copyright © 2019 Uncle Toasty",
37*f578df4fSJingwen Chen    license_kinds = [":generic_notice_license"],
38*f578df4fSJingwen Chen    # Note. This need not be precise. If a downloader creates the license
39*f578df4fSJingwen Chen    # clause for you, then it should use the absolute download URL.
40*f578df4fSJingwen Chen    package_url = "http://github.com/bazelbuild/rules_license",
41*f578df4fSJingwen Chen    package_version = "0.0.4",
42*f578df4fSJingwen Chen)
43*f578df4fSJingwen Chen
44*f578df4fSJingwen Chenlicense(
45*f578df4fSJingwen Chen    name = "license_for_extra_feature",
46*f578df4fSJingwen Chen    package_name = "A test case package",
47*f578df4fSJingwen Chen    license_kinds = [":generic_restricted_license"],
48*f578df4fSJingwen Chen    license_text = "LICENSE.extra",
49*f578df4fSJingwen Chen)
50*f578df4fSJingwen Chen
51*f578df4fSJingwen Chen# This license is not in the "compliance" namespace and
52*f578df4fSJingwen Chen# therefore should not show up in the report verified by
53*f578df4fSJingwen Chen# :verify_cc_app_test
54*f578df4fSJingwen Chenlicense(
55*f578df4fSJingwen Chen    name = "internal_non_compliance_license",
56*f578df4fSJingwen Chen    namespace = "test_namespace",
57*f578df4fSJingwen Chen)
58*f578df4fSJingwen Chen
59*f578df4fSJingwen Chencc_binary(
60*f578df4fSJingwen Chen    name = "hello",
61*f578df4fSJingwen Chen    srcs = ["hello.cc"],
62*f578df4fSJingwen Chen    deps = [
63*f578df4fSJingwen Chen        ":c_bar",
64*f578df4fSJingwen Chen    ],
65*f578df4fSJingwen Chen)
66*f578df4fSJingwen Chen
67*f578df4fSJingwen Chencc_library(
68*f578df4fSJingwen Chen    name = "c_bar",
69*f578df4fSJingwen Chen    srcs = [
70*f578df4fSJingwen Chen        "bar.cc",
71*f578df4fSJingwen Chen    ],
72*f578df4fSJingwen Chen    applicable_licenses = [
73*f578df4fSJingwen Chen        ":license",
74*f578df4fSJingwen Chen        ":license_for_extra_feature",
75*f578df4fSJingwen Chen        ":internal_non_compliance_license",
76*f578df4fSJingwen Chen    ],
77*f578df4fSJingwen Chen    deps = [
78*f578df4fSJingwen Chen        "@rules_license//tests/legacy:another_library_with_legacy_license_clause",
79*f578df4fSJingwen Chen        "@rules_license//tests/legacy:library_with_legacy_license_clause",
80*f578df4fSJingwen Chen    ],
81*f578df4fSJingwen Chen)
82*f578df4fSJingwen Chen
83*f578df4fSJingwen Chenjava_binary(
84*f578df4fSJingwen Chen    name = "hello_java",
85*f578df4fSJingwen Chen    srcs = ["Hello.java"],
86*f578df4fSJingwen Chen    # Add an addition license to this target, beyond what my deps have.
87*f578df4fSJingwen Chen    applicable_licenses = [
88*f578df4fSJingwen Chen        ":license_for_extra_feature",
89*f578df4fSJingwen Chen    ],
90*f578df4fSJingwen Chen    javacopts = ["-Xep:DefaultPackage:OFF"],
91*f578df4fSJingwen Chen    main_class = "Hello",
92*f578df4fSJingwen Chen    deps = [
93*f578df4fSJingwen Chen        ":j_bar",
94*f578df4fSJingwen Chen    ],
95*f578df4fSJingwen Chen)
96*f578df4fSJingwen Chen
97*f578df4fSJingwen Chenjava_library(
98*f578df4fSJingwen Chen    name = "j_bar",
99*f578df4fSJingwen Chen    srcs = ["Bar.java"],
100*f578df4fSJingwen Chen    javacopts = ["-Xep:DefaultPackage:OFF"],
101*f578df4fSJingwen Chen)
102*f578df4fSJingwen Chen
103*f578df4fSJingwen Chencheck_license(
104*f578df4fSJingwen Chen    name = "check_cc_app",
105*f578df4fSJingwen Chen    check_conditions = False,
106*f578df4fSJingwen Chen    copyright_notices = "hello_cc_copyrights.txt",
107*f578df4fSJingwen Chen    license_texts = "hello_cc_licenses.txt",
108*f578df4fSJingwen Chen    report = "hello_cc_report",
109*f578df4fSJingwen Chen    deps = [
110*f578df4fSJingwen Chen        ":hello",
111*f578df4fSJingwen Chen    ],
112*f578df4fSJingwen Chen)
113*f578df4fSJingwen Chen
114*f578df4fSJingwen Chenlicenses_used(
115*f578df4fSJingwen Chen    name = "hello_licenses",
116*f578df4fSJingwen Chen    out = "hello_licenses.json",
117*f578df4fSJingwen Chen    deps = [":hello"],
118*f578df4fSJingwen Chen)
119*f578df4fSJingwen Chen
120*f578df4fSJingwen Chenpy_test(
121*f578df4fSJingwen Chen    name = "hello_licenses_test",
122*f578df4fSJingwen Chen    srcs = ["hello_licenses_test.py"],
123*f578df4fSJingwen Chen    data = [
124*f578df4fSJingwen Chen        ":hello_licenses.json",
125*f578df4fSJingwen Chen        ":hello_cc_copyrights.txt",
126*f578df4fSJingwen Chen    ],
127*f578df4fSJingwen Chen    python_version = "PY3",
128*f578df4fSJingwen Chen    deps = [
129*f578df4fSJingwen Chen        ":license_test_utils",
130*f578df4fSJingwen Chen    ],
131*f578df4fSJingwen Chen)
132*f578df4fSJingwen Chen
133*f578df4fSJingwen Chenpy_library(
134*f578df4fSJingwen Chen    name = "license_test_utils",
135*f578df4fSJingwen Chen    srcs = ["license_test_utils.py"],
136*f578df4fSJingwen Chen    srcs_version = "PY3",
137*f578df4fSJingwen Chen)
138*f578df4fSJingwen Chen
139*f578df4fSJingwen Chencheck_license(
140*f578df4fSJingwen Chen    name = "check_java_app",
141*f578df4fSJingwen Chen    check_conditions = False,
142*f578df4fSJingwen Chen    copyright_notices = "hello_java_copyrights.txt",
143*f578df4fSJingwen Chen    license_texts = "hello_java_licenses.txt",
144*f578df4fSJingwen Chen    report = "hello_java_report",
145*f578df4fSJingwen Chen    deps = [
146*f578df4fSJingwen Chen        ":hello_java",
147*f578df4fSJingwen Chen    ],
148*f578df4fSJingwen Chen)
149*f578df4fSJingwen Chen
150*f578df4fSJingwen Chen
151*f578df4fSJingwen Chenlicense(
152*f578df4fSJingwen Chen    name = "license_with_generated_text",
153*f578df4fSJingwen Chen    license_text = ":created_license",
154*f578df4fSJingwen Chen    license_kinds = [":generic_notice_license"],
155*f578df4fSJingwen Chen)
156*f578df4fSJingwen Chen
157*f578df4fSJingwen Chengenrule(
158*f578df4fSJingwen Chen    name = "created_license",
159*f578df4fSJingwen Chen    outs = ["something.text"],
160*f578df4fSJingwen Chen    cmd = "echo hello >$@",
161*f578df4fSJingwen Chen)
162*f578df4fSJingwen Chen
163