2
0
Fork 0
mirror of https://github.com/bazel-contrib/bazel-lib synced 2024-11-30 01:41:21 +00:00
bazel-lib/lib/tests/copy_to_directory/BUILD.bazel

183 lines
4 KiB
Python
Raw Normal View History

"tests for copy_to_directory"
load("//lib:diff_test.bzl", "diff_test")
load("//lib:copy_file.bzl", "copy_file")
load("//lib:copy_to_directory.bzl", "copy_to_directory")
[
copy_file(
name = "%s" % d,
src = "dir_%s" % d,
out = "%s" % d,
is_directory = True,
)
for d in [
"a",
"b",
"expected_1",
"expected_2",
"expected_3",
"expected_4",
"expected_5",
"expected_7",
"expected_8",
]
]
case_srcs = [
":a",
":b",
":c",
":d",
":e/e",
":e/e2",
"//lib/tests/copy_to_directory/f/f2:f",
"//lib/tests/copy_to_directory/f/f2:f2",
"@external_test_repo//:test_a",
"@external_test_repo//:test_b",
"@external_test_repo//:test_c",
"@external_test_repo//:test_d",
]
# Case 1: default settings (with external repo)
copy_to_directory(
name = "case_1",
srcs = case_srcs,
include_external_repositories = ["external_test_repo"],
)
diff_test(
name = "case_1_test",
file1 = "case_1",
file2 = ":expected_1",
)
# Case 2: replace_prefixes (with external repo)
copy_to_directory(
name = "case_2",
srcs = case_srcs,
include_external_repositories = ["external_test_repo"],
replace_prefixes = {
# merge a, b, c, d into a new/abcd dest folder
"a": "new/abcd",
"b": "//new///abcd////",
"c": "new/abcd/c",
"d": "////new/////abcd////d",
# put e into new/e except for e/e2 which goes into new/e2
"e": "new/e",
"e/e2": "new/e2/e2",
# f/f2/f => new/ff and f/f2/f2 => new/f2/f2
"f/f2/": "////new/////f",
"f/f2/f2": "////new/////f2///f2",
# flatten test_a & test_b to the root
"test_a": "",
"test_b": "",
# some paths that won't match
"a/": "wont_match_a_is_terminal_path",
"a/a2": "wont_match_since_a2_is_in_a_tree_artifact",
},
)
diff_test(
name = "case_2_test",
file1 = "case_2",
file2 = ":expected_2",
)
# Case 3: no root_paths (with external repo)
copy_to_directory(
name = "case_3",
srcs = case_srcs,
include_external_repositories = ["external_test_repo"],
root_paths = [],
)
diff_test(
name = "case_3_test",
file1 = "case_3",
file2 = ":expected_3",
)
# Case 4: no root_paths + replace_prefixes (with external repo)
copy_to_directory(
name = "case_4",
srcs = case_srcs,
include_external_repositories = ["external_test_repo"],
replace_prefixes = {
# strip lib/tests from paths
"lib/tests/": "",
# except for a few which should match due to longest match wins
"lib/tests/copy_to_directory/a": "lib/other/copy_to_directory",
"lib/tests/copy_to_directory/c": "lib/other/copy_to_directory/c",
},
root_paths = [],
)
diff_test(
name = "case_4_test",
file1 = "case_4",
file2 = ":expected_4",
)
# Case 5: custom root packages (with external repo)
copy_to_directory(
name = "case_5",
srcs = case_srcs,
include_external_repositories = ["external_test_repo"],
root_paths = [
package_name(),
"%s/e" % package_name(),
"%s/f" % package_name(),
],
)
diff_test(
name = "case_5_test",
file1 = "case_5",
file2 = ":expected_5",
)
# Case 6: directory used in a test's runfiles
copy_to_directory(
name = "case_6",
srcs = case_srcs,
include_external_repositories = ["external_test_repo"],
)
sh_test(
name = "case_6_test",
srcs = ["case6.sh"],
data = ["case_6"],
)
# Case 7: default settings
copy_to_directory(
name = "case_7",
srcs = case_srcs,
)
diff_test(
name = "case_7_test",
file1 = "case_7",
file2 = ":expected_7",
)
# Case 8: exclude prefixes
copy_to_directory(
name = "case_8",
srcs = case_srcs,
exclude_prefixes = [
# exclude a & b
"a",
"b",
# this partial match should exclude all of e
"e/e",
],
)
diff_test(
name = "case_8_test",
file1 = "case_8",
file2 = ":expected_8",
)