diff --git a/tests/fixtures/qlearning/a/build.yaml b/tests/fixtures/qlearning/a/build.yaml new file mode 100644 index 00000000..1d2106ca --- /dev/null +++ b/tests/fixtures/qlearning/a/build.yaml @@ -0,0 +1,8 @@ +prelude: + - echo a > /aprelude +steps: + - echo a > /a +requires: +- category: "test" + name: "b" + version: "1.0" diff --git a/tests/fixtures/qlearning/a/definition.yaml b/tests/fixtures/qlearning/a/definition.yaml new file mode 100644 index 00000000..d237a187 --- /dev/null +++ b/tests/fixtures/qlearning/a/definition.yaml @@ -0,0 +1,8 @@ +category: "test" +name: "a" +version: "1.0" +requires: +- category: "test" + name: "b" + version: "1.0" + diff --git a/tests/fixtures/qlearning/b/build.yaml b/tests/fixtures/qlearning/b/build.yaml new file mode 100644 index 00000000..90d59320 --- /dev/null +++ b/tests/fixtures/qlearning/b/build.yaml @@ -0,0 +1,5 @@ +image: "alpine" +prelude: + - echo b > /bprelude +steps: + - echo b > /b \ No newline at end of file diff --git a/tests/fixtures/qlearning/b/definition.yaml b/tests/fixtures/qlearning/b/definition.yaml new file mode 100644 index 00000000..f3c125d9 --- /dev/null +++ b/tests/fixtures/qlearning/b/definition.yaml @@ -0,0 +1,7 @@ +category: "test" +name: "b" +version: "1.0" +conflicts: + - category: "test" + name: "c" + version: "1.0" \ No newline at end of file diff --git a/tests/fixtures/qlearning/c/build.yaml b/tests/fixtures/qlearning/c/build.yaml new file mode 100644 index 00000000..4ab80d6f --- /dev/null +++ b/tests/fixtures/qlearning/c/build.yaml @@ -0,0 +1,5 @@ +image: "alpine" +prelude: + - echo c > /cprelude +steps: + - echo c > /c \ No newline at end of file diff --git a/tests/fixtures/qlearning/c/definition.yaml b/tests/fixtures/qlearning/c/definition.yaml new file mode 100644 index 00000000..2b2a635f --- /dev/null +++ b/tests/fixtures/qlearning/c/definition.yaml @@ -0,0 +1,3 @@ +category: "test" +name: "c" +version: "1.0" \ No newline at end of file diff --git a/tests/fixtures/qlearning/d/build.yaml b/tests/fixtures/qlearning/d/build.yaml new file mode 100644 index 00000000..bf3ca25e --- /dev/null +++ b/tests/fixtures/qlearning/d/build.yaml @@ -0,0 +1,5 @@ +image: "alpine" +prelude: + - echo d > /dprelude +steps: + - echo d > /d \ No newline at end of file diff --git a/tests/fixtures/qlearning/d/definition.yaml b/tests/fixtures/qlearning/d/definition.yaml new file mode 100644 index 00000000..4e89ccb6 --- /dev/null +++ b/tests/fixtures/qlearning/d/definition.yaml @@ -0,0 +1,3 @@ +category: "test" +name: "d" +version: "1.0" \ No newline at end of file diff --git a/tests/fixtures/qlearning/e/build.yaml b/tests/fixtures/qlearning/e/build.yaml new file mode 100644 index 00000000..797980c0 --- /dev/null +++ b/tests/fixtures/qlearning/e/build.yaml @@ -0,0 +1,9 @@ +prelude: + - echo e > /eprelude +steps: + - echo e > /e +requires: +- category: "test" + name: "b" + version: "1.0" + diff --git a/tests/fixtures/qlearning/e/definition.yaml b/tests/fixtures/qlearning/e/definition.yaml new file mode 100644 index 00000000..31e58090 --- /dev/null +++ b/tests/fixtures/qlearning/e/definition.yaml @@ -0,0 +1,8 @@ +category: "test" +name: "e" +version: "1.0" +requires: +- category: "test" + name: "b" + version: "1.0" + diff --git a/tests/fixtures/qlearning/f/build.yaml b/tests/fixtures/qlearning/f/build.yaml new file mode 100644 index 00000000..e2f6d4a2 --- /dev/null +++ b/tests/fixtures/qlearning/f/build.yaml @@ -0,0 +1,5 @@ +prelude: + - echo f > /eprelude +steps: + - echo f > /f +image: "alpine" diff --git a/tests/fixtures/qlearning/f/definition.yaml b/tests/fixtures/qlearning/f/definition.yaml new file mode 100644 index 00000000..6a150c71 --- /dev/null +++ b/tests/fixtures/qlearning/f/definition.yaml @@ -0,0 +1,3 @@ +category: "test" +name: "f" +version: "1.0" \ No newline at end of file diff --git a/tests/integration/03_qlearning.sh b/tests/integration/03_qlearning.sh new file mode 100755 index 00000000..0cad6b73 --- /dev/null +++ b/tests/integration/03_qlearning.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +export LUET_NOLOCK=true + +oneTimeSetUp() { +export tmpdir="$(mktemp -d)" +} + +oneTimeTearDown() { + rm -rf "$tmpdir" +} + +testBuild() { + mkdir $tmpdir/testbuild + luet build --all --tree "$ROOT_DIR/tests/fixtures/qlearning" --destination $tmpdir/testbuild --compression gzip + buildst=$? + assertEquals 'builds successfully' "$buildst" "0" + assertTrue 'create package dep B' "[ -e '$tmpdir/testbuild/b-test-1.0.package.tar.gz' ]" + assertTrue 'create package' "[ -e '$tmpdir/testbuild/c-test-1.0.package.tar.gz' ]" +} + +testRepo() { + assertTrue 'no repository' "[ ! -e '$tmpdir/testbuild/repository.yaml' ]" + luet create-repo --tree "$ROOT_DIR/tests/fixtures/qlearning" \ + --output $tmpdir/testbuild \ + --packages $tmpdir/testbuild \ + --name "test" \ + --descr "Test Repo" \ + --urls $tmpdir/testrootfs \ + --type disk > /dev/null + + createst=$? + assertEquals 'create repo successfully' "$createst" "0" + assertTrue 'create repository' "[ -e '$tmpdir/testbuild/repository.yaml' ]" +} + +testConfig() { + mkdir $tmpdir/testrootfs + cat < $tmpdir/luet.yaml +general: + debug: true +system: + rootfs: $tmpdir/testrootfs + database_path: "/" + database_engine: "boltdb" +repositories: + - name: "main" + type: "disk" + enable: true + urls: + - "$tmpdir/testbuild" +EOF + luet config --config $tmpdir/luet.yaml + res=$? + assertEquals 'config test successfully' "$res" "0" +} + +testInstall() { + luet install --config $tmpdir/luet.yaml test/c + #luet install --config $tmpdir/luet.yaml test/c-1.0 > /dev/null + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertTrue 'package C installed' "[ -e '$tmpdir/testrootfs/c' ]" +} + +testFullInstall() { + output=$(luet install --config $tmpdir/luet.yaml test/d test/f test/e test/a) + installst=$? + assertEquals 'cannot install' "$installst" "1" + assertTrue 'package D installed' "[ ! -e '$tmpdir/testrootfs/d' ]" + assertTrue 'package F installed' "[ ! -e '$tmpdir/testrootfs/f' ]" +} + +testInstallAgain() { + output=$(luet install --solver-type qlearning --config $tmpdir/luet.yaml test/d test/f test/e test/a) + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertNotContains 'contains warning' "$output" 'Filtering out' + assertTrue 'package D installed' "[ -e '$tmpdir/testrootfs/d' ]" + assertTrue 'package F installed' "[ -e '$tmpdir/testrootfs/f' ]" + assertTrue 'package E not installed' "[ ! -e '$tmpdir/testrootfs/e' ]" + assertTrue 'package A not installed' "[ ! -e '$tmpdir/testrootfs/a' ]" +} + +testCleanup() { + luet cleanup --config $tmpdir/luet.yaml + installst=$? + assertEquals 'install test successfully' "$installst" "0" + assertTrue 'package installed' "[ ! -e '$tmpdir/testrootfs/packages/c-test-1.0.package.tar.gz' ]" +} + +# Load shUnit2. +. "$ROOT_DIR/tests/integration/shunit2"/shunit2 + diff --git a/tests/integration/run.sh b/tests/integration/run.sh index 83aa532f..3b1c9060 100755 --- a/tests/integration/run.sh +++ b/tests/integration/run.sh @@ -11,7 +11,7 @@ popd export PATH=$ROOT_DIR/tests/integration/bin/:$PATH -"$ROOT_DIR/tests/integration/01_simple.sh" -"$ROOT_DIR/tests/integration/01_simple_gzip.sh" -"$ROOT_DIR/tests/integration/02_create_repo_from_config.sh" - +for script in $(ls "$ROOT_DIR/tests/integration/" | grep '^[0-9]*_.*.sh'); do + echo "Executing script '$script'." + $ROOT_DIR/tests/integration/$script +done \ No newline at end of file