# Test cases for license rules. load("@rules_license//rules:compliance.bzl", "check_license", "licenses_used") load("@rules_license//rules:license.bzl", "license") load("@rules_license//rules:license_kind.bzl", "license_kind") package( default_applicable_licenses = [":license"], default_visibility = [ "//examples:__subpackages__", "//tests:__subpackages__", ], ) # license_kind rules generally appear in a central location per workspace. They # are intermingled with normal target build rules license_kind( name = "generic_notice_license", conditions = [ "notice", ], ) license_kind( name = "generic_restricted_license", conditions = [ "restricted", ], ) # The default license for an entire package is typically named "license". license( name = "license", package_name = "A test case package", # Note the UTF-8 encoded copyright symbol. copyright_notice = "Copyright © 2019 Uncle Toasty", license_kinds = [":generic_notice_license"], # Note. This need not be precise. If a downloader creates the license # clause for you, then it should use the absolute download URL. package_url = "http://github.com/bazelbuild/rules_license", package_version = "0.0.4", ) license( name = "license_for_extra_feature", package_name = "A test case package", license_kinds = [":generic_restricted_license"], license_text = "LICENSE.extra", ) # This license is not in the "compliance" namespace and # therefore should not show up in the report verified by # :verify_cc_app_test license( name = "internal_non_compliance_license", namespace = "test_namespace", ) cc_binary( name = "hello", srcs = ["hello.cc"], deps = [ ":c_bar", ], ) cc_library( name = "c_bar", srcs = [ "bar.cc", ], applicable_licenses = [ ":license", ":license_for_extra_feature", ":internal_non_compliance_license", ], deps = [ "@rules_license//tests/legacy:another_library_with_legacy_license_clause", "@rules_license//tests/legacy:library_with_legacy_license_clause", ], ) java_binary( name = "hello_java", srcs = ["Hello.java"], # Add an addition license to this target, beyond what my deps have. applicable_licenses = [ ":license_for_extra_feature", ], javacopts = ["-Xep:DefaultPackage:OFF"], main_class = "Hello", deps = [ ":j_bar", ], ) java_library( name = "j_bar", srcs = ["Bar.java"], javacopts = ["-Xep:DefaultPackage:OFF"], ) check_license( name = "check_cc_app", check_conditions = False, copyright_notices = "hello_cc_copyrights.txt", license_texts = "hello_cc_licenses.txt", report = "hello_cc_report", deps = [ ":hello", ], ) licenses_used( name = "hello_licenses", out = "hello_licenses.json", deps = [":hello"], ) py_test( name = "hello_licenses_test", srcs = ["hello_licenses_test.py"], data = [ ":hello_licenses.json", ":hello_cc_copyrights.txt", ], python_version = "PY3", deps = [ ":license_test_utils", ], ) py_library( name = "license_test_utils", srcs = ["license_test_utils.py"], srcs_version = "PY3", ) check_license( name = "check_java_app", check_conditions = False, copyright_notices = "hello_java_copyrights.txt", license_texts = "hello_java_licenses.txt", report = "hello_java_report", deps = [ ":hello_java", ], ) license( name = "license_with_generated_text", license_text = ":created_license", license_kinds = [":generic_notice_license"], ) genrule( name = "created_license", outs = ["something.text"], cmd = "echo hello >$@", )