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