diff --git a/bazel/private/gtest_report.bzl b/bazel/private/gtest_report.bzl index 98a92ed3..ae9863ab 100644 --- a/bazel/private/gtest_report.bzl +++ b/bazel/private/gtest_report.bzl @@ -5,7 +5,6 @@ The tests are run as part of the build, and the generated XML report is made ava ATTENTION: This rule will not rerun tests unless this rule was modified or the test executable was modified. E.g. Bazel arguments like "--runs_per_test" do not have an effect on this rule. -""" _RULE_ATTRS = { # In order for args expansion to work in bazel for an executable rule @@ -27,7 +26,7 @@ _RULE_ATTRS = { ), } -def _gtest_report_subrule_impl(ctx, name, executable, inputs): +def _gtest_report_subrule_impl(ctx, name, executable, inputs, suppress_stdout = False): link = ctx.actions.declare_file(name + "_runner") xml = ctx.actions.declare_file("{}_test.xml".format(name)) @@ -40,12 +39,20 @@ def _gtest_report_subrule_impl(ctx, name, executable, inputs): args = ctx.actions.args() args.add("--gtest_output=xml:{}".format(xml.path)) - ctx.actions.run( - outputs = [xml], - inputs = depset([executable], transitive = [inputs]), - arguments = [args], - executable = link, - ) + if suppress_stdout: + ctx.actions.run_shell( + outputs = [xml], + inputs = depset([link, executable], transitive = [inputs]), + arguments = [args], + command = '"{}" "$@" >/dev/null'.format(link.path), + ) + else: + ctx.actions.run( + outputs = [xml], + inputs = depset([executable], transitive = [inputs]), + arguments = [args], + executable = link, + ) return xml diff --git a/bazel/private/lobster_test.bzl b/bazel/private/lobster_test.bzl index 7265d4b3..5843d3b4 100644 --- a/bazel/private/lobster_test.bzl +++ b/bazel/private/lobster_test.bzl @@ -1,19 +1,28 @@ load("//bazel:providers.bzl", "LobsterProvider") -def _lobster_report_subrule_impl(ctx, inputs, lobster_config, _lobster_report): +def _lobster_report_subrule_impl(ctx, inputs, lobster_config, suppress_stdout = False, _lobster_report = None): lobster_report = ctx.actions.declare_file(ctx.label.name + "_report.json") args = ctx.actions.args() args.add_all(["--lobster-config", lobster_config.path]) args.add_all(["--out", lobster_report.path]) - ctx.actions.run( - executable = _lobster_report, - inputs = depset(inputs + [lobster_config]), - outputs = [lobster_report], - arguments = [args], - progress_message = "lobster-report {}".format(lobster_report.path), - ) + if suppress_stdout: + ctx.actions.run_shell( + inputs = depset(inputs + [lobster_config]), + outputs = [lobster_report], + arguments = [args], + command = '"{executable}" "$@" >/dev/null'.format(executable = _lobster_report.path), + progress_message = "lobster-report {}".format(lobster_report.path), + ) + else: + ctx.actions.run( + executable = _lobster_report, + inputs = depset(inputs + [lobster_config]), + outputs = [lobster_report], + arguments = [args], + progress_message = "lobster-report {}".format(lobster_report.path), + ) return lobster_report @@ -28,7 +37,7 @@ subrule_lobster_report = subrule( }, ) -def _lobster_html_report_subrule_impl(ctx, lobster_report, _lobster_html_report): +def _lobster_html_report_subrule_impl(ctx, lobster_report, suppress_stdout = False, _lobster_html_report = None): lobster_html_report = ctx.actions.declare_file("{}_report.html".format(ctx.label.name)) # Compute relative path from the HTML output back to the workspace root so @@ -43,13 +52,22 @@ def _lobster_html_report_subrule_impl(ctx, lobster_report, _lobster_html_report) args.add_all(["--out", lobster_html_report.path]) args.add_all(["--source-root", source_root]) - ctx.actions.run( - executable = _lobster_html_report, - inputs = [lobster_report], - outputs = [lobster_html_report], - arguments = [args], - progress_message = "lobster-html-report {}".format(lobster_html_report.path), - ) + if suppress_stdout: + ctx.actions.run_shell( + inputs = [lobster_report], + outputs = [lobster_html_report], + arguments = [args], + command = '"{executable}" "$@" >/dev/null'.format(executable = _lobster_html_report.path), + progress_message = "lobster-html-report {}".format(lobster_html_report.path), + ) + else: + ctx.actions.run( + executable = _lobster_html_report, + inputs = [lobster_report], + outputs = [lobster_html_report], + arguments = [args], + progress_message = "lobster-html-report {}".format(lobster_html_report.path), + ) return lobster_html_report