mirror of
https://github.com/containers/skopeo.git
synced 2026-07-14 13:48:32 +00:00
This patch will allow commands like buildah run $ctr ls -lZ / To work correctly. Need to update vendor of urfave cli. Also changed all commands to no longer accept global options after the COMMAND. Single boolean options can now be passed together. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com> Closes: #493 Approved by: rhatdan
265 lines
9.1 KiB
Bash
265 lines
9.1 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers
|
|
|
|
@test "bud-from-scratch" {
|
|
target=scratch-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} ${TESTSDIR}/bud/from-scratch
|
|
cid=$(buildah from ${target})
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-from-multiple-files-one-from" {
|
|
target=scratch-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -f ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.scratch -f ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.nofrom
|
|
cid=$(buildah from ${target})
|
|
root=$(buildah mount ${cid})
|
|
cmp $root/Dockerfile1 ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.scratch
|
|
cmp $root/Dockerfile2.nofrom ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.nofrom
|
|
run test -s $root/etc/passwd
|
|
[ "$status" -ne 0 ]
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
|
|
target=alpine-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -f ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.alpine -f ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.nofrom
|
|
cid=$(buildah from ${target})
|
|
root=$(buildah mount ${cid})
|
|
cmp $root/Dockerfile1 ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.alpine
|
|
cmp $root/Dockerfile2.nofrom ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.nofrom
|
|
run test -s $root/etc/passwd
|
|
[ "$status" -eq 0 ]
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-from-multiple-files-two-froms" {
|
|
target=scratch-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -f ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.scratch -f ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.withfrom
|
|
cid=$(buildah from ${target})
|
|
root=$(buildah mount ${cid})
|
|
cmp $root/Dockerfile1 ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.scratch
|
|
cmp $root/Dockerfile2.withfrom ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.withfrom
|
|
run test -s $root/etc/passwd
|
|
[ "$status" -ne 0 ]
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
|
|
target=alpine-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -f ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.alpine -f ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.withfrom
|
|
cid=$(buildah from ${target})
|
|
root=$(buildah mount ${cid})
|
|
cmp $root/Dockerfile1 ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.alpine
|
|
cmp $root/Dockerfile2.withfrom ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.withfrom
|
|
run test -s $root/etc/passwd
|
|
[ "$status" -eq 0 ]
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-preserve-subvolumes" {
|
|
# This Dockerfile needs us to be able to handle a working RUN instruction.
|
|
if ! which runc ; then
|
|
skip
|
|
fi
|
|
target=volume-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} ${TESTSDIR}/bud/preserve-volumes
|
|
cid=$(buildah from ${target})
|
|
root=$(buildah mount ${cid})
|
|
test -s $root/vol/subvol/subsubvol/subsubvolfile
|
|
run test -s $root/vol/subvol/subvolfile
|
|
[ "$status" -ne 0 ]
|
|
test -s $root/vol/volfile
|
|
test -s $root/vol/Dockerfile
|
|
test -s $root/vol/Dockerfile2
|
|
run test -s $root/vol/anothervolfile
|
|
[ "$status" -ne 0 ]
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-http-Dockerfile" {
|
|
starthttpd ${TESTSDIR}/bud/from-scratch
|
|
target=scratch-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -f http://0.0.0.0:${HTTP_SERVER_PORT}/Dockerfile .
|
|
stophttpd
|
|
cid=$(buildah from ${target})
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-http-context-with-Dockerfile" {
|
|
starthttpd ${TESTSDIR}/bud/http-context
|
|
target=scratch-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} http://0.0.0.0:${HTTP_SERVER_PORT}/context.tar
|
|
stophttpd
|
|
cid=$(buildah from ${target})
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-http-context-dir-with-Dockerfile-pre" {
|
|
starthttpd ${TESTSDIR}/bud/http-context-subdir
|
|
target=scratch-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -f context/Dockerfile http://0.0.0.0:${HTTP_SERVER_PORT}/context.tar
|
|
stophttpd
|
|
cid=$(buildah from ${target})
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-http-context-dir-with-Dockerfile-post" {
|
|
starthttpd ${TESTSDIR}/bud/http-context-subdir
|
|
target=scratch-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -f context/Dockerfile http://0.0.0.0:${HTTP_SERVER_PORT}/context.tar
|
|
stophttpd
|
|
cid=$(buildah from ${target})
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-git-context" {
|
|
# We need git and ssh to be around to handle cloning a repository.
|
|
if ! which git ; then
|
|
skip
|
|
fi
|
|
if ! which ssh ; then
|
|
skip
|
|
fi
|
|
target=giturl-image
|
|
# Any repo should do, but this one is small and is FROM: scratch.
|
|
gitrepo=git://github.com/projectatomic/nulecule-library
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} "${gitrepo}"
|
|
cid=$(buildah from ${target})
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-github-context" {
|
|
target=github-image
|
|
# Any repo should do, but this one is small and is FROM: scratch.
|
|
gitrepo=github.com/projectatomic/nulecule-library
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} "${gitrepo}"
|
|
cid=$(buildah from ${target})
|
|
buildah rm ${cid}
|
|
buildah --debug=false images -q
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-additional-tags" {
|
|
target=scratch-image
|
|
target2=another-scratch-image
|
|
target3=so-many-scratch-images
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -t ${target2} -t ${target3} ${TESTSDIR}/bud/from-scratch
|
|
run buildah --debug=false images
|
|
[ "$status" -eq 0 ]
|
|
cid=$(buildah from ${target})
|
|
buildah rm ${cid}
|
|
cid=$(buildah from library/${target2})
|
|
buildah rm ${cid}
|
|
cid=$(buildah from ${target3}:latest)
|
|
buildah rm ${cid}
|
|
buildah rmi -f $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-volume-perms" {
|
|
# This Dockerfile needs us to be able to handle a working RUN instruction.
|
|
if ! which runc ; then
|
|
skip
|
|
fi
|
|
target=volume-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} ${TESTSDIR}/bud/volume-perms
|
|
cid=$(buildah from ${target})
|
|
root=$(buildah mount ${cid})
|
|
run test -s $root/vol/subvol/subvolfile
|
|
[ "$status" -ne 0 ]
|
|
run stat -c %f $root/vol/subvol
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = 41ed ]
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-from-glob" {
|
|
target=alpine-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} -f Dockerfile2.glob ${TESTSDIR}/bud/from-multiple-files
|
|
cid=$(buildah from ${target})
|
|
root=$(buildah mount ${cid})
|
|
cmp $root/Dockerfile1.alpine ${TESTSDIR}/bud/from-multiple-files/Dockerfile1.alpine
|
|
cmp $root/Dockerfile2.withfrom ${TESTSDIR}/bud/from-multiple-files/Dockerfile2.withfrom
|
|
buildah rm ${cid}
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-maintainer" {
|
|
target=alpine-image
|
|
buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} ${TESTSDIR}/bud/maintainer
|
|
run buildah --debug=false inspect --type=image --format '{{.Docker.Author}}' ${target}
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = kilroy ]
|
|
run buildah --debug=false inspect --type=image --format '{{.OCIv1.Author}}' ${target}
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = kilroy ]
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|
|
|
|
@test "bud-unrecognized-instruction" {
|
|
target=alpine-image
|
|
run buildah bud --signature-policy ${TESTSDIR}/policy.json -t ${target} ${TESTSDIR}/bud/unrecognized
|
|
[ "$status" -ne 0 ]
|
|
[[ "$output" =~ BOGUS ]]
|
|
buildah rmi $(buildah --debug=false images -q)
|
|
run buildah --debug=false images -q
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
}
|