summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2014-02-17 14:28:15 (GMT)
committerRichard Maw <richard.maw@codethink.co.uk>2014-02-17 14:28:15 (GMT)
commita859a3377f488ef11ebed2631dbd51b2aa82afe4 (patch)
treed6c141557430c6a808abd80c9fdbf26c44ba1eea
parent8f8fc96b884e7f175d4a01bc2d91452d7149bf33 (diff)
parentd036610974f229a806d682c6d051c299f6396d2f (diff)
downloadmorph-a859a3377f488ef11ebed2631dbd51b2aa82afe4.tar.gz
Merge remote-tracking branch 'origin/baserock/richardmaw/10312/ensure-not-add-repo-ref'
This includes a typo fix of Unpertify -> Unpetrify Reviewed-by: Lars Wirzenius
-rwxr-xr-xscripts/yaml-extract4
-rw-r--r--yarns/branches-workspaces.yarn22
-rw-r--r--yarns/implementations.yarn16
3 files changed, 36 insertions, 6 deletions
diff --git a/scripts/yaml-extract b/scripts/yaml-extract
index 5a945b6..6f55e62 100755
--- a/scripts/yaml-extract
+++ b/scripts/yaml-extract
@@ -28,7 +28,7 @@
# values for missing fields (e.g., the morph field if name is given).
# Construct your tests accordingly.
-# Copyright (C) 2013 Codethink Limited
+# Copyright (C) 2013-2014 Codethink Limited
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -52,6 +52,8 @@ with open(sys.argv[1]) as f:
obj = yaml.safe_load(f)
for thing in sys.argv[2:]:
if type(obj) == dict:
+ if thing not in obj:
+ raise Exception("Object does not contain %s" % thing)
obj = obj[thing]
elif type(obj) == list:
if '=' in thing:
diff --git a/yarns/branches-workspaces.yarn b/yarns/branches-workspaces.yarn
index 15d31cb..c3b73ee 100644
--- a/yarns/branches-workspaces.yarn
+++ b/yarns/branches-workspaces.yarn
@@ -197,6 +197,12 @@ purposes.
THEN in branch foo, stratum test-stratum refs test-chunk in foo
AND the edited chunk test:test-chunk has git branch foo
+Editing a morphology should not cause it to start having repo or ref
+fields when referring to strata, when it didn't before.
+
+ AND in branch foo, system test-system refers to test-stratum without repo
+ AND in branch foo, system test-system refers to test-stratum without ref
+
Morph edit should only work with a system argument.
SCENARIO morph edit errors when supplied only a stratum and chunk as arguments
@@ -267,9 +273,25 @@ unpetrify and verify that we have all the same refs as before.
AND remembering all refs in foo
AND petrifying foo
THEN foo is petrified
+
+Petrifying a morphology should not cause it to start having repo or ref
+fields when referring to strata, when it didn't before.
+
+ AND in branch foo, system test-system refers to test-stratum without repo
+ AND in branch foo, system test-system refers to test-stratum without ref
+
+Unpetrify must put the morphologies back in the same logical state they
+were in before.
+
WHEN unpetrifying foo
THEN foo refs are as remembered
+Unpetrifying a morphology should not cause it to start having repo or
+ref fields when referring to strata, when it didn't before.
+
+ AND in branch foo, system test-system refers to test-stratum without repo
+ AND in branch foo, system test-system refers to test-stratum without ref
+
Tagging system branches
-----------------------
diff --git a/yarns/implementations.yarn b/yarns/implementations.yarn
index 2a46dfa..ccebabc 100644
--- a/yarns/implementations.yarn
+++ b/yarns/implementations.yarn
@@ -409,14 +409,20 @@ Report system branch root repository.
Editing morphologies with `morph edit`.
- IMPLEMENTS THEN in branch (\S+), (system|stratum) (\S+) refs (\S+) in (\S+)
- if [ $MATCH_2 == system ]; then set strata; else set chunks; fi
+ IMPLEMENTS THEN in branch (\S+), stratum (\S+) refs (\S+) in (\S+)
"$SRCDIR/scripts/yaml-extract" \
- "$DATADIR/workspace/$MATCH_1/test:morphs/$MATCH_3.morph" \
- $@ name="$MATCH_4" ref > "$DATADIR/ref.actual"
- echo "$MATCH_5" > "$DATADIR/ref.wanted"
+ "$DATADIR/workspace/$MATCH_1/test:morphs/$MATCH_2.morph" \
+ chunks name="$MATCH_3" ref > "$DATADIR/ref.actual"
+ echo "$MATCH_4" > "$DATADIR/ref.wanted"
diff -u "$DATADIR/ref.wanted" "$DATADIR/ref.actual"
+ IMPLEMENTS THEN in branch (\S+), (system|stratum) (\S+) refers to (\S+) without (\S+)
+ if [ $MATCH_2 == system ]; then field=strata; else field=build-depends; fi
+ { ! "$SRCDIR/scripts/yaml-extract" \
+ "$DATADIR/workspace/$MATCH_1/test:morphs/$MATCH_3.morph" \
+ "$field" name="$MATCH_4" "$MATCH_5"; } 2>&1 |
+ grep -qFe "Object does not contain $MATCH_5"
+
IMPLEMENTS WHEN the user edits the stratum (\S+) in the system (\S+) in branch (\S+)
cd "$DATADIR/workspace/$MATCH_3/test:morphs"
run_morph edit "$MATCH_2" "$MATCH_1"