diff options
author | Alix <agespino@google.com> | 2022-06-28 18:17:50 +0000 |
---|---|---|
committer | Alix <agespino@google.com> | 2022-09-22 19:53:15 +0000 |
commit | 502c21080409917d3509698677e007dc022af7d9 (patch) | |
tree | c0c2f97f917839bd93b6f183f9a462a87bfc8fe7 /rules/prebuilt_xml_test.bzl | |
parent | 2a034b851ae5a41f2630a11144a65b51e4be4710 (diff) | |
download | bazel-502c21080409917d3509698677e007dc022af7d9.tar.gz |
Implement prebuilt_xml.bzl
Test: prebuilt_xml_test.bzl
Bug: 237039154
Change-Id: I2c3a4622aa59a8007c6c0d2db8c08d64f5262d72
Diffstat (limited to 'rules/prebuilt_xml_test.bzl')
-rw-r--r-- | rules/prebuilt_xml_test.bzl | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/rules/prebuilt_xml_test.bzl b/rules/prebuilt_xml_test.bzl new file mode 100644 index 00000000..cde3e285 --- /dev/null +++ b/rules/prebuilt_xml_test.bzl @@ -0,0 +1,251 @@ +""" +Copyright (C) 2022 The Android Open Source Project + +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. +""" + +load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") +load("//build/bazel/rules:prebuilt_xml.bzl", "prebuilt_xml") +load("//build/bazel/rules:prebuilt_file.bzl", "PrebuiltFileInfo") +load("//build/bazel/rules/test_common:args.bzl", "get_arg_value") +load("@bazel_skylib//lib:paths.bzl", "paths") + +SRC = "fooSrc.xml" +DIR = "etc/xml" +DTD_SCHEMA = "bar.dtd" +XSD_SCHEMA = "baz.xsd" +FILENAME = "fooFilename" + +def _test_prebuilt_xml_commands_impl(ctx): + env = analysistest.begin(ctx) + actions = analysistest.target_actions(env) + asserts.equals(env, 1, len(actions), "expected 1 action got {}".format(actions)) + args = actions[0].argv + + asserts.true(env, len(args) >= 8, "expected at least 8 arguments but got {} {}".format(len(args), args)) + + offset = 0 + schema = ctx.attr.schema + + if schema != "": + offset = 2 + if schema == "--schema": + asserts.equals(env, paths.basename(get_arg_value(args, schema)), XSD_SCHEMA) + elif schema == "--dtdvalid": + asserts.equals(env, paths.basename(get_arg_value(args, schema)), DTD_SCHEMA) + else: + analysistest.fail( + env, + "Expected schema attr to be --schema or --dtdvalid but got {}".format(schema), + ) + + asserts.equals(env, SRC, paths.basename(args[1 + offset])) + asserts.equals(env, ">", args[2 + offset]) + asserts.equals(env, "/dev/null", args[3 + offset]) + asserts.equals(env, "&&", args[4 + offset]) + asserts.equals(env, "touch", args[5 + offset]) + asserts.equals(env, "-a", args[6 + offset]) + + return analysistest.end(env) + +prebuilt_xml_commands_test = analysistest.make( + _test_prebuilt_xml_commands_impl, + attrs = { + "schema": attr.string(), + }, +) + +def _test_prebuilt_xml_commands(): + name = "prebuilt_xml_commands" + test_name = name + "_test" + + prebuilt_xml( + name = name, + src = SRC, + filename = FILENAME, + tags = ["manual"], + ) + prebuilt_xml_commands_test( + name = test_name, + target_under_test = name, + ) + + return test_name + +def _test_prebuilt_xml_commands_dtd(): + name = "prebuilt_xml_commands_dtd" + test_name = name + "_test" + + prebuilt_xml( + name = name, + src = SRC, + schema = DTD_SCHEMA, + filename = FILENAME, + tags = ["manual"], + ) + prebuilt_xml_commands_test( + name = test_name, + schema = "--dtdvalid", + target_under_test = name, + ) + + return test_name + +def _test_prebuilt_xml_commands_xsd(): + name = "prebuilt_xml_commands_xsd" + test_name = name + "_test" + prebuilt_xml( + name = name, + schema = XSD_SCHEMA, + filename = FILENAME, + src = SRC, + tags = ["manual"], + ) + prebuilt_xml_commands_test( + name = test_name, + schema = "--schema", + target_under_test = name, + ) + + return test_name + +def _test_prebuilt_xml_PrebuiltFileInfo_impl(ctx): + env = analysistest.begin(ctx) + target_under_test = analysistest.target_under_test(env) + prebuilt_file_info = target_under_test[PrebuiltFileInfo] + + asserts.equals( + env, + FILENAME, + prebuilt_file_info.filename, + "expected PrebuiltFileInfo filename to be {} but got {}".format(FILENAME, prebuilt_file_info.filename), + ) + + asserts.equals( + env, + SRC, + prebuilt_file_info.src.basename, + "expected PrebuiltFileInfo src to be {} but got {}".format(SRC, prebuilt_file_info.src), + ) + + asserts.equals( + env, + DIR, + prebuilt_file_info.dir, + "expected PrebuiltFileInfo dir to be {} but got {}".format(DIR, prebuilt_file_info.dir), + ) + + return analysistest.end(env) + +prebuilt_xml_PrebuiltFileInfo_test = analysistest.make(_test_prebuilt_xml_PrebuiltFileInfo_impl) + +def _test_prebuilt_xml_PrebuiltFileInfo(): + name = "prebuilt_xml_PrebuiltFileInfo" + test_name = name + "_test" + prebuilt_xml( + name = name, + src = SRC, + filename = FILENAME, + tags = ["manual"], + ) + prebuilt_xml_PrebuiltFileInfo_test( + name = test_name, + target_under_test = name, + ) + + return test_name + +def _test_prebuilt_xml_schema_validation_impl(ctx): + env = analysistest.begin(ctx) + + actions = analysistest.target_actions(env) + target = analysistest.target_under_test(env) + validation_outputs = target.output_groups._validation.to_list() + for action in actions: + for validation_output in validation_outputs: + if validation_output in action.inputs.to_list(): + analysistest.fail( + env, + "%s is a validation action output, but is an input to action %s" % ( + validation_output, + action, + ), + ) + + return analysistest.end(env) + +prebuilt_xml_schema_validation_test = analysistest.make(_test_prebuilt_xml_schema_validation_impl) + +def _test_prebuilt_xml_dtd_schema_validation(): + name = "prebuilt_xml_dtd_schema_validation" + test_name = name + "_test" + prebuilt_xml( + name = name, + src = SRC, + schema = DTD_SCHEMA, + filename = FILENAME, + tags = ["manual"], + ) + prebuilt_xml_schema_validation_test( + name = test_name, + target_under_test = name, + ) + + return test_name + +def _test_prebuilt_xml_xsd_schema_validation(): + name = "prebuilt_xml_xsd_schema_validation" + test_name = name + "_test" + prebuilt_xml( + name = name, + schema = XSD_SCHEMA, + filename = FILENAME, + src = SRC, + tags = ["manual"], + ) + prebuilt_xml_schema_validation_test( + name = test_name, + target_under_test = name, + ) + + return test_name + +def _test_prebuilt_xml_minimal_schema_validation(): + name = "prebuilt_xml_minimal_schema_validation" + test_name = name + "_test" + prebuilt_xml( + name = name, + src = SRC, + filename = FILENAME, + tags = ["manual"], + ) + prebuilt_xml_schema_validation_test( + name = test_name, + target_under_test = name, + ) + + return test_name + +def prebuilt_xml_test_suite(name): + native.test_suite( + name = name, + tests = [ + _test_prebuilt_xml_commands(), + _test_prebuilt_xml_commands_dtd(), + _test_prebuilt_xml_commands_xsd(), + _test_prebuilt_xml_minimal_schema_validation(), + _test_prebuilt_xml_dtd_schema_validation(), + _test_prebuilt_xml_xsd_schema_validation(), + _test_prebuilt_xml_PrebuiltFileInfo(), + ], + ) |