summaryrefslogtreecommitdiff
path: root/tests.branching
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2012-10-17 13:43:31 +0100
committerSam Thursfield <sam.thursfield@codethink.co.uk>2012-10-18 11:51:00 +0100
commitc1d2fe7d811b15eb411b976b2619c44f46b8267e (patch)
treee410ecc95513da3cc78e4ff742ba3f62850e2418 /tests.branching
parentcf7ed1cb79d4862c92261ac57a27b082a8f10f84 (diff)
downloadmorph-c1d2fe7d811b15eb411b976b2619c44f46b8267e.tar.gz
morph petrify: Avoid petrifying chunks that have already been edited
This change causes 'morph petrify' to avoid petrifying any chunk whose ref matches the current system branch, because it makes no sense to petrify something that is also being edited. It also improves efficiency slightly and adds warning where different systems point to different refs of the same stratum. A non-obvious effect of this is that if you try to petrify 'master', many of the chunks won't get petrified because they are built from 'master'. However, petrifying master makes no sense so I'm not sure that we need to worry.
Diffstat (limited to 'tests.branching')
-rwxr-xr-xtests.branching/petrify-no-double-petrify.script4
-rwxr-xr-xtests.branching/petrify.script11
-rw-r--r--tests.branching/petrify.stdout12
-rwxr-xr-xtests.branching/setup-second-chunk69
4 files changed, 91 insertions, 5 deletions
diff --git a/tests.branching/petrify-no-double-petrify.script b/tests.branching/petrify-no-double-petrify.script
index 3e7ac412..9fc00d39 100755
--- a/tests.branching/petrify-no-double-petrify.script
+++ b/tests.branching/petrify-no-double-petrify.script
@@ -31,9 +31,9 @@ fi
cd "$DATADIR/workspace"
"$SRCDIR/scripts/test-morph" init
-"$SRCDIR/scripts/test-morph" checkout baserock:morphs master
+"$SRCDIR/scripts/test-morph" branch baserock:morphs test/petrify
-cd master/baserock:morphs
+cd test/petrify/baserock:morphs
"$SRCDIR/scripts/test-morph" petrify
"$SRCDIR/scripts/test-morph" petrify
"$SRCDIR/scripts/test-morph" petrify
diff --git a/tests.branching/petrify.script b/tests.branching/petrify.script
index 0b5ff018..c1828bf3 100755
--- a/tests.branching/petrify.script
+++ b/tests.branching/petrify.script
@@ -15,7 +15,8 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-# Verify that "morph petrify" works.
+# Verify "morph petrify", and ensure it doesn't petrify chunks that have
+# already been edited.
set -eu
@@ -28,11 +29,15 @@ then
exit 0
fi
+. "$SRCDIR/tests.branching/setup-second-chunk"
+
cd "$DATADIR/workspace"
"$SRCDIR/scripts/test-morph" init
-"$SRCDIR/scripts/test-morph" checkout baserock:morphs master
+"$SRCDIR/scripts/test-morph" branch baserock:morphs test/petrify master
+
+cd test/petrify/baserock:morphs
+"$SRCDIR/scripts/test-morph" edit hello-system hello-stratum goodbye
-cd master/baserock:morphs
"$SRCDIR/scripts/test-morph" petrify
echo "Petrified:"
cat hello-stratum.morph
diff --git a/tests.branching/petrify.stdout b/tests.branching/petrify.stdout
index 249a8f59..6219c84e 100644
--- a/tests.branching/petrify.stdout
+++ b/tests.branching/petrify.stdout
@@ -9,6 +9,12 @@ Petrified:
"ref": "f4d032b42c0134e67bdf19a43fa99072493667d7",
"build-depends": [],
"unpetrify-ref": "master"
+ },
+ {
+ "name": "goodbye",
+ "repo": "baserock:goodbye",
+ "ref": "test/petrify",
+ "build-depends": []
}
]
}
@@ -23,6 +29,12 @@ Unpetrified:
"repo": "baserock:hello",
"ref": "master",
"build-depends": []
+ },
+ {
+ "name": "goodbye",
+ "repo": "baserock:goodbye",
+ "ref": "test/petrify",
+ "build-depends": []
}
]
}
diff --git a/tests.branching/setup-second-chunk b/tests.branching/setup-second-chunk
new file mode 100755
index 00000000..9f7aa419
--- /dev/null
+++ b/tests.branching/setup-second-chunk
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Copyright (C) 2012 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
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+# Add a second chunk to hello-stratum.
+
+. "$SRCDIR/scripts/fix-committer-info"
+
+create_chunk() {
+ REPO="$1"
+ NAME="$2"
+
+ mkdir "$1"
+ ln -s "$1" "$1.git"
+ cd "$1"
+
+ cat <<EOF > "$1/$2.morph"
+{
+ "name": "$2",
+ "kind": "chunk",
+ "build-system": "dummy"
+}
+EOF
+
+ git init --quiet
+ git add .
+ git commit --quiet -m "Initial commit"
+}
+
+create_chunk "$DATADIR/goodbye" "hello"
+
+cd "$DATADIR/morphs"
+cat <<EOF > hello-stratum.morph
+{
+ "name": "hello-stratum",
+ "kind": "stratum",
+ "chunks": [
+ {
+ "name": "hello",
+ "repo": "baserock:hello",
+ "ref": "master",
+ "build-depends": []
+ },
+ {
+ "name": "goodbye",
+ "repo": "baserock:goodbye",
+ "ref": "master",
+ "build-depends": []
+ }
+ ]
+}
+EOF
+
+git commit -q --all -m "Add goodbye to hello-stratum"
+
+cd "$DATADIR/workspace"