163 lines
3.7 KiB
Python
163 lines
3.7 KiB
Python
# 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 >$@",
|
|
)
|
|
|