testing: test building a source image from src.rpms
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
parent
e6d201b553
commit
7ebf051043
4 changed files with 44 additions and 4 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
|
||||
.build-container
|
||||
.testprep
|
||||
.validate
|
20
Makefile
20
Makefile
|
@ -2,6 +2,12 @@ SRC := ./BuildSourceImage.sh
|
|||
CTR_IMAGE := localhost/containers/buildsourceimage
|
||||
CTR_ENGINE ?= podman
|
||||
cleanfiles =
|
||||
# these are packages whose src.rpms are very small
|
||||
srpm_urls = \
|
||||
https://archive.kernel.org/centos-vault/7.0.1406/os/Source/SPackages/basesystem-10.0-7.el7.centos.src.rpm \
|
||||
https://archive.kernel.org/centos-vault/7.0.1406/os/Source/SPackages/rootfiles-8.1-11.el7.src.rpm \
|
||||
https://archive.kernel.org/centos-vault/7.0.1406/os/Source/SPackages/centos-bookmarks-7-1.el7.src.rpm
|
||||
srpms = $(addprefix ./.testprep/srpms/,$(notdir $(rpms)))
|
||||
|
||||
all: validate
|
||||
|
||||
|
@ -16,14 +22,20 @@ build-container: .build-container
|
|||
cleanfiles += .build-container
|
||||
.build-container: .validate Dockerfile $(SRC)
|
||||
@echo
|
||||
@echo "Building BuildSourceImage Container"
|
||||
@echo "==> Building BuildSourceImage Container"
|
||||
$(CTR_ENGINE) build --quiet --file Dockerfile --tag $(CTR_IMAGE) . && touch $@
|
||||
|
||||
cleanfiles += .testprep $(srpms)
|
||||
.testprep:
|
||||
@echo "==> Fetching SRPMs for testing against"
|
||||
mkdir -p $@/{srpms,tmp}
|
||||
wget -P $@/srpms/ $(srpm_urls)
|
||||
|
||||
.PHONY: test-integration
|
||||
test-integration: .build-container
|
||||
test-integration: .build-container .testprep
|
||||
@echo
|
||||
@echo "Running integration tests"
|
||||
CTR_IMAGE=$(CTR_IMAGE) CTR_ENGINE=$(CTR_ENGINE) bats test/
|
||||
@echo "==> Running integration tests"
|
||||
CTR_IMAGE=$(CTR_IMAGE) CTR_ENGINE=$(CTR_ENGINE) TMPDIR=$(shell realpath .testprep/tmp) bats test/
|
||||
|
||||
|
||||
clean:
|
||||
|
|
24
test/01-from_rpms.bats
Normal file
24
test/01-from_rpms.bats
Normal file
|
@ -0,0 +1,24 @@
|
|||
#!/usr/bin/env bats -t
|
||||
|
||||
@test "build from RPMS" {
|
||||
d=$(mktemp -d)
|
||||
run $CTR_ENGINE run --rm -v $(pwd)/.testprep/srpms/:/src:ro -v ${d}:/output/ $CTR_IMAGE -s /src
|
||||
[ "$status" -eq 0 ]
|
||||
#echo ${lines[@]}
|
||||
[[ ${lines[0]} =~ "[SrcImg][INFO] calling source collection drivers" ]]
|
||||
# get the number of the last line
|
||||
n=$(expr ${#lines[@]} - 1)
|
||||
[[ ${lines[${n}]} =~ "[SrcImg][INFO] copied to oci:/output:latest-source" ]]
|
||||
|
||||
echo "${d}"
|
||||
[ -f "${d}/index.json" ]
|
||||
[ -f "${d}/oci-layout" ]
|
||||
[ "$(du -b ${d}/index.json | awk '{ print $1 }')" -gt 0 ]
|
||||
[ "$(du -b ${d}/oci-layout | awk '{ print $1 }')" -gt 0 ]
|
||||
|
||||
# let's press that the files are predictable
|
||||
[ "$(find ${d} -type f | wc -l)" -eq 7 ]
|
||||
[ -f "${d}/blobs/sha256/3afb43699ea82a69b16efb215363604d9e4ffe16c9ace7e53df66663847309cf" ]
|
||||
[ -f "${d}/blobs/sha256/7f4a50f05b7bd38017be8396b6320e1d2e6a05af097672e3ed23ef3df2ddeadb" ]
|
||||
[ -f "${d}/blobs/sha256/8f4e610748f8b58a3297ecf78ecc8ff7b6420c3e559e3e20cad8ac178c6fe4e8" ]
|
||||
}
|
Loading…
Reference in a new issue