summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcheck1
-rw-r--r--scripts/setup-3rd-party-strata (renamed from tests.branching/setup-3rd-party-strata)0
-rwxr-xr-xtests.branching/merge.script69
-rwxr-xr-xtests.branching/status-in-dirty-branch.script2
-rwxr-xr-xtests.branching/workflow-petrify.script2
-rwxr-xr-xtests.branching/workflow-separate-stratum-repos.script2
-rwxr-xr-xtests.merging/basic.script (renamed from tests.branching/merge-not-to-master.script)11
-rw-r--r--tests.merging/basic.stdout (renamed from tests.branching/merge.stdout)2
-rwxr-xr-xtests.merging/conflict-chunks.script (renamed from tests.branching/merge-conflict-chunks.script)2
-rw-r--r--tests.merging/conflict-chunks.stderr (renamed from tests.branching/merge-conflict-chunks.stderr)0
-rw-r--r--tests.merging/conflict-chunks.stdout (renamed from tests.branching/merge-conflict-chunks.stdout)0
-rw-r--r--tests.merging/conflict-morphology-kind.exit (renamed from tests.branching/merge-conflict-stratum.exit)0
-rwxr-xr-xtests.merging/conflict-morphology-kind.script (renamed from tests.branching/merge-handles-unmergable-cases.script)2
-rw-r--r--tests.merging/conflict-morphology-kind.stderr (renamed from tests.branching/merge-handles-unmergable-cases.stderr)0
-rw-r--r--tests.merging/conflict-stratum-field-ordering.exit (renamed from tests.branching/merge-handles-unmergable-cases.exit)0
-rwxr-xr-xtests.merging/conflict-stratum-field-ordering.script (renamed from tests.branching/merge-conflict-stratum.script)8
-rw-r--r--tests.merging/conflict-stratum-field-ordering.stderr (renamed from tests.branching/merge-conflict-stratum.stderr)0
-rw-r--r--tests.merging/conflict-stratum-field-ordering.stdout (renamed from tests.branching/merge-conflict-stratum.stdout)0
-rwxr-xr-xtests.merging/from-branch-not-checked-out.script (renamed from tests.branching/merge-error-cases.script)2
-rw-r--r--tests.merging/from-branch-not-checked-out.stderr (renamed from tests.branching/merge-error-cases.stderr)0
-rw-r--r--tests.merging/move-chunk-repo.exit (renamed from tests.branching/merge-with-chunk-repo-moved.exit)0
-rwxr-xr-xtests.merging/move-chunk-repo.script (renamed from tests.branching/merge-with-chunk-repo-moved.script)0
-rw-r--r--tests.merging/move-chunk-repo.stderr (renamed from tests.branching/merge-with-chunk-repo-moved.stderr)0
-rwxr-xr-xtests.merging/rename-chunk.script (renamed from tests.branching/merge-with-chunk-renamed.script)0
-rw-r--r--tests.merging/rename-stratum.exit (renamed from tests.branching/merge-with-stratum-renamed.exit)0
-rwxr-xr-xtests.merging/rename-stratum.script (renamed from tests.branching/merge-with-stratum-renamed.script)0
-rw-r--r--tests.merging/rename-stratum.stderr (renamed from tests.branching/merge-with-stratum-renamed.stderr)0
-rwxr-xr-xtests.merging/setup115
-rwxr-xr-xtests.merging/warn-if-merging-petrified-morphologies.script (renamed from tests.branching/merge-warns-if-merging-petrified-morphologies.script)0
-rw-r--r--tests.merging/warn-if-merging-petrified-morphologies.stdout (renamed from tests.branching/merge-warns-if-merging-petrified-morphologies.stdout)0
30 files changed, 141 insertions, 77 deletions
diff --git a/check b/check
index b9ed2d56..7288e55f 100755
--- a/check
+++ b/check
@@ -22,6 +22,7 @@ set -e
python setup.py clean check
cmdtest tests
cmdtest tests.branching
+cmdtest tests.merging
if [ $(whoami) = root ] && command -v mkfs.btrfs > /dev/null
then
cmdtest tests.as-root
diff --git a/tests.branching/setup-3rd-party-strata b/scripts/setup-3rd-party-strata
index 49eca394..49eca394 100644
--- a/tests.branching/setup-3rd-party-strata
+++ b/scripts/setup-3rd-party-strata
diff --git a/tests.branching/merge.script b/tests.branching/merge.script
deleted file mode 100755
index d73e4835..00000000
--- a/tests.branching/merge.script
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/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 merge" merges a system branch into master
-
-set -eu
-
-# Disable test on versions of Python before 2.7.
-if ! python --version 2>&1 | grep '^Python 2\.[78]' > /dev/null
-then
- cat "$SRCDIR/tests.branching/merge.stdout"
- exit 0
-fi
-
-# Create system branch.
-cd "$DATADIR/workspace"
-"$SRCDIR/scripts/test-morph" init
-"$SRCDIR/scripts/test-morph" branch baserock:morphs baserock/newbranch
-
-# Make a change to a chunk.
-cd baserock/newbranch
-"$SRCDIR/scripts/test-morph" edit hello-system hello-stratum hello
-cd baserock:hello
-touch newfile.txt
-git add newfile.txt
-git commit -m foo --quiet
-git push --quiet origin baserock/newbranch
-
-# Commit in morphs repo
-cd ../baserock:morphs
-git commit --all --quiet -m "Update morph refs for baserock/newbranch"
-
-# Merge changes back to master
-cd "$DATADIR/workspace"
-"$SRCDIR/scripts/test-morph" checkout baserock:morphs master
-cd master
-"$SRCDIR/scripts/test-morph" merge baserock/newbranch
-
-# Check results.
-cd baserock:hello
-git status --short # make sure all changes are committed
-[ -e newfile.txt ] # make sure the new file is there
-
-# Make sure all refs to the merged branch have gone.
-cd ../baserock:morphs
-! grep "\"ref\": \"baserock/newbranch\"" *.morph
-
-# The only change here was the branch refs, which have now been
-# changed back - so there should not be any new commits.
-echo "Commit message for baserock:morphs"
-git cat-file commit HEAD | tail -n 1
-
-echo
-echo "Commit message for baserock:hello"
-cd ../baserock:hello
-git cat-file commit HEAD | tail -n 1
diff --git a/tests.branching/status-in-dirty-branch.script b/tests.branching/status-in-dirty-branch.script
index 36ed781d..beb58ced 100755
--- a/tests.branching/status-in-dirty-branch.script
+++ b/tests.branching/status-in-dirty-branch.script
@@ -19,7 +19,7 @@
set -eu
-. "$SRCDIR/tests.branching/setup-3rd-party-strata"
+. "$SRCDIR/scripts/setup-3rd-party-strata"
cd "$DATADIR/workspace"
"$SRCDIR/scripts/test-morph" branch baserock:morphs test
diff --git a/tests.branching/workflow-petrify.script b/tests.branching/workflow-petrify.script
index d83eb06b..ac8b233e 100755
--- a/tests.branching/workflow-petrify.script
+++ b/tests.branching/workflow-petrify.script
@@ -28,7 +28,7 @@ then
exit 0
fi
-. "$SRCDIR/tests.branching/setup-3rd-party-strata"
+. "$SRCDIR/scripts/setup-3rd-party-strata"
cd "$DATADIR/workspace"
"$SRCDIR/scripts/test-morph" branch baserock:morphs test/petrify
diff --git a/tests.branching/workflow-separate-stratum-repos.script b/tests.branching/workflow-separate-stratum-repos.script
index d8be404c..6f77672e 100755
--- a/tests.branching/workflow-separate-stratum-repos.script
+++ b/tests.branching/workflow-separate-stratum-repos.script
@@ -22,7 +22,7 @@
set -eu
-. "$SRCDIR/tests.branching/setup-3rd-party-strata"
+. "$SRCDIR/scripts/setup-3rd-party-strata"
# Make a change to the system
# FIXME: we should try and build it, too
diff --git a/tests.branching/merge-not-to-master.script b/tests.merging/basic.script
index 824e89b6..741e8a3f 100755
--- a/tests.branching/merge-not-to-master.script
+++ b/tests.merging/basic.script
@@ -73,3 +73,14 @@ git status --short
# Make sure all refs to the merged branch have gone.
! grep "\"ref\": \"test/feature\"" *.morph
+
+# The only change here was the branch refs, which have now been
+# changed back - so there should not be any new commits.
+echo "Commit message for baserock:morphs"
+git cat-file commit HEAD | tail -n 1
+
+echo
+echo "Commit message for baserock:hello"
+cd ../baserock:hello
+git cat-file commit HEAD | tail -n 1
+
diff --git a/tests.branching/merge.stdout b/tests.merging/basic.stdout
index 6806f75a..2bdde644 100644
--- a/tests.branching/merge.stdout
+++ b/tests.merging/basic.stdout
@@ -2,4 +2,4 @@ Commit message for baserock:morphs
initial
Commit message for baserock:hello
-Merge system branch 'baserock/newbranch'
+Merge system branch 'test/feature'
diff --git a/tests.branching/merge-conflict-chunks.script b/tests.merging/conflict-chunks.script
index 547f6b62..98efcc3e 100755
--- a/tests.branching/merge-conflict-chunks.script
+++ b/tests.merging/conflict-chunks.script
@@ -27,7 +27,7 @@ then
exit 0
fi
-. "$SRCDIR/tests.branching/setup-3rd-party-strata"
+. "$SRCDIR/scripts/setup-3rd-party-strata"
# Create stable branch to merge TO
"$SRCDIR/scripts/test-morph" branch baserock:morphs test/stable
diff --git a/tests.branching/merge-conflict-chunks.stderr b/tests.merging/conflict-chunks.stderr
index 57aafa5a..57aafa5a 100644
--- a/tests.branching/merge-conflict-chunks.stderr
+++ b/tests.merging/conflict-chunks.stderr
diff --git a/tests.branching/merge-conflict-chunks.stdout b/tests.merging/conflict-chunks.stdout
index bf6d3828..bf6d3828 100644
--- a/tests.branching/merge-conflict-chunks.stdout
+++ b/tests.merging/conflict-chunks.stdout
diff --git a/tests.branching/merge-conflict-stratum.exit b/tests.merging/conflict-morphology-kind.exit
index d00491fd..d00491fd 100644
--- a/tests.branching/merge-conflict-stratum.exit
+++ b/tests.merging/conflict-morphology-kind.exit
diff --git a/tests.branching/merge-handles-unmergable-cases.script b/tests.merging/conflict-morphology-kind.script
index e1ba5f9e..d8fcc6ef 100755
--- a/tests.branching/merge-handles-unmergable-cases.script
+++ b/tests.merging/conflict-morphology-kind.script
@@ -14,7 +14,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-# Things that "morph merge" isn't expected to handle (but shouldn't crash)
+# If morphology kind differs between branches, it's a merge conflict
set -eu
diff --git a/tests.branching/merge-handles-unmergable-cases.stderr b/tests.merging/conflict-morphology-kind.stderr
index ff6539a7..ff6539a7 100644
--- a/tests.branching/merge-handles-unmergable-cases.stderr
+++ b/tests.merging/conflict-morphology-kind.stderr
diff --git a/tests.branching/merge-handles-unmergable-cases.exit b/tests.merging/conflict-stratum-field-ordering.exit
index d00491fd..d00491fd 100644
--- a/tests.branching/merge-handles-unmergable-cases.exit
+++ b/tests.merging/conflict-stratum-field-ordering.exit
diff --git a/tests.branching/merge-conflict-stratum.script b/tests.merging/conflict-stratum-field-ordering.script
index ff00f364..071d5204 100755
--- a/tests.branching/merge-conflict-stratum.script
+++ b/tests.merging/conflict-stratum-field-ordering.script
@@ -14,7 +14,13 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-# Simple merge conflict handling test.
+# Conflict caused by two equivalent strata having different order in two
+# different branches
+
+# Morph should possibly resolve this conflict automatically in the future,
+# because the meaning of the morphologies is unambiguious if not the
+# contents. It depends on how much weight we give to the sort order of
+# the morphology from a developer's point of view.
set -eu
diff --git a/tests.branching/merge-conflict-stratum.stderr b/tests.merging/conflict-stratum-field-ordering.stderr
index 57aafa5a..57aafa5a 100644
--- a/tests.branching/merge-conflict-stratum.stderr
+++ b/tests.merging/conflict-stratum-field-ordering.stderr
diff --git a/tests.branching/merge-conflict-stratum.stdout b/tests.merging/conflict-stratum-field-ordering.stdout
index cce0973c..cce0973c 100644
--- a/tests.branching/merge-conflict-stratum.stdout
+++ b/tests.merging/conflict-stratum-field-ordering.stdout
diff --git a/tests.branching/merge-error-cases.script b/tests.merging/from-branch-not-checked-out.script
index e802f139..2ead7f0f 100755
--- a/tests.branching/merge-error-cases.script
+++ b/tests.merging/from-branch-not-checked-out.script
@@ -14,7 +14,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-# Check "morph merge" gives reasonable error messages
+# Handle 'from' branch not being checked out
set -eu
diff --git a/tests.branching/merge-error-cases.stderr b/tests.merging/from-branch-not-checked-out.stderr
index 6a9cc8a9..6a9cc8a9 100644
--- a/tests.branching/merge-error-cases.stderr
+++ b/tests.merging/from-branch-not-checked-out.stderr
diff --git a/tests.branching/merge-with-chunk-repo-moved.exit b/tests.merging/move-chunk-repo.exit
index d00491fd..d00491fd 100644
--- a/tests.branching/merge-with-chunk-repo-moved.exit
+++ b/tests.merging/move-chunk-repo.exit
diff --git a/tests.branching/merge-with-chunk-repo-moved.script b/tests.merging/move-chunk-repo.script
index d14d586f..d14d586f 100755
--- a/tests.branching/merge-with-chunk-repo-moved.script
+++ b/tests.merging/move-chunk-repo.script
diff --git a/tests.branching/merge-with-chunk-repo-moved.stderr b/tests.merging/move-chunk-repo.stderr
index 95fe61e6..95fe61e6 100644
--- a/tests.branching/merge-with-chunk-repo-moved.stderr
+++ b/tests.merging/move-chunk-repo.stderr
diff --git a/tests.branching/merge-with-chunk-renamed.script b/tests.merging/rename-chunk.script
index 06969b70..06969b70 100755
--- a/tests.branching/merge-with-chunk-renamed.script
+++ b/tests.merging/rename-chunk.script
diff --git a/tests.branching/merge-with-stratum-renamed.exit b/tests.merging/rename-stratum.exit
index d00491fd..d00491fd 100644
--- a/tests.branching/merge-with-stratum-renamed.exit
+++ b/tests.merging/rename-stratum.exit
diff --git a/tests.branching/merge-with-stratum-renamed.script b/tests.merging/rename-stratum.script
index 6daac566..6daac566 100755
--- a/tests.branching/merge-with-stratum-renamed.script
+++ b/tests.merging/rename-stratum.script
diff --git a/tests.branching/merge-with-stratum-renamed.stderr b/tests.merging/rename-stratum.stderr
index ff408036..ff408036 100644
--- a/tests.branching/merge-with-stratum-renamed.stderr
+++ b/tests.merging/rename-stratum.stderr
diff --git a/tests.merging/setup b/tests.merging/setup
new file mode 100755
index 00000000..f075e7b1
--- /dev/null
+++ b/tests.merging/setup
@@ -0,0 +1,115 @@
+#!/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.
+
+
+# Set up $DATADIR.
+#
+# - a morph.conf configuration file
+# - an empty morph workspace directory
+# - a git repository called "morphs" for fake system, stratum morphologies
+# - a git repository calle "hello" for a dummy chunk
+
+set -eu
+
+source "$SRCDIR/scripts/fix-committer-info"
+
+# Create a morph configuration file
+cat <<EOF > "$DATADIR/morph.conf"
+[config]
+repo-alias = baserock=file://$DATADIR/%s#file://$DATADIR/%s
+cachedir = $DATADIR/workspace/.morph/cache
+log = $DATADIR/morph.log
+keep-path = true
+no-distcc = true
+quiet = true
+EOF
+
+
+# Create an empty directory to be used as a morph workspace
+mkdir "$DATADIR/workspace"
+
+
+# Create a fake morphs repository
+mkdir "$DATADIR/morphs"
+
+## Create a link to this repo that has a .git suffix
+ln -s "$DATADIR/morphs" "$DATADIR/morphs.git"
+
+cat <<EOF > "$DATADIR/morphs/hello-system.morph"
+{
+ "name": "hello-system",
+ "kind": "system",
+ "system-kind": "syslinux-disk",
+ "arch": "$(uname -m)",
+ "disk-size": "1G",
+ "strata": [
+ {
+ "morph": "hello-stratum",
+ "repo": "baserock:morphs",
+ "ref": "master"
+ }
+ ]
+}
+EOF
+
+cat <<EOF > "$DATADIR/morphs/hello-stratum.morph"
+{
+ "name": "hello-stratum",
+ "kind": "stratum",
+ "chunks": [
+ {
+ "name": "hello",
+ "repo": "baserock:hello",
+ "ref": "master",
+ "build-depends": []
+ }
+ ]
+}
+EOF
+
+scripts/run-git-in "$DATADIR/morphs" init
+scripts/run-git-in "$DATADIR/morphs" add .
+scripts/run-git-in "$DATADIR/morphs" commit -m initial
+
+
+# Add an extra branch to the morphs repo.
+scripts/run-git-in "$DATADIR/morphs" checkout -b alfred
+touch "$DATADIR/morphs/this.is.alfred"
+scripts/run-git-in "$DATADIR/morphs" add this.is.alfred
+scripts/run-git-in "$DATADIR/morphs" commit --quiet -m 'mark as alfred'
+scripts/run-git-in "$DATADIR/morphs" checkout master
+
+
+# Create a dummy chunk repository
+mkdir "$DATADIR/hello"
+
+cat <<EOF > "$DATADIR/hello/hello.morph"
+{
+ "name": "hello",
+ "kind": "chunk",
+ "build-system": "dummy"
+}
+EOF
+
+scripts/run-git-in "$DATADIR/hello" init
+scripts/run-git-in "$DATADIR/hello" add .
+scripts/run-git-in "$DATADIR/hello" commit -m initial
+
+
+# Add an extra branch to the hello repo.
+scripts/run-git-in "$DATADIR/hello" checkout -b alfred
+scripts/run-git-in "$DATADIR/hello" checkout master
+
diff --git a/tests.branching/merge-warns-if-merging-petrified-morphologies.script b/tests.merging/warn-if-merging-petrified-morphologies.script
index 12e726ed..12e726ed 100755
--- a/tests.branching/merge-warns-if-merging-petrified-morphologies.script
+++ b/tests.merging/warn-if-merging-petrified-morphologies.script
diff --git a/tests.branching/merge-warns-if-merging-petrified-morphologies.stdout b/tests.merging/warn-if-merging-petrified-morphologies.stdout
index 65985486..65985486 100644
--- a/tests.branching/merge-warns-if-merging-petrified-morphologies.stdout
+++ b/tests.merging/warn-if-merging-petrified-morphologies.stdout