| # Copyright 2021 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. |
| |
| load("@bazel_skylib//rules:common_settings.bzl", "string_flag") |
| load("@rules_python//python:defs.bzl", "py_test") |
| load("//pkg:install.bzl", "pkg_install") |
| load("//pkg:mappings.bzl", "pkg_attributes", "pkg_files", "pkg_mkdirs", "pkg_mklink") |
| load("//tests/util:defs.bzl", "directory", "fake_artifact") |
| |
| package(default_applicable_licenses = ["//:license"]) |
| |
| py_test( |
| name = "install_test", |
| srcs = ["test.py"], |
| args = ["-v"], |
| data = [ |
| ":test_installer", |
| ":test_installer_flag", |
| "@mappings_test_external_repo//pkg:install_cross_repo", |
| ], |
| imports = ["../.."], |
| main = "test.py", |
| tags = [ |
| # TODO(nacl): investigate this. See also |
| # https://buildkite.com/bazel/rules-pkg/builds/961#992dbe09-7e4b-4e34-91b6-491120476ed3 |
| "no-windows", |
| # TODO(nacl): consider enabling this for testing on Linux. |
| #"requires-fakeroot" |
| ], |
| deps = [ |
| "//pkg/private:manifest", |
| "@rules_python//python/runfiles", |
| ], |
| ) |
| |
| pkg_install( |
| name = "test_installer", |
| srcs = [ |
| ":artifact-in-owned-dir", |
| ":artifact-in-unowned-dir", |
| ":dirs", |
| ":fake_lib_link", |
| ":fake_so_in_lib", |
| ":generate_tree_pkg_files", |
| ], |
| ) |
| |
| fake_artifact( |
| name = "artifact", |
| ) |
| |
| pkg_files( |
| name = "artifact-in-owned-dir", |
| srcs = ["artifact"], |
| attributes = pkg_attributes(mode = "0700"), |
| prefix = "owned-dir", |
| ) |
| |
| pkg_files( |
| name = "artifact-in-unowned-dir", |
| srcs = ["artifact"], |
| attributes = pkg_attributes(mode = "0755"), |
| prefix = "unowned-dir", |
| ) |
| |
| pkg_mkdirs( |
| name = "dirs", |
| dirs = [ |
| "empty-owned-dir", |
| "owned-dir", |
| ], |
| ) |
| |
| directory( |
| name = "generate_tree", |
| contents = "hello there", |
| filenames = [ |
| # buildifier: don't sort |
| "b/e", |
| "a/a", |
| "b/c/d", |
| "b/d", |
| "a/b/c", |
| ], |
| ) |
| |
| pkg_files( |
| name = "generate_tree_pkg_files", |
| srcs = [":generate_tree"], |
| attributes = pkg_attributes( |
| mode = "640", |
| ), |
| ) |
| |
| fake_artifact( |
| name = "fake.so.1.2.3", |
| ) |
| |
| pkg_files( |
| name = "fake_so_in_lib", |
| srcs = [":fake.so.1.2.3"], |
| prefix = "/lib", |
| ) |
| |
| pkg_mklink( |
| name = "fake_lib_link", |
| link_name = "/lib/fake.so.1", |
| target = "fake.so.1.2.3", |
| ) |
| |
| string_flag( |
| name = "install_dir", |
| build_setting_default = "FromFlag", |
| ) |
| |
| pkg_install( |
| name = "test_installer_flag", |
| srcs = [ |
| ":artifact-in-owned-dir", |
| ], |
| destdir_flag = ":install_dir", |
| ) |