summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@gmail.com>2014-08-14 18:34:25 +0100
committerRichard Maw <richard.maw@codethink.co.uk>2014-08-28 13:48:16 +0100
commit446523736170388f1fd32f855d32ce74cd544b3b (patch)
tree817597ac1801c683b942b1e7ee1c54e770d1de52
parent64fbf59724bcb7a2bc5db9fbbb32646e01138c61 (diff)
downloadmorph-446523736170388f1fd32f855d32ce74cd544b3b.tar.gz
Add yarn for building uncommitted changes
This replaces an old cmdtest.
-rwxr-xr-xtests.as-root/building-a-system-branch-picks-up-uncommitted-changes.script55
-rw-r--r--yarns/branches-workspaces.yarn34
2 files changed, 33 insertions, 56 deletions
diff --git a/tests.as-root/building-a-system-branch-picks-up-uncommitted-changes.script b/tests.as-root/building-a-system-branch-picks-up-uncommitted-changes.script
deleted file mode 100755
index 4dacb23e..00000000
--- a/tests.as-root/building-a-system-branch-picks-up-uncommitted-changes.script
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2012-2014 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 build" works anywhere in a workspace or system branch
-## and produces the same results every time.
-
-# FIXME: This seems to break because the new "morph edit" makes correct
-# changes to build-dependencies, which breaks the old "morph build".
-# Disable test now, re-enable it after "morph build" is fixed. --liw
-exit 0
-
-set -eu
-
-source "$SRCDIR/tests.as-root/setup-build"
-
-# Build the linux system from the system branch.
-cd "$DATADIR/workspace"
-"$SRCDIR/scripts/test-morph" build linux-system
-
-# Print tree SHA1s of the build ref of morphs and kernel.
-cd "$DATADIR/workspace/branch1/test/morphs"
-MORPHS_SHA1="$(git rev-parse baserock/builds/123456789/987654321)"
-cd "$DATADIR/workspace/branch1/test/kernel-repo"
-KERNEL_SHA1="$(git rev-parse baserock/builds/123456789/AABBCCDDE)"
-
-# Make an uncommitted change to the linux morphology.
-cd "$DATADIR/workspace/branch1/test/kernel-repo"
-sed -i -e 's@touch@touch foo@g' linux.morph
-
-# Build the linux system again without comitting.
-cd "$DATADIR/workspace"
-"$SRCDIR/scripts/test-morph" build linux-system
-
-# Print tree SHA1s of the build ref of morphs and kernel again.
-# This time the tree SHA1 of morphs should be the same
-# but that of the kernel repo should be different because we
-# made a change.
-cd "$DATADIR/workspace/branch1/test/morphs"
-[ "$(git rev-parse baserock/builds/123456789/987654321)" != "$MORPHS_SHA1" ]
-cd "$DATADIR/workspace/branch1/test/kernel-repo"
-[ "$(git rev-parse baserock/builds/123456789/AABBCCDDE)" != "$KERNEL_SHA1" ]
diff --git a/yarns/branches-workspaces.yarn b/yarns/branches-workspaces.yarn
index 7c85d6e0..de9f95a3 100644
--- a/yarns/branches-workspaces.yarn
+++ b/yarns/branches-workspaces.yarn
@@ -209,6 +209,27 @@ Morph always builds from committed changes, but it's not always convenient
to commit and push changes, so `morph build` can create temporary build
branches when necessary.
+### What gets included in temporary build branches ###
+
+ SCENARIO morph builds the branches of edited chunks you checked-out
+ GIVEN a workspace
+ AND a git server
+ WHEN the user checks out the system branch called master
+ AND the user edits the chunk test-chunk in branch master
+
+If we make an uncommitted change to an edited chunk, then a temporary
+build branch is made to include that change.
+
+ WHEN the user makes changes to test-chunk in branch master
+ AND the user builds systems/test-system.morph of the master branch
+ THEN the changes to test-chunk in branch master are included in the temporary build branch
+
+### When branches are created ###
+
+It's convenient to have Temporary Build Branches, but we don't always
+need them, and they get in the way when we don't need them, so we need
+to be careful about when to make them.
+
SCENARIO morph makes temporary build branches for uncommitted changes when necessary
GIVEN a workspace
AND a git server
@@ -360,16 +381,27 @@ Nor do we need temporary build branches for distributed builds.
AND no temporary build branches were pushed to the morphs repository
AND no temporary build branches were pushed to the test-chunk repository
+
+### Temporary Build Branch implementations ###
+
IMPLEMENTS WHEN the user makes changes to test-chunk in branch (\S+)
chunkdir="$(slashify_colons "test:test-chunk")"
cd "$DATADIR/workspace/$MATCH_1/$chunkdir"
sed -i -e 's/Hello/Goodbye/g' test-bin
+ IMPLEMENTS THEN the changes to test-chunk in branch (\S+) are included in the temporary build branch
+ build_ref_prefix=baserock/builds/
+ chunkdir="$(slashify_colons "test:test-chunk")"
+ cd "$DATADIR/workspace/$MATCH_1/$chunkdir"
+ eval "$(git for-each-ref --count=1 --shell --sort=committerdate \
+ --format='git cat-file -p %(refname):test-bin | diff test-bin -' \
+ "$build_ref_prefix")"
+
IMPLEMENTS WHEN the user commits changes to (\S+) in branch (\S+)
chunkdir="$(slashify_colons "test:$MATCH_1")"
cd "$DATADIR/workspace/$MATCH_2/$chunkdir"
git commit -a -m 'Commit local changes'
-
+
Status of system branch checkout
--------------------------------