xref: /aosp_15_r20/external/bazelbuild-rules_license/tests/apps/BUILD (revision f578df4fd057ffe2023728444759535685631548)
1# Test cases for license rules: Sample app
2
3load("@rules_license//rules:compliance.bzl", "licenses_used")
4
5package(default_visibility = ["//examples:__subpackages__"])
6
7# Note that the app explicitly depends only on a library and some legacy
8# style licensed code.
9cc_binary(
10    name = "an_app",
11    srcs = ["an_app.cc"],
12    deps = [
13        ":level4",
14        # "@rules_license//rules/tests/legacy:another_library_with_legacy_license_clause",
15        # "@rules_license//rules/tests/legacy:library_with_legacy_license_clause",
16    ],
17)
18
19# pointless chain of libraries to show transitive rule gathering, culminating
20# in a diamond dependency on a library under license.
21# Note that the lowest level depends on some third party code
22[
23    genrule(
24        name = "level_%d_src" % level,
25        outs = ["level_%d.cc" % level],
26        # Note to reviewers: This should use string format, but format
27        # is broken when
28        cmd = """cat >$@ <<END
29            #include <iostream>
30            extern void {lower}();
31            void lib_level_{level}() {{
32                std::cout << "This is level {level}" << std::endl;
33                {lower}();
34                }}
35END
36            """.format(
37            level = level,
38            lower = "lib_level_%d" % (level - 1) if level > 0 else "new_lib_func",
39        ),
40    )
41    for level in range(5)
42]
43
44[
45    cc_library(
46        name = "level%d" % level,
47        srcs = [":level_%d.cc" % level],
48        deps = [
49            (":level%d" % (level - 1) if level > 0 else "@rules_license//tests/thrdparty:new_style_lib"),
50        ],
51    )
52    for level in range(5)
53]
54
55licenses_used(
56    name = "an_app_licenses",
57    out = "an_app_licenses.json",
58    deps = [":an_app"],
59)
60
61# Examining the golden file shows that we depend on both kinds of license.
62py_test(
63    name = "an_app_licenses_test",
64    srcs = ["an_app_licenses_test.py"],
65    data = [":an_app_licenses.json"],
66    python_version = "PY3",
67    deps = [
68        "@rules_license//tests:license_test_utils",
69    ],
70)
71