aboutsummaryrefslogtreecommitdiff
path: root/rules/prebuilt_xml_test.bzl
diff options
context:
space:
mode:
authorAlix <agespino@google.com>2022-06-28 18:17:50 +0000
committerAlix <agespino@google.com>2022-09-22 19:53:15 +0000
commit502c21080409917d3509698677e007dc022af7d9 (patch)
treec0c2f97f917839bd93b6f183f9a462a87bfc8fe7 /rules/prebuilt_xml_test.bzl
parent2a034b851ae5a41f2630a11144a65b51e4be4710 (diff)
downloadbazel-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.bzl251
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(),
+ ],
+ )