diff options
author | Daniel Firth <dan.firth@codethink.co.uk> | 2013-10-30 15:19:44 +0000 |
---|---|---|
committer | Daniel Firth <dan.firth@codethink.co.uk> | 2013-11-01 15:27:10 +0000 |
commit | 2d16996377f369c97d35b7b48bdd336c2e8f5a08 (patch) | |
tree | 9eb963204bf137e8346b1a88e44d281c1d98adcb | |
parent | 0b6516bb591dd51c14993f6e60b0da3197a32054 (diff) | |
download | morph-2d16996377f369c97d35b7b48bdd336c2e8f5a08.tar.gz |
Added scenario test for preventing building uncommitted systems
-rw-r--r-- | morphlib/plugins/branch_and_merge_plugin.py | 9 | ||||
-rw-r--r-- | yarns/building.yarn | 11 | ||||
-rw-r--r-- | yarns/implementations.yarn | 10 |
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+) |