| """unit tests for paths""" |
| |
| load("@bazel_skylib//lib:partial.bzl", "partial") |
| load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest") |
| load("//lib/private:paths.bzl", "paths") |
| |
| def _relative_file_test_impl(ctx): |
| env = unittest.begin(ctx) |
| |
| asserts.equals( |
| env, |
| "lib/requirements.in", |
| paths.relative_file( |
| "bazel/python/internal/pip/test/lib/requirements.in", |
| "bazel/python/internal/pip/test/requirements.out", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "pip/test/lib/requirements.in", |
| paths.relative_file( |
| "bazel/python/internal/pip/test/lib/requirements.in", |
| "bazel/python/internal/requirements.out", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "bazel/python/internal/pip/test/lib/requirements.in", |
| paths.relative_file( |
| "/bazel/python/internal/pip/test/lib/requirements.in", |
| "/requirements.out", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../requirements.in", |
| paths.relative_file( |
| "bazel/python/internal/pip/test/requirements.in", |
| "bazel/python/internal/pip/test/lib/requirements.in", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../requirements.out", |
| paths.relative_file( |
| "bazel/python/internal/pip/test/requirements.out", |
| "bazel/python/internal/pip/test/lib/requirements.in", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "requirements.out", |
| paths.relative_file( |
| "bazel/python/internal/pip/example/service/requirements.out", |
| "bazel/python/internal/pip/example/service/requirements.in", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../service/requirements.out", |
| paths.relative_file( |
| "bazel/python/internal/pip/example/service/requirements.out", |
| "bazel/python/internal/pip/example/lib/requirements.in", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../lib/bar/requirements.in", |
| paths.relative_file( |
| "bazel/python/internal/pip/example/lib/bar/requirements.in", |
| "bazel/python/internal/pip/example/service/requirements.out", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../example/lib/bar/requirements.in", |
| paths.relative_file( |
| "bazel/python/internal/pip/example/lib/bar/requirements.in", |
| "bazel/python/internal/pip/lib/example/service/requirements.out", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "requirements.in", |
| paths.relative_file( |
| "requirements.in", |
| "requirements.out", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "requirements.in", |
| paths.relative_file( |
| "/bazel/requirements.in", |
| "/bazel/requirements.out", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../requirements.in", |
| paths.relative_file( |
| "/requirements.in", |
| "/bazel/requirements.out", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../../../repo/some/external/repo/short/path.txt", |
| paths.relative_file( |
| "../repo/some/external/repo/short/path.txt", |
| "some/main/repo/short/path.txt", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../../../../../../repo/some/external/repo/short/path.txt", |
| paths.relative_file( |
| "../../../../repo/some/external/repo/short/path.txt", |
| "some/main/repo/short/path.txt", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../../repo/some/external/repo/short/path.txt", |
| paths.relative_file( |
| "repo/some/external/repo/short/path.txt", |
| "../some/main/repo/short/path.txt", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../../repo/some/external/repo/short/path.txt", |
| paths.relative_file( |
| "repo/some/external/repo/short/path.txt", |
| "../../../../some/main/repo/short/path.txt", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../../../repo/some/external/repo/short/path.txt", |
| paths.relative_file( |
| "../../repo/some/external/repo/short/path.txt", |
| "../some/main/repo/short/path.txt", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../../../../../repo/some/external/repo/short/path.txt", |
| paths.relative_file( |
| "../../../../repo/some/external/repo/short/path.txt", |
| "../some/main/repo/short/path.txt", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../../repo/some/external/repo/short/path.txt", |
| paths.relative_file( |
| "../repo/some/external/repo/short/path.txt", |
| "../some/main/repo/short/path.txt", |
| ), |
| ) |
| |
| asserts.equals( |
| env, |
| "../../../../repo/some/external/repo/short/path.txt", |
| paths.relative_file( |
| "../../../repo/some/external/repo/short/path.txt", |
| "../../../some/main/repo/short/path.txt", |
| ), |
| ) |
| |
| return unittest.end(env) |
| |
| def _manifest_path_test_impl(ctx): |
| env = unittest.begin(ctx) |
| asserts.equals(env, "bazel_skylib/LICENSE", paths.to_manifest_path(ctx, ctx.file.f1)) |
| asserts.equals(env, "aspect_bazel_lib/lib/paths.bzl", paths.to_manifest_path(ctx, ctx.file.f2)) |
| return unittest.end(env) |
| |
| def _workspace_path_test_impl(ctx): |
| env = unittest.begin(ctx) |
| asserts.equals(env, "LICENSE", paths.to_workspace_path(ctx.file.f1)) |
| asserts.equals(env, "lib/paths.bzl", paths.to_workspace_path(ctx.file.f2)) |
| return unittest.end(env) |
| |
| def _output_relative_path_test_impl(ctx): |
| env = unittest.begin(ctx) |
| asserts.equals(env, "../../../external/bazel_skylib/LICENSE", paths.to_output_relative_path(ctx.file.f1)) |
| asserts.equals(env, "../../../lib/paths.bzl", paths.to_output_relative_path(ctx.file.f2)) |
| asserts.equals(env, "external/external_test_repo/test_a", paths.to_output_relative_path(ctx.file.f3)) |
| asserts.equals(env, "lib/tests/template.txt", paths.to_output_relative_path(ctx.file.f4)) |
| return unittest.end(env) |
| |
| _ATTRS = { |
| # source file in external repo |
| "f1": attr.label(allow_single_file = True, default = "@bazel_skylib//:LICENSE"), |
| # source file in current repo |
| "f2": attr.label(allow_single_file = True, default = "//lib:paths.bzl"), |
| # output file in external repo |
| "f3": attr.label(allow_single_file = True, default = "@external_test_repo//:test_a"), |
| # output file in current repo |
| "f4": attr.label(allow_single_file = True, default = "//lib/tests:gen_template"), |
| } |
| |
| relative_file_test = unittest.make(_relative_file_test_impl) |
| manifest_path_test = unittest.make(_manifest_path_test_impl, attrs = _ATTRS) |
| output_relative_path_test = unittest.make(_output_relative_path_test_impl, attrs = _ATTRS) |
| workspace_path_test = unittest.make(_workspace_path_test_impl, attrs = _ATTRS) |
| |
| def paths_test_suite(): |
| unittest.suite( |
| "paths_tests", |
| partial.make(relative_file_test, timeout = "short"), |
| partial.make(manifest_path_test, timeout = "short"), |
| partial.make(output_relative_path_test, timeout = "short"), |
| partial.make(workspace_path_test, timeout = "short"), |
| ) |