mirror of https://github.com/bazelbuild/rules_cc
75 lines
3.2 KiB
Python
75 lines
3.2 KiB
Python
"""Starlark tests for cc_shared_library"""
|
|
|
|
load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts", "unittest")
|
|
load("//examples:experimental_cc_shared_library.bzl", "for_testing_dont_use_check_if_target_under_path")
|
|
|
|
def _linking_suffix_test_impl(ctx):
|
|
env = analysistest.begin(ctx)
|
|
|
|
target_under_test = analysistest.target_under_test(env)
|
|
actions = analysistest.target_actions(env)
|
|
|
|
for arg in reversed(actions[1].argv):
|
|
if (arg.find(".a") != -1 or arg.find("-l") != -1) and "/" in arg:
|
|
asserts.equals(env, "liba_suffix.a", arg[arg.rindex("/") + 1:])
|
|
break
|
|
|
|
return analysistest.end(env)
|
|
|
|
linking_suffix_test = analysistest.make(_linking_suffix_test_impl)
|
|
|
|
def _additional_inputs_test_impl(ctx):
|
|
env = analysistest.begin(ctx)
|
|
|
|
target_under_test = analysistest.target_under_test(env)
|
|
actions = analysistest.target_actions(env)
|
|
|
|
found = False
|
|
for arg in actions[1].argv:
|
|
if arg.find("-Wl,--script=") != -1:
|
|
asserts.equals(env, "examples/test_cc_shared_library/additional_script.txt", arg[13:])
|
|
found = True
|
|
break
|
|
asserts.true(env, found, "Should have seen option --script=")
|
|
|
|
return analysistest.end(env)
|
|
|
|
additional_inputs_test = analysistest.make(_additional_inputs_test_impl)
|
|
|
|
def _build_failure_test_impl(ctx):
|
|
env = analysistest.begin(ctx)
|
|
|
|
asserts.expect_failure(env, ctx.attr.message)
|
|
|
|
return analysistest.end(env)
|
|
|
|
build_failure_test = analysistest.make(
|
|
_build_failure_test_impl,
|
|
expect_failure = True,
|
|
attrs = {"message": attr.string()},
|
|
)
|
|
|
|
def _paths_test_impl(ctx):
|
|
env = unittest.begin(ctx)
|
|
|
|
asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("//foo"), Label("//bar")))
|
|
asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//foo"), Label("@bar//bar")))
|
|
asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("//bar"), Label("@foo//bar")))
|
|
asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar"), Label("@foo//bar")))
|
|
asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar:bar"), Label("@foo//bar")))
|
|
asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("//bar:bar"), Label("//bar")))
|
|
|
|
asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar/baz"), Label("@foo//bar")))
|
|
asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar/baz"), Label("@foo//bar:__pkg__")))
|
|
asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar/baz"), Label("@foo//bar:__subpackages__")))
|
|
asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar:qux"), Label("@foo//bar:__pkg__")))
|
|
|
|
asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar"), Label("@foo//bar/baz:__subpackages__")))
|
|
asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("//bar"), Label("//bar/baz:__pkg__")))
|
|
|
|
asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("//foo/bar:baz"), Label("//:__subpackages__")))
|
|
|
|
return unittest.end(env)
|
|
|
|
paths_test = unittest.make(_paths_test_impl)
|