summaryrefslogtreecommitdiff
path: root/tests.branching/checkout-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/checkout-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/checkout-works-anywhere.script')
-rwxr-xr-xtests.branching/checkout-works-anywhere.script46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests.branching/checkout-works-anywhere.script b/tests.branching/checkout-works-anywhere.script
new file mode 100755
index 00000000..fdc3c955
--- /dev/null
+++ b/tests.branching/checkout-works-anywhere.script
@@ -0,0 +1,46 @@
+#!/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 checkout" works anywhere in a workspace or system branch.
+
+set -eu
+
+cd "$DATADIR/workspace"
+"$SRCDIR/scripts/test-morph" init
+
+# First, check out the master branch from the workspace directory.
+"$SRCDIR/scripts/test-morph" checkout baserock:morphs master
+
+echo "Workspace after checking out master from the workspace directory:"
+"$SRCDIR/scripts/list-tree" "$DATADIR/workspace" | grep -v '/\.git/' |
+ sed 's,/cache/gits/file_[^/]*_,/cache/gits/file_,'
+
+# Reset the workspace.
+cd "$DATADIR"
+rm -rf workspace
+mkdir workspace
+cd workspace
+"$SRCDIR/scripts/test-morph" init
+
+# This time, create a new branch and check out the master branch
+# from within that branch.
+"$SRCDIR/scripts/test-morph" branch baserock:morphs newbranch
+cd newbranch/baserock:morphs
+"$SRCDIR/scripts/test-morph" checkout baserock:morphs master
+
+echo "Workspace after checking out master from within a new branch:"
+"$SRCDIR/scripts/list-tree" "$DATADIR/workspace" | grep -v '/\.git/' |
+ sed 's,/cache/gits/file_[^/]*_,/cache/gits/file_,'