Add tests for %{script} format
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 0000000..a6a98ef
--- /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 0000000..ec70c68
--- /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 e6c754f..69d5e59 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 @@
 )
 
 
+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 @@
     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)