From a73f5f9b65d5f8e2a42f1d4447a6fb1b12772bba Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 23 Apr 2021 00:54:06 +0200 Subject: [PATCH] Add more tests --- tests/integration/01_simple_docker.sh | 2 +- .../integration/27_buildwithnotree_values.sh | 1 - .../29_nobuildtreeinheritvalues.sh | 8 +- .../29_nobuildtreeinheritvalues_noignored.sh | 162 +++++++++++++++++ .../29_nobuildtreeinheritvalues_norebuild.sh | 170 ++++++++++++++++++ 5 files changed, 339 insertions(+), 4 deletions(-) create mode 100755 tests/integration/29_nobuildtreeinheritvalues_noignored.sh create mode 100755 tests/integration/29_nobuildtreeinheritvalues_norebuild.sh diff --git a/tests/integration/01_simple_docker.sh b/tests/integration/01_simple_docker.sh index 214e58aa..87d7125f 100755 --- a/tests/integration/01_simple_docker.sh +++ b/tests/integration/01_simple_docker.sh @@ -21,7 +21,7 @@ foo: "baz" EOF mkdir $tmpdir/testbuild luet build --tree "$ROOT_DIR/tests/fixtures/docker_repo" \ - --destination $tmpdir/testbuild \ + --destination $tmpdir/testbuild --concurrency 1 \ --image-repository "${TEST_DOCKER_IMAGE}-cache" --push \ --compression zstd --values $tmpdir/default.yaml \ test/c@1.0 test/z test/interpolated #> /dev/null diff --git a/tests/integration/27_buildwithnotree_values.sh b/tests/integration/27_buildwithnotree_values.sh index 861d4d08..814c37ee 100755 --- a/tests/integration/27_buildwithnotree_values.sh +++ b/tests/integration/27_buildwithnotree_values.sh @@ -241,7 +241,6 @@ EOF assertTrue 'package installed A interpolated with values' "[ -e '$tmpdir/testrootfs3/a-newinterpolation' ]" # Finalizers can interpolate only on package field. No extra fields are allowed at this time. assertTrue 'finalizer executed on A' "[ -e '$tmpdir/testrootfs3/finalize-a' ]" - installed=$(luet --config $tmpdir/luet2.yaml search --installed .) searchst=$? assertEquals 'search exists successfully' "$searchst" "0" diff --git a/tests/integration/29_nobuildtreeinheritvalues.sh b/tests/integration/29_nobuildtreeinheritvalues.sh index 35b6bfd9..ca166e1d 100755 --- a/tests/integration/29_nobuildtreeinheritvalues.sh +++ b/tests/integration/29_nobuildtreeinheritvalues.sh @@ -41,18 +41,22 @@ testBuild() { cat < $tmpdir/default.yaml extra: "an" EOF + mkdir $tmpdir/testbuild mkdir $tmpdir/empty + + # With --rebuild, the package gets ignored build_output=$(luet build --pull --tree "$tmpdir/empty" \ --config $tmpdir/luet.yaml --values $tmpdir/default.yaml --concurrency 1 \ --from-repositories --destination $tmpdir/testbuild --compression zstd test/c@1.0 test/z test/interpolated) buildst=$? + echo "$build_output" assertEquals 'builds successfully' "$buildst" "0" assertTrue 'create package dep B' "[ -e '$tmpdir/testbuild/b-test-1.0.package.tar.zst' ]" assertTrue 'create package' "[ -e '$tmpdir/testbuild/c-test-1.0.package.tar.zst' ]" assertTrue 'create package Z' "[ -e '$tmpdir/testbuild/z-test-1.0+2.package.tar.zst' ]" assertTrue 'create package interpolated' "[ -e '$tmpdir/testbuild/interpolated-test-1.0+2.package.tar.zst' ]" - assertContains 'Does use the upstream cache without specifying it' "$build_output" "Generating 'builder' image from quay.io/mocaccinoos/integration-test-cache:79d7107d13d578b362e6a7bf10ec850efce26316405b8d732ce8f9e004d64281 as luet/cache:builder-09e1e5824824b770c9dec10b4d846132" + assertContains 'Does use the upstream cache without specifying it' "$build_output" "Images available for test/interpolated-1.0+2 generating artifact from remote images: quay.io/mocaccinoos/integration-test-cache:c1f11f48113cd71d8795a06c7b49e1558bd7211d2aa88f5d79a3334f0393c64d" } testRepo() { @@ -109,7 +113,7 @@ testInstall() { assertTrue 'package installed' "[ -e '$tmpdir/testrootfs/c' ]" assertTrue 'package Z installed' "[ -e '$tmpdir/testrootfs/z' ]" ls -liah $tmpdir/testrootfs/ - assertTrue 'package interpolated installed' "[ -e '$tmpdir/testrootfs/interpolated-baz-an' ]" + assertTrue 'package interpolated installed' "[ -e '$tmpdir/testrootfs/interpolated-baz-bar' ]" } testReInstall() { diff --git a/tests/integration/29_nobuildtreeinheritvalues_noignored.sh b/tests/integration/29_nobuildtreeinheritvalues_noignored.sh new file mode 100755 index 00000000..46551eee --- /dev/null +++ b/tests/integration/29_nobuildtreeinheritvalues_noignored.sh @@ -0,0 +1,162 @@ +#!/bin/bash + +export LUET_NOLOCK=true + +oneTimeSetUp() { + export tmpdir="$(mktemp -d)" + docker images --filter='reference=luet/cache' --format='{{.Repository}}:{{.Tag}}' | xargs -r docker rmi +} + +oneTimeTearDown() { + rm -rf "$tmpdir" + docker images --filter='reference=luet/cache' --format='{{.Repository}}:{{.Tag}}' | xargs -r docker rmi +} + +testConfig() { + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + mkdir $tmpdir/testrootfs + cat < $tmpdir/luet.yaml +general: + debug: true +system: + rootfs: $tmpdir/testrootfs + database_path: "/" + database_engine: "boltdb" +config_from_host: true +repositories: + - name: "main" + type: "docker" + enable: true + urls: + - "${TEST_DOCKER_IMAGE}" +EOF + luet config --config $tmpdir/luet.yaml + res=$? + assertEquals 'config test successfully' "$res" "0" +} + +testBuild() { + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + cat < $tmpdir/default.yaml +extra: "an" +EOF + + mkdir $tmpdir/testbuild + mkdir $tmpdir/empty + + # With --rebuild, the package gets rebuild with the values applied + build_output=$(luet build --pull --rebuild --tree "$tmpdir/empty" \ + --config $tmpdir/luet.yaml --values $tmpdir/default.yaml --concurrency 1 \ + --from-repositories --destination $tmpdir/testbuild --compression zstd test/c@1.0 test/z test/interpolated) + buildst=$? + echo "$build_output" + assertEquals 'builds successfully' "$buildst" "0" + assertTrue 'create package dep B' "[ -e '$tmpdir/testbuild/b-test-1.0.package.tar.zst' ]" + assertTrue 'create package' "[ -e '$tmpdir/testbuild/c-test-1.0.package.tar.zst' ]" + assertTrue 'create package Z' "[ -e '$tmpdir/testbuild/z-test-1.0+2.package.tar.zst' ]" + assertTrue 'create package interpolated' "[ -e '$tmpdir/testbuild/interpolated-test-1.0+2.package.tar.zst' ]" + assertContains 'Does use the upstream cache without specifying it' "$build_output" "Downloading image quay.io/mocaccinoos/integration-test-cache:6490e800fe443b99328fc363529aee74bda513930fb27ce6ab814d692bba068e" +} + +testRepo() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + luet create-repo \ + --output "${TEST_DOCKER_IMAGE}-2" \ + --packages $tmpdir/testbuild \ + --name "test" \ + --descr "Test Repo" \ + --urls $tmpdir/testrootfs \ + --tree-compression zstd \ + --tree-filename foo.tar \ + --tree "$tmpdir/empty" --config $tmpdir/luet.yaml --from-repositories \ + --meta-filename repository.meta.tar \ + --meta-compression zstd \ + --type docker --push-images --force-push --debug + + createst=$? + assertEquals 'create repo successfully' "$createst" "0" +} + +testConfigClient() { + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + cat < $tmpdir/luet-client.yaml +general: + debug: true +system: + rootfs: $tmpdir/testrootfs + database_path: "/" + database_engine: "boltdb" +config_from_host: true +repositories: + - name: "main" + type: "docker" + enable: true + urls: + - "${TEST_DOCKER_IMAGE}-2" +EOF + luet config --config $tmpdir/luet-client.yaml + res=$? + assertEquals 'config test successfully' "$res" "0" +} + +testInstall() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + luet install -y --config $tmpdir/luet-client.yaml test/c@1.0 test/z test/interpolated + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertTrue 'package installed' "[ -e '$tmpdir/testrootfs/c' ]" + assertTrue 'package Z installed' "[ -e '$tmpdir/testrootfs/z' ]" + ls -liah $tmpdir/testrootfs/ + assertTrue 'package interpolated installed' "[ -e '$tmpdir/testrootfs/interpolated-baz-an' ]" +} + +testReInstall() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + output=$(luet install -y --config $tmpdir/luet-client.yaml test/c@1.0) + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertContains 'contains warning' "$output" 'No packages to install' +} + +testUnInstall() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + luet uninstall -y --config $tmpdir/luet-client.yaml test/c@1.0 + installst=$? + assertEquals 'uninstall test successfully' "$installst" "0" + assertTrue 'package uninstalled' "[ ! -e '$tmpdir/testrootfs/c' ]" +} + +testInstallAgain() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + assertTrue 'package uninstalled' "[ ! -e '$tmpdir/testrootfs/c' ]" + output=$(luet install -y --config $tmpdir/luet-client.yaml test/c@1.0) + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertNotContains 'contains warning' "$output" 'No packages to install' + assertTrue 'package installed' "[ -e '$tmpdir/testrootfs/c' ]" + assertTrue 'package in cache' "[ -e '$tmpdir/testrootfs/packages/c-test-1.0.package.tar.zst' ]" +} + +testCleanup() { + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + luet cleanup --config $tmpdir/luet-client.yaml + installst=$? + assertEquals 'cleanup test successfully' "$installst" "0" +} + +# Load shUnit2. +. "$ROOT_DIR/tests/integration/shunit2"/shunit2 + diff --git a/tests/integration/29_nobuildtreeinheritvalues_norebuild.sh b/tests/integration/29_nobuildtreeinheritvalues_norebuild.sh new file mode 100755 index 00000000..0099f3ad --- /dev/null +++ b/tests/integration/29_nobuildtreeinheritvalues_norebuild.sh @@ -0,0 +1,170 @@ +#!/bin/bash + +export LUET_NOLOCK=true + +oneTimeSetUp() { + export tmpdir="$(mktemp -d)" + docker images --filter='reference=luet/cache' --format='{{.Repository}}:{{.Tag}}' | xargs -r docker rmi +} + +oneTimeTearDown() { + rm -rf "$tmpdir" + docker images --filter='reference=luet/cache' --format='{{.Repository}}:{{.Tag}}' | xargs -r docker rmi +} + +testConfig() { + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + mkdir $tmpdir/testrootfs + cat < $tmpdir/luet.yaml +general: + debug: true +system: + rootfs: $tmpdir/testrootfs + database_path: "/" + database_engine: "boltdb" +config_from_host: true +repositories: + - name: "main" + type: "docker" + enable: true + urls: + - "${TEST_DOCKER_IMAGE}" +EOF + luet config --config $tmpdir/luet.yaml + res=$? + assertEquals 'config test successfully' "$res" "0" +} + +testBuild() { + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + # This will be ignored, as no --rebuild is supplied + cat < $tmpdir/default.yaml +extra: "an" +EOF + + mkdir $tmpdir/testbuild + mkdir $tmpdir/empty +cp -rf "$ROOT_DIR/tests/fixtures/docker_repo/interpolated" $tmpdir/empty/ + + cat < $tmpdir/empty/interpolated/definition.yaml +category: "test" +name: "interpolated" +version: "1.1" +foo: "bar" +EOF + + build_output=$(luet build --pull --tree "$tmpdir/empty" \ + --config $tmpdir/luet.yaml --values $tmpdir/default.yaml --concurrency 1 \ + --from-repositories --destination $tmpdir/testbuild --compression zstd test/c@1.0 test/z test/interpolated) + buildst=$? + echo "$build_output" + assertEquals 'builds successfully' "$buildst" "0" + assertTrue 'create package dep B' "[ -e '$tmpdir/testbuild/b-test-1.0.package.tar.zst' ]" + assertTrue 'create package' "[ -e '$tmpdir/testbuild/c-test-1.0.package.tar.zst' ]" + assertTrue 'create package Z' "[ -e '$tmpdir/testbuild/z-test-1.0+2.package.tar.zst' ]" + assertTrue 'create package interpolated' "[ -e '$tmpdir/testbuild/interpolated-test-1.1.package.tar.zst' ]" +} + +testRepo() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + luet create-repo \ + --output "${TEST_DOCKER_IMAGE}-2" \ + --packages $tmpdir/testbuild \ + --name "test" \ + --descr "Test Repo" \ + --urls $tmpdir/testrootfs \ + --tree-compression zstd \ + --tree-filename foo.tar \ + --tree "$tmpdir/empty" --config $tmpdir/luet.yaml --from-repositories \ + --meta-filename repository.meta.tar \ + --meta-compression zstd \ + --type docker --push-images --force-push --debug + + createst=$? + assertEquals 'create repo successfully' "$createst" "0" +} + +testConfigClient() { + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + cat < $tmpdir/luet-client.yaml +general: + debug: true +system: + rootfs: $tmpdir/testrootfs + database_path: "/" + database_engine: "boltdb" +config_from_host: true +repositories: + - name: "main" + type: "docker" + enable: true + urls: + - "${TEST_DOCKER_IMAGE}-2" +EOF + luet config --config $tmpdir/luet-client.yaml + res=$? + assertEquals 'config test successfully' "$res" "0" +} + +testInstall() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + luet install -y --config $tmpdir/luet-client.yaml test/c@1.0 test/z test/interpolated + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertTrue 'package installed' "[ -e '$tmpdir/testrootfs/c' ]" + assertTrue 'package Z installed' "[ -e '$tmpdir/testrootfs/z' ]" + ls -liah $tmpdir/testrootfs/ + assertTrue 'package interpolated installed' "[ -e '$tmpdir/testrootfs/interpolated-bar-an' ]" +} + +testReInstall() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + output=$(luet install -y --config $tmpdir/luet-client.yaml test/c@1.0) + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertContains 'contains warning' "$output" 'No packages to install' +} + +testUnInstall() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + luet uninstall -y --config $tmpdir/luet-client.yaml test/c@1.0 + installst=$? + assertEquals 'uninstall test successfully' "$installst" "0" + assertTrue 'package uninstalled' "[ ! -e '$tmpdir/testrootfs/c' ]" +} + +testInstallAgain() { + # Disable tests which require a DOCKER registry + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + assertTrue 'package uninstalled' "[ ! -e '$tmpdir/testrootfs/c' ]" + output=$(luet install -y --config $tmpdir/luet-client.yaml test/c@1.0) + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertNotContains 'contains warning' "$output" 'No packages to install' + assertTrue 'package installed' "[ -e '$tmpdir/testrootfs/c' ]" + assertTrue 'package in cache' "[ -e '$tmpdir/testrootfs/packages/c-test-1.0.package.tar.zst' ]" +} + +testCleanup() { + [ -z "${TEST_DOCKER_IMAGE:-}" ] && startSkipping + + luet cleanup --config $tmpdir/luet-client.yaml + installst=$? + assertEquals 'cleanup test successfully' "$installst" "0" +} + +# Load shUnit2. +. "$ROOT_DIR/tests/integration/shunit2"/shunit2 +