aboutsummaryrefslogtreecommitdiff
path: root/tests/jvm/analysis/util/file_factory/unittests.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/jvm/analysis/util/file_factory/unittests.bzl')
-rw-r--r--tests/jvm/analysis/util/file_factory/unittests.bzl85
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/jvm/analysis/util/file_factory/unittests.bzl b/tests/jvm/analysis/util/file_factory/unittests.bzl
new file mode 100644
index 0000000..cf7a2a4
--- /dev/null
+++ b/tests/jvm/analysis/util/file_factory/unittests.bzl
@@ -0,0 +1,85 @@
+# Copyright 2022 Google LLC. 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.
+
+"""unittests"""
+
+load("//:visibility.bzl", "RULES_KOTLIN")
+load("//kotlin/common/testing:unittest_suites.bzl", "kt_unittest_suites")
+load("//kotlin/jvm/util:file_factory.bzl", "FileFactory")
+load("@bazel_skylib//lib:unittest.bzl", "asserts")
+
+visibility(RULES_KOTLIN)
+
+unittests = kt_unittest_suites.create()
+
+def _base_from_file(ctx, env):
+ base_file = ctx.actions.declare_file("file/base.txt")
+ factory = FileFactory(ctx, base_file)
+
+ _assert_path_equals(ctx, env, "/file/base", factory.base_as_path)
+
+ return [base_file]
+
+unittests.expect_finish(_base_from_file)
+
+def _declare(ctx, env):
+ factory = FileFactory(ctx, "string/base")
+
+ _assert_path_equals(ctx, env, "/string/base", factory.base_as_path)
+
+ a_file = factory.declare_file("a.txt")
+ _assert_path_equals(ctx, env, "/string/basea.txt", a_file.path)
+
+ b_dir = factory.declare_directory("b_dir")
+ _assert_path_equals(ctx, env, "/string/baseb_dir", b_dir.path)
+
+ return [a_file, b_dir]
+
+unittests.expect_finish(_declare)
+
+def _derive(ctx, env):
+ factory = FileFactory(ctx, "")
+
+ # Once
+ factory_once = factory.derive("once")
+ _assert_path_equals(ctx, env, "/once", factory_once.base_as_path)
+
+ # Twice
+ factory_twice = factory_once.derive("/twice")
+ _assert_path_equals(ctx, env, "/once/twice", factory_twice.base_as_path)
+
+unittests.expect_finish(_derive)
+
+def _base_file_without_extension(ctx):
+ base_file = ctx.actions.declare_file(ctx.label.name + "/BUILD")
+ FileFactory(ctx, base_file)
+
+unittests.expect_fail(_base_file_without_extension, "file must have an extension")
+
+def _base_file_from_different_pkg(ctx):
+ mock_file = struct(owner = struct(package = ctx.label.package + "/sub"), extension = "txt")
+ FileFactory(ctx, mock_file)
+
+unittests.expect_fail(_base_file_from_different_pkg, "file must be from ctx package")
+
+def _assert_path_equals(ctx, env, expected, actual):
+ pkg_path = ctx.bin_dir.path + "/" + ctx.label.package
+
+ asserts.equals(
+ env,
+ pkg_path + expected,
+ actual,
+ )
+
+_test, _fail = unittests.close() # @unused