diff options
Diffstat (limited to 'tests/rpm/BUILD')
-rw-r--r-- | tests/rpm/BUILD | 423 |
1 files changed, 0 insertions, 423 deletions
diff --git a/tests/rpm/BUILD b/tests/rpm/BUILD deleted file mode 100644 index b1dd70b..0000000 --- a/tests/rpm/BUILD +++ /dev/null @@ -1,423 +0,0 @@ -# Copyright 2020 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. -# -*- coding: utf-8 -*- - -load("@bazel_skylib//rules:build_test.bzl", "build_test") -load("@bazel_skylib//rules:diff_test.bzl", "diff_test") -load("@rules_python//python:defs.bzl", "py_library", "py_test") -load( - "//pkg:mappings.bzl", - "pkg_attributes", - "pkg_filegroup", - "pkg_files", - "pkg_mkdirs", - "pkg_mklink", -) -load("//pkg:rpm.bzl", "pkg_rpm") -load("analysis_tests.bzl", "analysis_tests") -load("toolchain_tests.bzl", "create_toolchain_analysis_tests") - -############################################################################ -# analysis tests -############################################################################ - -package(default_applicable_licenses = ["//:license"]) - -analysis_tests(name = "analysis_tests") - -create_toolchain_analysis_tests() - -exports_files( - ["template-test.spec.tpl"], - visibility = [":__subpackages__"], -) - -############################################################################ -# pkg_filegroups for testing -############################################################################ - -filegroup( - name = "ars", - srcs = [ - "//tests:testdata/a.ar", - "//tests:testdata/a_ab.ar", - "//tests:testdata/a_b.ar", - "//tests:testdata/a_b_ab.ar", - "//tests:testdata/ab.ar", - "//tests:testdata/b.ar", - "//tests:testdata/empty.ar", - ], -) - -pkg_files( - name = "ars_pf", - srcs = [ - ":ars", - ], - attributes = pkg_attributes( - group = "root", - mode = "0755", - user = "root", - ), - prefix = "/test", -) - -genrule( - name = "config_empty", - outs = ["config.txt"], - cmd = "touch $@", -) - -pkg_files( - name = "config_file", - srcs = [":config_empty"], - attributes = pkg_attributes( - group = "root", - mode = "0644", - rpm_filetag = "%config(missingok, noreplace)", - user = "root", - ), -) - -pkg_mkdirs( - name = "var_log_foo", - attributes = pkg_attributes( - group = "root", - mode = "0755", - user = "root", - ), - dirs = ["/var/log/foo"], -) - -pkg_mklink( - name = "test_links", - attributes = pkg_attributes( - group = "root", - mode = "0777", - user = "root", - ), - link_name = "/usr/bin/link-name", - target = "/usr/bin/link-target", -) - -pkg_filegroup( - name = "test_pfg", - # Keep this list in sync with the values of "srcs" in "test_rpm_direct", - # below - srcs = [ - ":ars_pf", - ":config_file", - ":test_links", - ":var_log_foo", - ], -) - -############################################################################ -# Test RPMs -############################################################################ - -pkg_rpm( - name = "test_rpm", - srcs = [ - ":test_pfg", - ], - architecture = "noarch", - conflicts = ["not-a-test"], - description = """pkg_rpm test rpm description""", - license = "Apache 2.0", - post_scriptlet = """echo post""", - postun_scriptlet = """echo postun""", - pre_scriptlet = """echo pre""", - preun_scriptlet = """echo preun""", - provides = ["test"], - release = "2222", - requires = ["test-lib > 1.0"], - requires_contextual = {"preun": ["bash"]}, - spec_template = "template-test.spec.tpl", - summary = "pkg_rpm test rpm summary", - version = "1.1.1", -) - -# Just like the above one, except the compression is changed. -pkg_rpm( - name = "test_rpm_bzip2", - srcs = [ - ":test_pfg", - ], - architecture = "noarch", - binary_payload_compression = "w2.bzdio", - conflicts = ["not-a-test"], - description = """pkg_rpm test rpm description""", - license = "Apache 2.0", - post_scriptlet = """echo post""", - postun_scriptlet = """echo postun""", - pre_scriptlet = """echo pre""", - preun_scriptlet = """echo preun""", - provides = ["test"], - release = "2222", - requires = ["test-lib > 1.0"], - requires_contextual = {"preun": ["bash"]}, - spec_template = "template-test.spec.tpl", - summary = "pkg_rpm test rpm summary", - version = "1.1.1", -) - -# Like the first one, except `srcs` is now passed in without using a -# pkg_filegroup. -pkg_rpm( - name = "test_rpm_direct", - srcs = [ - ":ars_pf", - ":config_file", - ":test_links", - ":var_log_foo", - ], - architecture = "noarch", - conflicts = ["not-a-test"], - description = """pkg_rpm test rpm description""", - license = "Apache 2.0", - post_scriptlet = """echo post""", - postun_scriptlet = """echo postun""", - pre_scriptlet = """echo pre""", - preun_scriptlet = """echo preun""", - provides = ["test"], - release = "2222", - requires = ["test-lib > 1.0"], - requires_contextual = {"preun": ["bash"]}, - spec_template = "template-test.spec.tpl", - summary = "pkg_rpm test rpm summary", - version = "1.1.1", -) - -############################################################################ -# Test RPM metadata -- used to verify RPM contents in tests -############################################################################ - -# Emit a CSV file providing a manifest providing the expected RPM contents -genrule( - name = "test_rpm_manifest", - srcs = [ - ":ars", - ":config_file", - ], - outs = ["manifest.csv"], - # Keep the header (the first line echo'd below) in sync with - # rpm_queryformat_fieldnames in pkg_rpm_basic_test.py - cmd = """ - echo 'path,digest,user,group,mode,fflags,symlink' > $@ - for f in $(locations :ars); do - # Destination path - ( - echo -n /test/$$(basename $$f), - # Hash - $(execpath //tests/util:md5) $$f | tr '\\n' , - # User,Group,Mode,Fflags (fflags not provided) - echo -n 'root,root,100755,' - # Symlink destination (not provided) - echo , - ) >> $@ - done - # Config file - for f in $(location :config_file); do - ( - echo -n /$$(basename $$f), - $(execpath //tests/util:md5) $$f | tr '\\n' , - # User,Group,Mode,Fflags (fflags "cmn" = config + missingok + noreplace) - echo -n 'root,root,100644,cmn' - # Symlink destination (not provided) - echo , - ) >> $@ - done - # Directory (has no hash) - ( - echo -n /var/log/foo, - # No hash (beginning), fflags (end), or symlink destination (end) - echo ,root,root,40755,, - ) >> $@ - - # Symlink (has no hash) - ( - echo -n /usr/bin/link-name, - # No hash (beginning), or fflags (second-to-last) - echo ,root,root,120777,,/usr/bin/link-target - ) >> $@ - """, - tools = ["//tests/util:md5"], -) - -genrule( - name = "test_rpm_metadata", - srcs = [], - outs = [ - "conflicts.csv", - "provides.csv", - "requires.csv", - ], - # In the below, we don't use the "," separator for everything, because the - # query tags used to get the associated dependency types - # (e.g. %{REQUIREFLAGS:deptype}) itself uses commas. This makes it so the test - # doesn't have to rely on knowing the number of fields in each CSV file. - cmd = """ - ( - echo 'capability:sense' - echo 'not-a-test:manual' - ) > $(RULEDIR)/conflicts.csv - ( - # NOTE: excludes the "self-require" (we did nothing special to make it - # appear) - - echo 'capability:sense' - echo 'test:manual' - echo 'config(test_rpm) = 1.1.1-2222:config' - ) > $(RULEDIR)/provides.csv - ( - # NOTE: excludes 'rpmlib' requires that may be version-dependent - echo 'capability:sense' - # Common, automatically generated - echo '/bin/sh:pre,interp' - echo '/bin/sh:post,interp' - echo '/bin/sh:preun,interp' - echo '/bin/sh:postun,interp' - # Hand-specified, specific dependencies - echo 'bash:preun' - # Hand-specified - echo 'test-lib > 1.0:manual' - echo 'config(test_rpm) = 1.1.1-2222:config' - ) > $(RULEDIR)/requires.csv - """, -) - -# One cannot simply pass the output of pkg_rpm as runfiles content (#161). This -# seems to be the easiest way around this problem. -sh_library( - name = "pkg_rpm_basic_test_data", - testonly = True, - srcs = [ - ":test_rpm", - ":test_rpm_bzip2", - ":test_rpm_direct", - ":test_rpm_manifest", - ":test_rpm_metadata", - ], -) - -############################################################################ -# Confirm that the %dir tag is being applied properly (#473) -############################################################################ - -pkg_mkdirs( - name = "dirtest_dirs", - attributes = pkg_attributes(mode = "0755"), - dirs = [ - "dir", - ], -) - -pkg_files( - name = "dirtest_file", - srcs = [ - ":config_empty", - ], - attributes = pkg_attributes(mode = "0644"), - prefix = "dir", -) - -pkg_rpm( - name = "test_rpm_dirs", - srcs = [ - # Do not sort. Order important for testing. - ":dirtest_file", - ":dirtest_dirs", - ], - architecture = "noarch", - description = """pkg_rpm test rpm description""", - license = "Apache 2.0", - release = "2222", - spec_template = "template-test.spec.tpl", - summary = "pkg_rpm test rpm summary", - version = "1.1.1", -) - -genrule( - name = "test_rpm_dirs_contents", - srcs = [":test_rpm_dirs"], - outs = [":test_rpm_dirs_contents.txt"], - cmd = """ - # pkg_rpm emits two outputs - RPMS=($(SRCS)) - rpm -qp --queryformat '[%{FILEMODES:perms} %{FILENAMES}\n]' $${RPMS[0]} > $@ - """, -) - -diff_test( - name = "test_rpm_dirs_contents_golden_test", - file1 = ":test_rpm_dirs_contents", - file2 = "test_rpm_dirs_contents.txt.golden", -) - -############################################################################ -# Common tests -############################################################################ - -py_library( - name = "rpm_util", - srcs = ["rpm_util.py"], - imports = ["../.."], - visibility = [":__subpackages__"], -) - -py_test( - name = "make_rpm_test", - srcs = ["make_rpm_test.py"], - python_version = "PY3", - srcs_version = "PY3", - deps = [ - "//pkg:make_rpm_lib", - ], -) - -# RPM content verification tests -py_test( - name = "pkg_rpm_basic_test", - srcs = ["pkg_rpm_basic_test.py"], - data = [":pkg_rpm_basic_test_data"], - python_version = "PY3", - tags = [ - "no_windows", # Windows doesn't have rpm(8) or rpmbuild(8) - ], - deps = [ - ":rpm_util", - "@rules_python//python/runfiles", - ], -) - -# Smoke test for defaults -pkg_rpm( - name = "test_rpm_default_template", - testonly = True, - srcs = [ - ":test_pfg", - ], - architecture = "noarch", - description = """pkg_rpm test rpm description""", - license = "Apache 2.0", - release = "2222", - summary = "pkg_rpm test rpm summary", - version = "1.1.1", -) - -build_test( - name = "pkg_rpm_smoke", - targets = [":test_rpm_default_template"], -) |