summaryrefslogtreecommitdiff
path: root/tests.branching/branch-works-anywhere.script
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-08-30 13:35:45 +0000
committerJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-08-30 14:45:06 +0000
commit332b39f5df8a70f0c0146189a28d465da493e441 (patch)
treef0499b68f227fc3d3c4ae9ad96d49fe5ac1cf8a1 /tests.branching/branch-works-anywhere.script
parent8247661b26f7232038bac95c64780121e9691db5 (diff)
downloadmorph-332b39f5df8a70f0c0146189a28d465da493e441.tar.gz
Fix branch/checkout to always create branches in the workspace directory
Doing this rather than creating the system branches in the current working directory allows "morph branch" and "morph checkout" to be run anywhere in the workspace (e.g. in a different branch). This commit also adds two tests to verify that new branches are always created in the toplevel workspace directory.
Diffstat (limited to 'tests.branching/branch-works-anywhere.script')
-rwxr-xr-xtests.branching/branch-works-anywhere.script56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests.branching/branch-works-anywhere.script b/tests.branching/branch-works-anywhere.script
new file mode 100755
index 00000000..85098f49
--- /dev/null
+++ b/tests.branching/branch-works-anywhere.script
@@ -0,0 +1,56 @@
+#!/bin/bash
+# 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.
+
+# Make sure "morph branch" works anywhere in a workspace or system branch.
+
+set -eu
+
+cd "$DATADIR/workspace"
+"$SRCDIR/scripts/test-morph" init
+
+# First, create a branch.
+"$SRCDIR/scripts/test-morph" branch baserock:morphs branch1
+
+echo "Workspace after creating the first branch:"
+"$SRCDIR/scripts/list-tree" "$DATADIR/workspace" | grep -v '/\.git/' |
+ sed 's,/cache/gits/file_[^/]*_,/cache/gits/file_,'
+
+# Now, create a nother branch from the workspace.
+"$SRCDIR/scripts/test-morph" branch baserock:morphs branch2
+
+echo "Workspace after creating the second branch:"
+"$SRCDIR/scripts/list-tree" "$DATADIR/workspace" | grep -v '/\.git/' |
+ sed 's,/cache/gits/file_[^/]*_,/cache/gits/file_,'
+
+# Now, enter the first branch and create a third branch, which
+# should not be created in the working directory but in the
+# workspace directory.
+cd "$DATADIR/workspace/branch1"
+"$SRCDIR/scripts/test-morph" branch baserock:morphs branch3
+
+echo "Workspace after creating the third branch:"
+"$SRCDIR/scripts/list-tree" "$DATADIR/workspace" | grep -v '/\.git/' |
+ sed 's,/cache/gits/file_[^/]*_,/cache/gits/file_,'
+
+# Now, go into the morphs repository of that third branch and
+# create a fourth system branch from in there. This, too, should
+# end up being created in the toplevel workspace directory.
+cd "$DATADIR/workspace/branch3/baserock:morphs"
+"$SRCDIR/scripts/test-morph" branch baserock:morphs branch4
+
+echo "Workspace after creating the fourth branch:"
+"$SRCDIR/scripts/list-tree" "$DATADIR/workspace" | grep -v '/\.git/' |
+ sed 's,/cache/gits/file_[^/]*_,/cache/gits/file_,'