load("@aspect_bazel_lib_host//:defs.bzl", "host") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") load("@bazel_skylib//rules:copy_file.bzl", "copy_file") load("@bazel_skylib//rules:write_file.bzl", "write_file") load("@buildifier_prebuilt//:rules.bzl", "buildifier") load("@gazelle//:def.bzl", "DEFAULT_LANGUAGES", "gazelle", "gazelle_binary") load("//lib:diff_test.bzl", "diff_test") load("//lib:tar.bzl", "mtree_spec") load("//lib:testing.bzl", "assert_contains") load("//lib:write_source_files.bzl", "write_source_files") load("//lib:yq.bzl", "yq") # gazelle:prefix github.com/aspect-build/bazel-lib gazelle_binary( name = "gazelle_bin", languages = select({ # TODO: under bzlmod we get go linking errors when adding # the skylib gazelle plugin. # https://github.com/bazelbuild/rules_go/issues/1877 "@aspect_bazel_lib//lib:bzlmod": DEFAULT_LANGUAGES, "//conditions:default": DEFAULT_LANGUAGES + [ "@bazel_skylib_gazelle_plugin//bzl", ], }), ) gazelle( name = "gazelle", gazelle = "gazelle_bin", mode = "fix", ) gazelle( name = "gazelle.check", gazelle = "gazelle_bin", mode = "diff", ) gazelle( name = "gazelle_update_repos", args = [ "-build_file_proto_mode=disable_global", "-from_file=go.mod", "-to_macro=deps.bzl%go_dependencies", "-prune", ], command = "update-repos", ) buildifier( name = "buildifier", exclude_patterns = ["./.git/*"], lint_mode = "fix", mode = "fix", tags = ["manual"], # tag as manual so windows ci does not build it by default ) buildifier( name = "buildifier.check", exclude_patterns = ["./.git/*"], lint_mode = "warn", mode = "diff", tags = ["manual"], # tag as manual so windows ci does not build it by default ) alias( name = "format", actual = "//tools/format", tags = ["manual"], # tag as manual so windows ci does not build it by default ) # write_source_files() to a git ignored subdirectory of the root genrule( name = "write_source_file_root", outs = ["write_source_file-root_directory/test.txt"], cmd = "mkdir -p $$(dirname $@) && echo 'test' > $@", visibility = ["//visibility:private"], ) write_source_files( name = "write_source_file_root-test", diff_test = False, files = { "test-out/dist/write_source_file_root-test/test.txt": ":write_source_file_root", "test-out/dist/write_source_file_root-test_b/test.txt": ":write_source_file_root", }, ) # Test that yq works in the root package yq( name = "yq_root-test", srcs = ["//lib/tests/yq:a.yaml"], expression = ".", ) # Test case: diff_test with a file in a directory prefixed with "external" # stamped in the root package write_file( name = "file_in_external_prefixed_dir", out = "external-dir/foo.txt", content = ["foo"], ) copy_file( name = "copy_of_file_in_external_prefixed_dir", src = "external-dir/foo.txt", out = "foo_copy.txt", ) diff_test( name = "case_file_has_external_prefix", file1 = "external-dir/foo.txt", file2 = "foo_copy.txt", ) assert_contains( name = "bazel_version_test", actual = ".bazelversion", expected = str(host.bazel_version), ) bzl_library( name = "deps", srcs = ["deps.bzl"], visibility = ["//visibility:public"], deps = ["@gazelle//:deps"], ) # Test case for mtree_spec: Ensure that multiple entries at the root directory are handled correctly (bug #851) # See lib/tests/tar/BUILD.bazel for why this is here. write_file( name = "tar_test13_main", out = "13project/__main__.py", content = ["__main__.py"], ) write_file( name = "tar_test13_bin", out = "13project_bin", content = ["project_bin"], ) mtree_spec( name = "tar_test13_mtree_unsorted", srcs = [ ":tar_test13_bin", ":tar_test13_main", ], ) # NOTE: On some systems, the mtree_spec output can have a different order. # To make the test less brittle, we sort the mtree output and replace the BINDIR with a constant placeholder genrule( name = "tar_test13_mtree", srcs = [":tar_test13_mtree_unsorted"], outs = ["actual13.mtree"], cmd = "sort $< | sed 's#$(BINDIR)#{BINDIR}#' >$@", ) diff_test( name = "tar_test13", file1 = "tar_test13_mtree", file2 = "//lib/tests/tar:expected13.mtree", )