Remove link_action_subject. rules_testing's action_subject has all the required functionality - this layer of abstraction does not give us anything. The convenience function to retrieve the linking action is left in place. It cannot always be used since it assumes a specific binary output but it is heavily used already by the tests. PiperOrigin-RevId: 965819893 Change-Id: Ie717eb2543e0bb2f704381dee211c46a545e8868
diff --git a/tests/cc/common/link_build_variables_test.bzl b/tests/cc/common/link_build_variables_test.bzl index ba33b46..8b37460 100644 --- a/tests/cc/common/link_build_variables_test.bzl +++ b/tests/cc/common/link_build_variables_test.bzl
@@ -24,12 +24,10 @@ ) def _cc_library_nodeps_dynamic_library_action(env, target): - action_subject = env.expect.that_target(target).action_generating("{package}/lib{name}.so") - return link_action_subject.new(action_subject.actual, action_subject.meta) + return env.expect.that_target(target).action_generating("{package}/lib{name}.so") def _cc_library_static_library_action(env, target): - action_subject = env.expect.that_target(target).action_generating("{package}/lib{name}.a") - return link_action_subject.new(action_subject.actual, action_subject.meta) + return env.expect.that_target(target).action_generating("{package}/lib{name}.a") def _test_force_pic_build_variable(name): _cc_binary_setup(name) @@ -217,10 +215,9 @@ ) def _test_no_ifso_building_when_thin_lto_indexing_impl(env, target): - action_subject = env.expect.that_target(target).action_generating( + action = env.expect.that_target(target).action_generating( "{package}/lib{name}.so-lto-final.params", ) - action = link_action_subject.new(action_subject.actual, action_subject.meta) action.argv().contains("--generate-interface-library=no") action.argv().contains("--interface-library-input=ignored") action.argv().contains("--interface-library-output=ignored") @@ -268,10 +265,9 @@ def _test_output_execpath_is_not_exposed_when_thin_lto_indexing_impl(env, target): # TODO(b/525692821): Consider using build graph traversal once available to find the LTO backend action. - action_subject = env.expect.that_target(target).action_generating( + action = env.expect.that_target(target).action_generating( "{package}/lib{name}.so-lto-final.params", ) - action = link_action_subject.new(action_subject.actual, action_subject.meta) action.argv().not_contains_predicate( matching.custom( "starts with --output-execpath=", @@ -468,8 +464,7 @@ package = target.label.package name = target.label.name output_path = "{}/lib{}.so".format(package, name) - action_subject = env.expect.that_target(target).action_generating(output_path) - action = link_action_subject.new(action_subject.actual, action_subject.meta) + action = env.expect.that_target(target).action_generating(output_path) is_macos = env.ctx.target_platform_has_constraint(env.ctx.attr._is_macos[platform_common.ConstraintValueInfo]) if is_macos:
diff --git a/tests/cc/testutil/link_action_subject.bzl b/tests/cc/testutil/link_action_subject.bzl index 0d1248f..2d0fae4 100644 --- a/tests/cc/testutil/link_action_subject.bzl +++ b/tests/cc/testutil/link_action_subject.bzl
@@ -1,26 +1,12 @@ """Subject for asserting on Link Actions.""" -load("@rules_testing//lib:truth.bzl", "subjects") load("//tests/cc/testutil:cc_binary_target_subject.bzl", "cc_binary_target_subject") -def _link_action_subject_new(actual, meta): - return struct( - actual = actual, - meta = meta, - inputs = lambda: subjects.depset_file(actual.inputs, meta = meta.derive("inputs")), - outputs = lambda: subjects.depset_file(actual.outputs, meta = meta.derive("outputs")), - argv = lambda: subjects.collection(actual.argv, sortable = False, meta = meta.derive("argv"), format = True), - env = lambda: subjects.dict(actual.env, meta = meta.derive("env")), - execution_info = lambda: subjects.dict(actual.execution_info, meta = meta.derive("execution_info")), - ) - def _link_action_subject_from_target(env, target): - action_subject = cc_binary_target_subject.from_target(env, target).action_generating( + return cc_binary_target_subject.from_target(env, target).action_generating( "{package}/{name}{binary_extension}", ) - return _link_action_subject_new(action_subject.actual, action_subject.meta) link_action_subject = struct( - new = _link_action_subject_new, from_target = _link_action_subject_from_target, )