aboutsummaryrefslogtreecommitdiff
path: root/tests/default_info_subject/default_info_subject_tests.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/default_info_subject/default_info_subject_tests.bzl')
-rw-r--r--tests/default_info_subject/default_info_subject_tests.bzl126
1 files changed, 126 insertions, 0 deletions
diff --git a/tests/default_info_subject/default_info_subject_tests.bzl b/tests/default_info_subject/default_info_subject_tests.bzl
new file mode 100644
index 0000000..e6cfc10
--- /dev/null
+++ b/tests/default_info_subject/default_info_subject_tests.bzl
@@ -0,0 +1,126 @@
+# Copyright 2023 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.
+
+"""Tests for DefaultInfoSubject."""
+
+load("//lib:analysis_test.bzl", "analysis_test")
+load("//lib:test_suite.bzl", "test_suite")
+load("//lib:truth.bzl", "matching", "subjects")
+load("//lib:util.bzl", "util")
+load("//tests:test_util.bzl", "test_util")
+
+_tests = []
+
+def _default_info_subject_test(name):
+ util.helper_target(
+ _simple,
+ name = name + "_subject",
+ )
+ analysis_test(
+ name = name,
+ target = name + "_subject",
+ impl = _default_info_subject_test_impl,
+ )
+
+def _default_info_subject_test_impl(env, target):
+ fake_meta = test_util.fake_meta(env)
+ actual = subjects.default_info(
+ target[DefaultInfo],
+ meta = fake_meta,
+ )
+
+ actual.runfiles().contains_predicate(
+ matching.str_matches("default_runfile.txt"),
+ )
+ test_util.expect_no_failures(env, fake_meta, "check default runfiles success")
+
+ actual.runfiles().contains_predicate(
+ matching.str_matches("not-present.txt"),
+ )
+ test_util.expect_failures(
+ env,
+ fake_meta,
+ "check default runfiles failure",
+ "not-present.txt",
+ )
+
+ actual.data_runfiles().contains_predicate(
+ matching.str_matches("data_runfile.txt"),
+ )
+ test_util.expect_no_failures(env, fake_meta, "check data runfiles success")
+
+ actual.data_runfiles().contains_predicate(
+ matching.str_matches("not-present.txt"),
+ )
+ test_util.expect_failures(
+ env,
+ fake_meta,
+ "check data runfiles failure",
+ "not-present.txt",
+ )
+
+ actual.default_outputs().contains_predicate(
+ matching.file_path_matches("default_output.txt"),
+ )
+ test_util.expect_no_failures(env, fake_meta, "check executable success")
+
+ actual.default_outputs().contains_predicate(
+ matching.file_path_matches("not-present.txt"),
+ )
+ test_util.expect_failures(
+ env,
+ fake_meta,
+ "check executable failure",
+ "not-present.txt",
+ )
+
+ actual.executable().path().contains("subject")
+ test_util.expect_no_failures(env, fake_meta, "check executable success")
+
+ actual.executable().path().contains("not-present")
+ test_util.expect_failures(
+ env,
+ fake_meta,
+ "check executable failure",
+ "not-present",
+ )
+ actual.runfiles_manifest().path().contains("MANIFEST")
+ test_util.expect_no_failures(env, fake_meta, "check runfiles_manifest success")
+
+_tests.append(_default_info_subject_test)
+
+def default_info_subject_test_suite(name):
+ test_suite(
+ name = name,
+ tests = _tests,
+ )
+
+def _simple_impl(ctx):
+ executable = ctx.actions.declare_file(ctx.label.name)
+ ctx.actions.write(executable, "")
+ return [DefaultInfo(
+ files = depset([ctx.file.default_output]),
+ default_runfiles = ctx.runfiles([ctx.file.default_runfile, executable]),
+ data_runfiles = ctx.runfiles([ctx.file.data_runfile]),
+ executable = executable,
+ )]
+
+_simple = rule(
+ implementation = _simple_impl,
+ attrs = {
+ "default_output": attr.label(default = "default_output.txt", allow_single_file = True),
+ "default_runfile": attr.label(default = "default_runfile.txt", allow_single_file = True),
+ "data_runfile": attr.label(default = "data_runfile.txt", allow_single_file = True),
+ },
+)