summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Maat <tristan.maat@codethink.co.uk>2017-10-04 14:02:06 +0100
committerTristan Maat <tristan.maat@codethink.co.uk>2017-10-13 15:59:26 +0100
commit12d86fc144f994131d706ae4027bf8d6f88eed32 (patch)
tree561fe4c33a0ebf744dfcfeced2e4b7db400eeb23
parentc1954f6d78278b5b8ea1851b73ec8803e1caba56 (diff)
downloadbuildstream-non-sandbox-builds.tar.gz
Add tests for %{script} formatnon-sandbox-builds
-rwxr-xr-xtests/frontend/project/elements/manual-build-output.txt60
-rw-r--r--tests/frontend/project/elements/manual-build.bst12
-rw-r--r--tests/frontend/show.py17
3 files changed, 86 insertions, 3 deletions
diff --git a/tests/frontend/project/elements/manual-build-output.txt b/tests/frontend/project/elements/manual-build-output.txt
new file mode 100755
index 000000000..a6a98efb6
--- /dev/null
+++ b/tests/frontend/project/elements/manual-build-output.txt
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# DO NOT EDIT THIS FILE
+#
+# This is a build script generated by
+# [BuildStream](https://wiki.gnome.org/Projects/BuildStream/).
+#
+# Builds the module manual-build.
+
+set -e
+
+# Prepare the build environment
+echo 'Building manual-build'
+
+if [ -d '/buildstream/build' ]; then
+ rm -rf '/buildstream/build'
+fi
+
+if [ -d '/buildstream/install' ]; then
+ rm -rf '/buildstream/install'
+fi
+
+mkdir -p '/buildstream/build'
+mkdir -p '/buildstream/install'
+
+if [ -d "$SRCDIR/manual-build/" ]; then
+ cp -a "$SRCDIR/manual-build/." '/buildstream/build'
+fi
+cd '/buildstream/build'
+
+export PREFIX='/buildstream/install'
+
+export HOME=/tmp LC_ALL=C LOGNAME=tomjon MAKEFLAGS=-j1 PATH=/usr/bin:/bin:/usr/sbin:/sbin SHELL=/bin/sh TERM=dumb TZ=UTC USER=tomjon USERNAME=tomjon V=1
+
+# Build the module
+(set -ex; echo 'Hi :)'
+) || exit 1
+(set -ex; find "/buildstream/install" -type f \
+ '(' -perm -111 -o -name '*.so*' \
+ -o -name '*.cmxs' -o -name '*.node' ')' \
+ -exec sh -ec \
+ 'read -n4 hdr <"$1" # check for elf header
+ if [ "$hdr" != "$(printf \\x7fELF)" ]; then
+ exit 0
+ fi
+ debugfile="/buildstream/install/usr/lib/debug/$(basename "$1")"
+ mkdir -p "$(dirname "$debugfile")"
+ objcopy --only-keep-debug "$1" "$debugfile"
+ chmod 644 "$debugfile"
+ strip --remove-section=.comment --remove-section=.note --strip-unneeded "$1"
+ objcopy --add-gnu-debuglink "$debugfile" "$1"' - {} ';'
+) || exit 1
+
+
+rm -rf '/buildstream/build'
+
+# Install the module
+echo 'Installing manual-build'
+
+(cd '/buildstream/install'; find . | cpio -umdp /) \ No newline at end of file
diff --git a/tests/frontend/project/elements/manual-build.bst b/tests/frontend/project/elements/manual-build.bst
new file mode 100644
index 000000000..ec70c68f9
--- /dev/null
+++ b/tests/frontend/project/elements/manual-build.bst
@@ -0,0 +1,12 @@
+kind: manual
+
+depends:
+ - filename: import-bin.bst
+ type: build
+
+config:
+ build-commands:
+ - echo 'Hi :)'
+
+environment:
+ MAKEFLAGS: -j1
diff --git a/tests/frontend/show.py b/tests/frontend/show.py
index e6c754fbe..69d5e5923 100644
--- a/tests/frontend/show.py
+++ b/tests/frontend/show.py
@@ -1,5 +1,7 @@
import os
+import io
import pytest
+import difflib
from tests.testutils.runcli import cli
# Project directory
@@ -9,11 +11,16 @@ DATA_DIR = os.path.join(
)
+with open(os.path.join(DATA_DIR, 'elements', 'manual-build-output.txt'), 'r') as f:
+ MANUAL_OUTPUT = f.read()
+
+
@pytest.mark.datafiles(DATA_DIR)
@pytest.mark.parametrize("target,format,expected", [
('import-bin.bst', '%{name}', 'import-bin.bst'),
('import-bin.bst', '%{state}', 'buildable'),
- ('compose-all.bst', '%{state}', 'waiting')
+ ('compose-all.bst', '%{state}', 'waiting'),
+ ('manual-build.bst', '%{script}', MANUAL_OUTPUT)
])
def test_show(cli, datafiles, target, format, expected):
project = os.path.join(datafiles.dirname, datafiles.basename)
@@ -26,8 +33,12 @@ def test_show(cli, datafiles, target, format, expected):
assert result.exit_code == 0
if result.output.strip() != expected:
- raise AssertionError("Expected output:\n{}\nInstead received output:\n{}"
- .format(expected, result.output))
+ diff = difflib.context_diff(result.output.strip().splitlines(True),
+ expected.splitlines(True),
+ fromfile='output', tofile='expected')
+
+ raise AssertionError("Received unexpected output:\n{}\n"
+ .format(''.join(diff)))
@pytest.mark.datafiles(DATA_DIR)