summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Firth <dan.firth@codethink.co.uk>2013-10-30 15:19:44 +0000
committerDaniel Firth <dan.firth@codethink.co.uk>2013-11-01 15:27:10 +0000
commit2d16996377f369c97d35b7b48bdd336c2e8f5a08 (patch)
tree9eb963204bf137e8346b1a88e44d281c1d98adcb
parent0b6516bb591dd51c14993f6e60b0da3197a32054 (diff)
downloadmorph-2d16996377f369c97d35b7b48bdd336c2e8f5a08.tar.gz
Added scenario test for preventing building uncommitted systems
-rw-r--r--morphlib/plugins/branch_and_merge_plugin.py9
-rw-r--r--yarns/building.yarn11
-rw-r--r--yarns/implementations.yarn10
3 files changed, 29 insertions, 1 deletions
diff --git a/morphlib/plugins/branch_and_merge_plugin.py b/morphlib/plugins/branch_and_merge_plugin.py
index 260c0e48..a2d2174a 100644
--- a/morphlib/plugins/branch_and_merge_plugin.py
+++ b/morphlib/plugins/branch_and_merge_plugin.py
@@ -1765,10 +1765,17 @@ class BranchAndMergePlugin(cliapp.Plugin):
['git', 'hash-object', '-t', 'blob', '-w', f.name],
cwd=repo_dir, env=env)
- self.app.runcmd(
+ try:
+ self.app.runcmd(
['git', 'update-index', '--cacheinfo',
'100644', morphology_sha1, '%s.morph' % filename],
cwd=repo_dir, env=env)
+ except cliapp.AppException, e:
+ raise cliapp.AppException(
+ "You seem to want to build %s, but '%s.morph' "
+ "doesn't exist in the morphologies repository. "
+ "Did you forget to commit it?" %
+ (filename, filename))
# Create a commit message including the build UUID. This allows us
# to collect all commits of a build across repositories and thereby
diff --git a/yarns/building.yarn b/yarns/building.yarn
new file mode 100644
index 00000000..2bd9b1e4
--- /dev/null
+++ b/yarns/building.yarn
@@ -0,0 +1,11 @@
+Morph Building Tests
+======================
+
+ SCENARIO attempting to build a system morphology which has never been committed
+ GIVEN a workspace
+ AND a git server
+ WHEN checking out the master system branch
+ AND creating an uncommitted system morphology called base-system-testarch for architecture testarch in system branch master
+ AND attempting to build the system base-system-testarch in branch master
+ THEN morph failed
+ AND the build error message includes the string "Did you forget to commit it?"
diff --git a/yarns/implementations.yarn b/yarns/implementations.yarn
index 985ab2bc..85149f0a 100644
--- a/yarns/implementations.yarn
+++ b/yarns/implementations.yarn
@@ -281,6 +281,16 @@ Editing morphologies with `morph edit`.
echo "$MATCH_2" > "$DATADIR/git-branch.wanted"
diff -u "$DATADIR/git-branch.wanted" "$DATADIR/git-branch.actual"
+ IMPLEMENTS WHEN creating an uncommitted system morphology called (\S+) for architecture (\S+) in system branch (\S+)
+ cat << EOF > "$DATADIR/workspace/$MATCH_3/test:morphs/$MATCH_1.morph"
+ arch: $MATCH_2
+ configuration-extensions: []
+ description: A system called $MATCH_1 for architectures $MATCH_2
+ kind: system
+ name: $MATCH_1
+ strata: []
+ EOF
+
Reporting status of checked out repositories:
IMPLEMENTS THEN morph reports no outstanding changes in (\S+)