From 7463665f1cf8c3585a2283a9ec1d916d7237d799 Mon Sep 17 00:00:00 2001 From: cparsons Date: Wed, 27 Jun 2018 11:17:41 -0700 Subject: Create a skydoc_test macro for ease of golden-file testing of skydoc RELNOTES: None. PiperOrigin-RevId: 202339577 --- .../java/com/google/devtools/build/skydoc/BUILD | 61 +++++----------------- .../google/devtools/build/skydoc/skydoc_test.bzl | 59 +++++++++++++++++++++ 2 files changed, 71 insertions(+), 49 deletions(-) create mode 100644 src/test/java/com/google/devtools/build/skydoc/skydoc_test.bzl (limited to 'src/test/java') diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD index 2416d5a339..d6daaa3398 100644 --- a/src/test/java/com/google/devtools/build/skydoc/BUILD +++ b/src/test/java/com/google/devtools/build/skydoc/BUILD @@ -1,3 +1,5 @@ +load(":skydoc_test.bzl", "skydoc_test") + package( default_testonly = 1, default_visibility = ["//src:__subpackages__"], @@ -29,55 +31,16 @@ java_test( ], ) -# TODO(cparsons): Make test cases and golden-genrules into a macro. -sh_test( - name = "simple_skydoc_e2e_test", - srcs = ["skydoc_e2e_test_runner.sh"], - args = [ - "$(location //src/main/java/com/google/devtools/build/skydoc:skydoc)", - "$(location simple_test/input.txt)", - "$(location simple_test/golden.txt)", - ], - data = [ - "simple_test/golden.txt", - "simple_test/input.txt", - "//src/main/java/com/google/devtools/build/skydoc", - ], -) - -genrule( - name = "regenerate_simple_golden", - srcs = [ - "simple_test/input.txt", - ], - outs = ["simple_output.txt"], - cmd = "$(location //src/main/java/com/google/devtools/build/skydoc:skydoc) " + - "$(location simple_test/input.txt) $(location simple_output.txt)", - tools = ["//src/main/java/com/google/devtools/build/skydoc"], +skydoc_test( + name = "simple_test", + golden_file = "simple_test/golden.txt", + input_file = "simple_test/input.txt", + skydoc = "//src/main/java/com/google/devtools/build/skydoc", ) -sh_test( - name = "unknown_name_skydoc_e2e_test", - srcs = ["skydoc_e2e_test_runner.sh"], - args = [ - "$(location //src/main/java/com/google/devtools/build/skydoc:skydoc)", - "$(location unknown_name_test/input.txt)", - "$(location unknown_name_test/golden.txt)", - ], - data = [ - "unknown_name_test/golden.txt", - "unknown_name_test/input.txt", - "//src/main/java/com/google/devtools/build/skydoc", - ], -) - -genrule( - name = "regenerate_unknown_name_golden", - srcs = [ - "unknown_name_test/input.txt", - ], - outs = ["unknown_name_output.txt"], - cmd = "$(location //src/main/java/com/google/devtools/build/skydoc:skydoc) " + - "$(location unknown_name_test/input.txt) $(location unknown_name_output.txt)", - tools = ["//src/main/java/com/google/devtools/build/skydoc"], +skydoc_test( + name = "unknown_name", + golden_file = "unknown_name_test/golden.txt", + input_file = "unknown_name_test/input.txt", + skydoc = "//src/main/java/com/google/devtools/build/skydoc", ) diff --git a/src/test/java/com/google/devtools/build/skydoc/skydoc_test.bzl b/src/test/java/com/google/devtools/build/skydoc/skydoc_test.bzl new file mode 100644 index 0000000000..f36e87744f --- /dev/null +++ b/src/test/java/com/google/devtools/build/skydoc/skydoc_test.bzl @@ -0,0 +1,59 @@ +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Convenience macro for skydoc tests. Each target represents two targets: +# a shell test verifying the contents of the golden file, and a genrule +# which will regenerate the golden file. +"""Convenience macro for skydoc tests.""" + +def skydoc_test(name, input_file, golden_file, skydoc): + """Creates a test target and golden-file regeneration target for skydoc testing. + + The test target is named "{name}_e2e_test". + The golden-file regeneration target is named "regenerate_{name}_golden". + + Args: + name: A unique name to qualify the created targets. + input_file: The label string of the skylark input file for which documentation is generated + in this test. + golden_file: The label string of the golden file containing the documentation when skydoc + is run on the input file. + skydoc: The label string of the skydoc binary. + """ + output_golden_file = "%s_output.txt" % name + native.sh_test( + name = "%s_e2e_test" % name, + srcs = ["skydoc_e2e_test_runner.sh"], + args = [ + "$(location %s)" % skydoc, + "$(location %s)" % input_file, + "$(location %s)" % golden_file, + ], + data = [ + input_file, + golden_file, + skydoc, + ], + ) + + native.genrule( + name = "regenerate_%s_golden" % name, + srcs = [ + input_file, + ], + outs = [output_golden_file], + cmd = "$(location %s) " % skydoc + + "$(location %s) $(location %s)" % (input_file, output_golden_file), + tools = [skydoc], + ) -- cgit v1.2.3