diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2012-08-30 16:18:00 +0100 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2012-08-30 16:18:00 +0100 |
commit | 87799ed3bdee1128c59ae7216575a10cef595425 (patch) | |
tree | f0499b68f227fc3d3c4ae9ad96d49fe5ac1cf8a1 /tests.branching | |
parent | 7021d8b73b374118458c81249e3a8a586983e136 (diff) | |
parent | 332b39f5df8a70f0c0146189a28d465da493e441 (diff) | |
download | morph-87799ed3bdee1128c59ae7216575a10cef595425.tar.gz |
Merge branch 'jannis/show-branch-root-and-cwd-fixes'
Diffstat (limited to 'tests.branching')
11 files changed, 329 insertions, 1 deletions
diff --git a/tests.branching/branch-when-branchdir-exists-locally.stderr b/tests.branching/branch-when-branchdir-exists-locally.stderr index 6c56c250..e178cf2c 100644 --- a/tests.branching/branch-when-branchdir-exists-locally.stderr +++ b/tests.branching/branch-when-branchdir-exists-locally.stderr @@ -1 +1 @@ -ERROR: newbranch: File exists +ERROR: TMP/workspace/newbranch: File exists 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_,' diff --git a/tests.branching/branch-works-anywhere.stdout b/tests.branching/branch-works-anywhere.stdout new file mode 100644 index 00000000..cddc2d76 --- /dev/null +++ b/tests.branching/branch-works-anywhere.stdout @@ -0,0 +1,98 @@ +Workspace after creating the first branch: +d . +d ./.morph +d ./.morph/cache +d ./.morph/cache/gits +d ./.morph/cache/gits/file_morphs +d ./.morph/cache/gits/file_morphs/.git +d ./branch1 +d ./branch1/.morph-system-branch +d ./branch1/baserock:morphs +d ./branch1/baserock:morphs/.git +f ./branch1/.morph-system-branch/branch-root +f ./branch1/baserock:morphs/hello-stratum.morph +f ./branch1/baserock:morphs/hello-system.morph +Workspace after creating the second branch: +d . +d ./.morph +d ./.morph/cache +d ./.morph/cache/gits +d ./.morph/cache/gits/file_morphs +d ./.morph/cache/gits/file_morphs/.git +d ./branch1 +d ./branch1/.morph-system-branch +d ./branch1/baserock:morphs +d ./branch1/baserock:morphs/.git +d ./branch2 +d ./branch2/.morph-system-branch +d ./branch2/baserock:morphs +d ./branch2/baserock:morphs/.git +f ./branch1/.morph-system-branch/branch-root +f ./branch1/baserock:morphs/hello-stratum.morph +f ./branch1/baserock:morphs/hello-system.morph +f ./branch2/.morph-system-branch/branch-root +f ./branch2/baserock:morphs/hello-stratum.morph +f ./branch2/baserock:morphs/hello-system.morph +Workspace after creating the third branch: +d . +d ./.morph +d ./.morph/cache +d ./.morph/cache/gits +d ./.morph/cache/gits/file_morphs +d ./.morph/cache/gits/file_morphs/.git +d ./branch1 +d ./branch1/.morph-system-branch +d ./branch1/baserock:morphs +d ./branch1/baserock:morphs/.git +d ./branch2 +d ./branch2/.morph-system-branch +d ./branch2/baserock:morphs +d ./branch2/baserock:morphs/.git +d ./branch3 +d ./branch3/.morph-system-branch +d ./branch3/baserock:morphs +d ./branch3/baserock:morphs/.git +f ./branch1/.morph-system-branch/branch-root +f ./branch1/baserock:morphs/hello-stratum.morph +f ./branch1/baserock:morphs/hello-system.morph +f ./branch2/.morph-system-branch/branch-root +f ./branch2/baserock:morphs/hello-stratum.morph +f ./branch2/baserock:morphs/hello-system.morph +f ./branch3/.morph-system-branch/branch-root +f ./branch3/baserock:morphs/hello-stratum.morph +f ./branch3/baserock:morphs/hello-system.morph +Workspace after creating the fourth branch: +d . +d ./.morph +d ./.morph/cache +d ./.morph/cache/gits +d ./.morph/cache/gits/file_morphs +d ./.morph/cache/gits/file_morphs/.git +d ./branch1 +d ./branch1/.morph-system-branch +d ./branch1/baserock:morphs +d ./branch1/baserock:morphs/.git +d ./branch2 +d ./branch2/.morph-system-branch +d ./branch2/baserock:morphs +d ./branch2/baserock:morphs/.git +d ./branch3 +d ./branch3/.morph-system-branch +d ./branch3/baserock:morphs +d ./branch3/baserock:morphs/.git +d ./branch4 +d ./branch4/.morph-system-branch +d ./branch4/baserock:morphs +d ./branch4/baserock:morphs/.git +f ./branch1/.morph-system-branch/branch-root +f ./branch1/baserock:morphs/hello-stratum.morph +f ./branch1/baserock:morphs/hello-system.morph +f ./branch2/.morph-system-branch/branch-root +f ./branch2/baserock:morphs/hello-stratum.morph +f ./branch2/baserock:morphs/hello-system.morph +f ./branch3/.morph-system-branch/branch-root +f ./branch3/baserock:morphs/hello-stratum.morph +f ./branch3/baserock:morphs/hello-system.morph +f ./branch4/.morph-system-branch/branch-root +f ./branch4/baserock:morphs/hello-stratum.morph +f ./branch4/baserock:morphs/hello-system.morph 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_,' diff --git a/tests.branching/checkout-works-anywhere.stdout b/tests.branching/checkout-works-anywhere.stdout new file mode 100644 index 00000000..0cd18b85 --- /dev/null +++ b/tests.branching/checkout-works-anywhere.stdout @@ -0,0 +1,35 @@ +Workspace after checking out master from the workspace directory: +d . +d ./.morph +d ./.morph/cache +d ./.morph/cache/gits +d ./.morph/cache/gits/file_morphs +d ./.morph/cache/gits/file_morphs/.git +d ./master +d ./master/.morph-system-branch +d ./master/baserock:morphs +d ./master/baserock:morphs/.git +f ./master/.morph-system-branch/branch-root +f ./master/baserock:morphs/hello-stratum.morph +f ./master/baserock:morphs/hello-system.morph +Workspace after checking out master from within a new branch: +d . +d ./.morph +d ./.morph/cache +d ./.morph/cache/gits +d ./.morph/cache/gits/file_morphs +d ./.morph/cache/gits/file_morphs/.git +d ./master +d ./master/.morph-system-branch +d ./master/baserock:morphs +d ./master/baserock:morphs/.git +d ./newbranch +d ./newbranch/.morph-system-branch +d ./newbranch/baserock:morphs +d ./newbranch/baserock:morphs/.git +f ./master/.morph-system-branch/branch-root +f ./master/baserock:morphs/hello-stratum.morph +f ./master/baserock:morphs/hello-system.morph +f ./newbranch/.morph-system-branch/branch-root +f ./newbranch/baserock:morphs/hello-stratum.morph +f ./newbranch/baserock:morphs/hello-system.morph diff --git a/tests.branching/show-branch-root-in-branched-branch.script b/tests.branching/show-branch-root-in-branched-branch.script new file mode 100755 index 00000000..aeb06bfc --- /dev/null +++ b/tests.branching/show-branch-root-in-branched-branch.script @@ -0,0 +1,30 @@ +#!/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. + + +# Check that 'morph show-branch-root' works when being run in a +# local system branch created using 'morph branch ...'. + + +set -eu + +# Create a workspace and branch. +cd "$DATADIR/workspace" +"$SRCDIR/scripts/test-morph" init +"$SRCDIR/scripts/test-morph" branch baserock:morphs testbranch + +# Try to print the branch root repository. +"$SRCDIR/scripts/test-morph" show-branch-root diff --git a/tests.branching/show-branch-root-in-branched-branch.stdout b/tests.branching/show-branch-root-in-branched-branch.stdout new file mode 100644 index 00000000..53a8bc43 --- /dev/null +++ b/tests.branching/show-branch-root-in-branched-branch.stdout @@ -0,0 +1 @@ +baserock:morphs diff --git a/tests.branching/show-branch-root-in-checked-out-branch.script b/tests.branching/show-branch-root-in-checked-out-branch.script new file mode 100755 index 00000000..ce76cc7b --- /dev/null +++ b/tests.branching/show-branch-root-in-checked-out-branch.script @@ -0,0 +1,30 @@ +#!/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. + + +# Check that 'morph show-branch-root' works when being run in a +# local system branch created using 'morph checkout ...'. + + +set -eu + +# Create a workspace and branch. +cd "$DATADIR/workspace" +"$SRCDIR/scripts/test-morph" init +"$SRCDIR/scripts/test-morph" checkout baserock:morphs master + +# Try to print the branch root repository. +"$SRCDIR/scripts/test-morph" show-branch-root diff --git a/tests.branching/show-branch-root-in-checked-out-branch.stdout b/tests.branching/show-branch-root-in-checked-out-branch.stdout new file mode 100644 index 00000000..53a8bc43 --- /dev/null +++ b/tests.branching/show-branch-root-in-checked-out-branch.stdout @@ -0,0 +1 @@ +baserock:morphs diff --git a/tests.branching/show-branch-root-with-repo-url.script b/tests.branching/show-branch-root-with-repo-url.script new file mode 100755 index 00000000..1470e0a6 --- /dev/null +++ b/tests.branching/show-branch-root-with-repo-url.script @@ -0,0 +1,30 @@ +#!/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. + + +# Check that 'morph show-branch-root' works when being run in a +# local system branch created from a full repository URL. + + +set -eu + +# Create a workspace and branch. +cd "$DATADIR/workspace" +"$SRCDIR/scripts/test-morph" init +"$SRCDIR/scripts/test-morph" branch "file://${DATADIR}/morphs.git" testbranch + +# Try to print the branch root repository. +"$SRCDIR/scripts/test-morph" show-branch-root diff --git a/tests.branching/show-branch-root-with-repo-url.stdout b/tests.branching/show-branch-root-with-repo-url.stdout new file mode 100644 index 00000000..2d47eb40 --- /dev/null +++ b/tests.branching/show-branch-root-with-repo-url.stdout @@ -0,0 +1 @@ +file://TMP/morphs.git |