diff options
Diffstat (limited to 'integration-tests/dpkg-build-test')
18 files changed, 234 insertions, 0 deletions
diff --git a/integration-tests/dpkg-build-test/.bst/workspaces.yml b/integration-tests/dpkg-build-test/.bst/workspaces.yml new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/integration-tests/dpkg-build-test/.bst/workspaces.yml diff --git a/integration-tests/dpkg-build-test/elements/dependencies/base-configure.bst b/integration-tests/dpkg-build-test/elements/dependencies/base-configure.bst new file mode 100644 index 000000000..deff782de --- /dev/null +++ b/integration-tests/dpkg-build-test/elements/dependencies/base-configure.bst @@ -0,0 +1,28 @@ +kind: script +depends: +- filename: dependencies/base-system.bst + type: build + +variables: + install-root: / + +config: + + commands: + - | + # Avoid some chowns which fail at dpkg configure time + # + mv /bin/chown /bin/chown.real + ln -s true /bin/chown + + - | + # This is expected to fail, but will configure everything we need + # at least for the purpose of building, other dpkg scripts which + # require real root privileges will always fail here. + DEBIAN_FRONTEND=noninteractive dpkg --configure -a --abort-after=100000 || exit 0 + + - | + # Restore chown + # + rm -f /bin/chown + mv /bin/chown.real /bin/chown diff --git a/integration-tests/dpkg-build-test/elements/dependencies/base-platform.bst b/integration-tests/dpkg-build-test/elements/dependencies/base-platform.bst new file mode 100644 index 000000000..09c95acb4 --- /dev/null +++ b/integration-tests/dpkg-build-test/elements/dependencies/base-platform.bst @@ -0,0 +1,23 @@ +kind: import +description: Import the base freedesktop platform +config: + source: files +public: + bst: + integration-commands: + - ldconfig +arches: + x86_64: + sources: + - kind: ostree + url: gnomesdk:repo/ + track: runtime/org.freedesktop.BasePlatform/x86_64/1.4 + gpg-key: keys/gnome-sdk.gpg + ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576 + i386: + sources: + - kind: ostree + url: gnomesdk:repo/ + track: runtime/org.freedesktop.BasePlatform/i386/1.4 + gpg-key: keys/gnome-sdk.gpg + ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96 diff --git a/integration-tests/dpkg-build-test/elements/dependencies/base-system.bst b/integration-tests/dpkg-build-test/elements/dependencies/base-system.bst new file mode 100644 index 000000000..d19a2b3b2 --- /dev/null +++ b/integration-tests/dpkg-build-test/elements/dependencies/base-system.bst @@ -0,0 +1,13 @@ +kind: manual +depends: +- filename: dependencies/base-platform.bst + type: build +sources: +- kind: git + url: https://gitlab.com/BuildStream/buildstream-sysroots.git + track: dpkg-build + ref: ecf14954e4298ce5495f701464339162fad73f30 +config: + install-commands: + - xz -d dpkg-build-sysroot.tar.xz + - tar xf dpkg-build-sysroot.tar -C %{install-root} --no-same-owner diff --git a/integration-tests/dpkg-build-test/elements/dpkg-build-test.bst b/integration-tests/dpkg-build-test/elements/dpkg-build-test.bst new file mode 100644 index 000000000..76b1104b8 --- /dev/null +++ b/integration-tests/dpkg-build-test/elements/dpkg-build-test.bst @@ -0,0 +1,10 @@ +kind: dpkg_build +description: dpkg-build test + +depends: +- filename: dependencies/base-configure.bst + type: build + +sources: +- kind: local + path: src diff --git a/integration-tests/dpkg-build-test/elements/dpkg-deploy-test.bst b/integration-tests/dpkg-build-test/elements/dpkg-deploy-test.bst new file mode 100644 index 000000000..ce277e4d6 --- /dev/null +++ b/integration-tests/dpkg-build-test/elements/dpkg-deploy-test.bst @@ -0,0 +1,12 @@ +kind: dpkg_deploy +description: dpkg-deploy test + +depends: +- filename: dependencies/base-configure.bst + type: build +- filename: dpkg-build-test.bst + type: build + +config: + base: dependencies/base-configure.bst + input: dpkg-build-test.bst diff --git a/integration-tests/dpkg-build-test/expected/dpkg-build-test/usr/share/doc/test/changelog.gz b/integration-tests/dpkg-build-test/expected/dpkg-build-test/usr/share/doc/test/changelog.gz Binary files differnew file mode 100644 index 000000000..bf2252c3c --- /dev/null +++ b/integration-tests/dpkg-build-test/expected/dpkg-build-test/usr/share/doc/test/changelog.gz diff --git a/integration-tests/dpkg-build-test/expected/dpkg-build-test/usr/share/foo b/integration-tests/dpkg-build-test/expected/dpkg-build-test/usr/share/foo new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/integration-tests/dpkg-build-test/expected/dpkg-build-test/usr/share/foo diff --git a/integration-tests/dpkg-build-test/expected/dpkg-deploy-test/test_0.1_amd64.deb b/integration-tests/dpkg-build-test/expected/dpkg-deploy-test/test_0.1_amd64.deb Binary files differnew file mode 100755 index 000000000..a10c4e673 --- /dev/null +++ b/integration-tests/dpkg-build-test/expected/dpkg-deploy-test/test_0.1_amd64.deb diff --git a/integration-tests/dpkg-build-test/keys/gnome-sdk.gpg b/integration-tests/dpkg-build-test/keys/gnome-sdk.gpg Binary files differnew file mode 100644 index 000000000..8434b686c --- /dev/null +++ b/integration-tests/dpkg-build-test/keys/gnome-sdk.gpg diff --git a/integration-tests/dpkg-build-test/project.conf b/integration-tests/dpkg-build-test/project.conf new file mode 100644 index 000000000..4212ca3d1 --- /dev/null +++ b/integration-tests/dpkg-build-test/project.conf @@ -0,0 +1,14 @@ +# Import-test BuildStream project configuration. + +# Project name +# +name: script-test + +aliases: + gnomesdk: https://sdk.gnome.org/ + +# Base project relative element path, elements will be loaded +# from this base. + +element-path: elements + diff --git a/integration-tests/dpkg-build-test/run-dpkg-build-test.sh b/integration-tests/dpkg-build-test/run-dpkg-build-test.sh new file mode 100755 index 000000000..eb78c3f28 --- /dev/null +++ b/integration-tests/dpkg-build-test/run-dpkg-build-test.sh @@ -0,0 +1,110 @@ +#!/bin/bash +# +# A script to run a BuildStream test case. + + +TEST_DIR="elements/" +RESULTS="results/" +EXPECTED="expected/" + +set -eu + +# compare_debs +# +# Compares results to expected files for every .deb file found +# +# Args: +# test_name ($1) - The name of the test, for error reporting +# result_dir ($2) - The directory containing result files +# expected_dir ($3) - The directory containing expected files +# +# Returns: +# 1 if the debs are all equivalent, 0 otherwise. +compare_debs () ( + set +e + + local test_name="$1" + local result_dir="$2" + local expected_dir="$3" + + # First, expected and result must have the same .deb file lists + diff <(cd $result_dir/$test_name && find . -name "*.deb" | sort) <(cd $expected_dir/$test_name && find . -name "*.deb" | sort) + if [ "$?" -ne 0 ] + then + printf "%-34s ${RED}%9s${END}\n" "$test_name" "failed" + return 1 + fi + + for deb in $(cd $result_dir/$test_name && find . -name "*.deb"); do + result_deb="$result_dir/$test_name/$deb" + expected_deb="$expected_dir/$test_name/$deb" + diff <(dpkg-deb -c $result_deb | tr -s ' ' | cut -d' ' -f6) <(dpkg-deb -c $expected_deb | tr -s ' ' | cut -d' ' -f6) + if [ "$?" -ne 0 ] + then + printf "%-34s ${RED}%9s${END}\n" "$test_name" "failed" + return 1 + fi + done + printf "%-34s ${GREEN}%9s${END}\n" "$test_name" "succeeded" + return 0 +) + +# run_test +# +# Run tests for this test case. +# +# This should create a set of directories that match the directories +# in 'results/', as well as a log of the BuildStream output in +# 'test_log.log'. +# +run_test () { + local element + local elements + local element_name + local test_dir + local bst_file + local tar_file + + local successes=0 + local total=0 + local exit + + source ../lib.sh + + mkdir -p "$TEST_DIR" + elements="$(find "$TEST_DIR" -maxdepth 1 -type f)" + + for element in $elements; + do + total=$((total + 1)) + + element_name="$(basename "$element")" + element_name="${element_name%.*}" + + test_dir="$RESULTS/$element_name" + + echo "Running test '$element_name'" + + bst_with_flags build "$element_name".bst + echo "Built $element_name" + bst_with_flags checkout "$element_name".bst "$test_dir" + + exit=0 + if [ "$element" == "dpkg-deploy-test.bst" ]; then + compare_debs "$element_name" "$RESULTS" "$EXPECTED" || exit=$? + else + compare_results_no_contents "$element_name" "$RESULTS" "$EXPECTED" || exit=$? + fi + if [ $exit == 0 ] + then + successes=$((successes + 1)) + fi + done + + if [ $total != $successes ] + then + return 1 + fi +} + +run_test "$@" diff --git a/integration-tests/dpkg-build-test/src/Makefile b/integration-tests/dpkg-build-test/src/Makefile new file mode 100644 index 000000000..a14e4a7a7 --- /dev/null +++ b/integration-tests/dpkg-build-test/src/Makefile @@ -0,0 +1,9 @@ + +build: + $(shell touch foo) + +install: build + install -d $(DESTDIR)/usr/share + install -m 0644 foo $(DESTDIR)/usr/share/foo + +all: build install diff --git a/integration-tests/dpkg-build-test/src/debian/changelog b/integration-tests/dpkg-build-test/src/debian/changelog new file mode 100644 index 000000000..944fa6662 --- /dev/null +++ b/integration-tests/dpkg-build-test/src/debian/changelog @@ -0,0 +1,5 @@ +test (0.1) unstable; urgency=medium + + * Test + + -- Testy McTesterson <testy.mctesterson@example.org> Mon 17 Jul 2017 14:14:01 +0100 diff --git a/integration-tests/dpkg-build-test/src/debian/compat b/integration-tests/dpkg-build-test/src/debian/compat new file mode 100644 index 000000000..f599e28b8 --- /dev/null +++ b/integration-tests/dpkg-build-test/src/debian/compat @@ -0,0 +1 @@ +10 diff --git a/integration-tests/dpkg-build-test/src/debian/control b/integration-tests/dpkg-build-test/src/debian/control new file mode 100644 index 000000000..095cd661c --- /dev/null +++ b/integration-tests/dpkg-build-test/src/debian/control @@ -0,0 +1,5 @@ +Source: test + +Package: test +Architecture: any +Description: A test diff --git a/integration-tests/dpkg-build-test/src/debian/rules b/integration-tests/dpkg-build-test/src/debian/rules new file mode 100755 index 000000000..cbe925d75 --- /dev/null +++ b/integration-tests/dpkg-build-test/src/debian/rules @@ -0,0 +1,3 @@ +#!/usr/bin/make -f +%: + dh $@ diff --git a/integration-tests/dpkg-build-test/src/debian/test.install b/integration-tests/dpkg-build-test/src/debian/test.install new file mode 100644 index 000000000..da897999b --- /dev/null +++ b/integration-tests/dpkg-build-test/src/debian/test.install @@ -0,0 +1 @@ +foo usr/share |