summaryrefslogtreecommitdiff
path: root/yarns/implementations.yarn
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2014-06-19 13:55:30 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2014-07-10 13:57:32 +0000
commit597f2a19363b7e91b928d814627c9236779998fb (patch)
treea6577fd429433b8e251e4eb34f0f2ff23d325f67 /yarns/implementations.yarn
parent670bcd28354ed2d44c02eaa0d0d1a78f6c49458d (diff)
downloadmorph-597f2a19363b7e91b928d814627c9236779998fb.tar.gz
yarns: Adapt to put morphologies in subdirsbaserock/richardmaw/S11284/morphologies-by-path-v4
We want to move our morphologies in our definitions repository into subdirectories, so they're more organised. We'd prefer to only refer to morphologies by file path, rather than a name that loosely corresponds to the file path, but we need to support that for backwards compatibility until we can move all of our morphologies into the definitions repository. However, since we want to eventually remove this, and we want to ensure that file paths work, we change the yarn tests to use file paths.
Diffstat (limited to 'yarns/implementations.yarn')
-rw-r--r--yarns/implementations.yarn90
1 files changed, 46 insertions, 44 deletions
diff --git a/yarns/implementations.yarn b/yarns/implementations.yarn
index b3e3ae79..d32bfd61 100644
--- a/yarns/implementations.yarn
+++ b/yarns/implementations.yarn
@@ -72,16 +72,16 @@ another to hold a chunk.
mkdir "$DATADIR/gits/morphs"
arch=$(run_morph print-architecture)
- cat << EOF > "$DATADIR/gits/morphs/test-system.morph"
+ install -m644 -D /dev/stdin << EOF "$DATADIR/gits/morphs/systems/test-system.morph"
name: test-system
kind: system
arch: $arch
strata:
- - name: test-stratum
- morph: test-stratum
+ - name: test-stratum
+ morph: strata/test-stratum.morph
EOF
- cat << EOF > "$DATADIR/gits/morphs/test-stratum.morph"
+ install -m644 -D /dev/stdin << EOF "$DATADIR/gits/morphs/strata/test-stratum.morph"
name: test-stratum
kind: stratum
chunks:
@@ -106,7 +106,7 @@ another to hold a chunk.
# dummy files in all the places that different kinds of files are
# usually installed. e.g. executables in `/bin` and `/usr/bin`
- cat << 'EOF' > "$DATADIR/gits/test-chunk/test-chunk.morph"
+ install -m644 -D /dev/stdin << 'EOF' "$DATADIR/gits/test-chunk/test-chunk.morph"
name: test-chunk
kind: chunk
build-system: manual
@@ -274,7 +274,7 @@ have a morphology using the test architecture.
run_in "$DATADIR/gits/test-chunk" git commit -m Initial.
- cat << EOF > "$DATADIR/gits/morphs/build-essential.morph"
+ install -m644 -D /dev/stdin << EOF "$DATADIR/gits/morphs/strata/build-essential.morph"
name: build-essential
kind: stratum
chunks:
@@ -286,11 +286,11 @@ have a morphology using the test architecture.
build-depends: []
EOF
- cat << EOF > "$DATADIR/gits/morphs/core.morph"
+ install -m644 -D /dev/stdin << EOF "$DATADIR/gits/morphs/strata/core.morph"
name: core
kind: stratum
build-depends:
- - morph: build-essential
+ - morph: strata/build-essential.morph
chunks:
- name: test-chunk
repo: test:test-chunk
@@ -300,22 +300,23 @@ have a morphology using the test architecture.
build-depends: []
EOF
- cat << EOF > "$DATADIR/gits/morphs/$MATCH_1.morph"
+ name="$(basename "${MATCH_1%.*}")"
+ cat << EOF > "$DATADIR/gits/morphs/$MATCH_1"
arch: testarch
configuration-extensions: []
- description: A system called $MATCH_1 for test architecture
+ description: A system called $name for test architecture
kind: system
- name: $MATCH_1
+ name: $name
strata:
- name: build-essential
- morph: build-essential
+ morph: strata/build-essential.morph
- name: core
- morph: core
+ morph: strata/core.morph
EOF
- run_in "$DATADIR/gits/morphs" git add "build-essential.morph"
- run_in "$DATADIR/gits/morphs" git add "core.morph"
- run_in "$DATADIR/gits/morphs" git add "$MATCH_1.morph"
+ run_in "$DATADIR/gits/morphs" git add "strata/build-essential.morph"
+ run_in "$DATADIR/gits/morphs" git add "strata/core.morph"
+ run_in "$DATADIR/gits/morphs" git add "$MATCH_1"
run_in "$DATADIR/gits/morphs" git commit -m "Added $MATCH_1 and strata morphologies."
@@ -341,8 +342,8 @@ We also need to verify that a system branch has been checked out.
IMPLEMENTS THEN the system branch (\S+) is checked out
is_dir "$DATADIR/workspace/$MATCH_1/test/morphs"
- is_file "$DATADIR/workspace/$MATCH_1/test/morphs/test-system.morph"
- is_file "$DATADIR/workspace/$MATCH_1/test/morphs/test-stratum.morph"
+ is_file "$DATADIR/workspace/$MATCH_1/test/morphs/systems/test-system.morph"
+ is_file "$DATADIR/workspace/$MATCH_1/test/morphs/strata/test-stratum.morph"
We can create a new branch, off master.
@@ -411,20 +412,20 @@ Editing morphologies with `morph edit`.
IMPLEMENTS THEN in branch (\S+), stratum (\S+) refs (\S+) in (\S+)
"$SRCDIR/scripts/yaml-extract" \
- "$DATADIR/workspace/$MATCH_1/test/morphs/$MATCH_2.morph" \
+ "$DATADIR/workspace/$MATCH_1/test/morphs/$MATCH_2" \
chunks name="$MATCH_3" ref > "$DATADIR/ref.actual"
echo "$MATCH_4" > "$DATADIR/ref.wanted"
diff -u "$DATADIR/ref.wanted" "$DATADIR/ref.actual"
IMPLEMENTS THEN in branch (\S+), (system|stratum) (\S+) refers to (\S+) without (\S+)
if [ $MATCH_2 == system ]; then field=strata; else field=build-depends; fi
- { ! "$SRCDIR/scripts/yaml-extract" \
- "$DATADIR/workspace/$MATCH_1/test/morphs/$MATCH_3.morph" \
- "$field" name="$MATCH_4" "$MATCH_5"; } 2>&1 |
- grep -qFe "Object does not contain $MATCH_5"
+ "$SRCDIR/scripts/yaml-extract" \
+ "$DATADIR/workspace/$MATCH_1/test/morphs/$MATCH_3" \
+ "$field" name="$MATCH_4" "$MATCH_5" 2>&1 |
+ grep -qFe "Object does not contain $MATCH_5"
- IMPLEMENTS WHEN the user edits the chunk (\S+) in the stratum (\S+) in the system (\S+) in branch (\S+)
- cd "$DATADIR/workspace/$MATCH_4/test/morphs"
+ IMPLEMENTS WHEN the user edits the chunk (\S+) in branch (\S+)
+ cd "$DATADIR/workspace/$MATCH_2/test/morphs"
run_morph edit "$MATCH_1"
IMPLEMENTS THEN the edited chunk (\S+) has git branch (\S+)
@@ -441,15 +442,16 @@ print-architecture` to get a value appropriate for morph.
IMPLEMENTS WHEN the user creates an uncommitted system morphology called (\S+) for our architecture in system branch (\S+)
arch=$(morph print-architecture)
- cat << EOF > "$DATADIR/workspace/$MATCH_2/test/morphs/$MATCH_1.morph"
+ name="$(basename "${MATCH_1%.*}")"
+ install -m644 -D /dev/stdin << EOF "$DATADIR/workspace/$MATCH_2/test/morphs/$MATCH_1"
arch: $arch
configuration-extensions: []
- description: A system called $MATCH_1 for architectures $arch
+ description: A system called $name for architectures $arch
kind: system
- name: $MATCH_1
+ name: $name
strata:
- name: test-stratum
- morph: test-stratum
+ morph: strata/test-stratum.morph
EOF
Reporting status of checked out repositories:
@@ -509,7 +511,7 @@ Petrification and unpetrification:
IMPLEMENTS WHEN remembering all refs in (\S+)
cd "$DATADIR/workspace/$MATCH_1/test/morphs"
- list_refs *.morph > "$DATADIR/refs.remembered"
+ list_refs $(find . -type f) > "$DATADIR/refs.remembered"
IMPLEMENTS THEN (\S+) refs are as remembered
cd "$DATADIR/workspace/$MATCH_1/test/morphs"
@@ -524,13 +526,13 @@ Petrification and unpetrification:
#
# We would like to verify the result like this:
#
- # list_refs *.morph > "$DATADIR/refs.now"
+ # list_refs $(find . -type f) > "$DATADIR/refs.now"
# diff -u "$DATADIR/refs.remembered" "$DATADIR/refs.now"
#
# However, due to the bug, we have to do it in a more complicated
# manner.
- list_refs *.morph |
+ list_refs $(find . -type f) |
while read filename ref
do
orig=$(awk -v "f=$filename" '$1 == f { print $2 }' \
@@ -551,7 +553,7 @@ Petrification and unpetrification:
IMPLEMENTS THEN (\S+) is petrified
cd "$DATADIR/workspace/$MATCH_1/test/morphs"
- assert_morphologies_are_petrified "$MATCH_1" *.morph
+ assert_morphologies_are_petrified "$MATCH_1" $(find . -type f)
Generating a manifest.
@@ -804,15 +806,15 @@ Altering morphologies in their source repositories
IMPLEMENTS GIVEN system (\S+) uses (.+) from (\S+)
"$SRCDIR/scripts/edit-morph" set-system-artifact-depends \
- "$DATADIR/gits/morphs/$MATCH_1.morph" "$MATCH_3" "$MATCH_2"
- run_in "$DATADIR/gits/morphs" git add "$MATCH_1.morph"
+ "$DATADIR/gits/morphs/$MATCH_1" "$MATCH_3" "$MATCH_2"
+ run_in "$DATADIR/gits/morphs" git add "$MATCH_1"
run_in "$DATADIR/gits/morphs" git commit -m "Make $MATCH_1 only use $MATCH_2"
IMPLEMENTS GIVEN stratum (\S+) has match rules: (.*)
cd "$DATADIR/gits/morphs"
"$SRCDIR/scripts/edit-morph" set-stratum-match-rules \
- "$MATCH_1.morph" "$MATCH_2"
- git add "$MATCH_1.morph"
+ "$MATCH_1" "$MATCH_2"
+ git add "$MATCH_1"
git commit -m "Make $MATCH_1 match $MATCH_2"
Altering morphologies in the workspace
@@ -823,7 +825,7 @@ Altering morphologies in the workspace
IMPLEMENTS GIVEN stratum (\S+) in system branch (\S+) has match rules: (.*)
cd "$DATADIR/workspace/$MATCH_2/test/morphs"
"$SRCDIR/scripts/edit-morph" set-stratum-match-rules \
- "$MATCH_1.morph" "$MATCH_3"
+ "$MATCH_1" "$MATCH_3"
### Altering clusters ###
@@ -831,14 +833,14 @@ Altering morphologies in the workspace
name="$MATCH_1"
branch="$MATCH_2"
"$SRCDIR/scripts/edit-morph" cluster-init \
- "$DATADIR/workspace/$branch/test/morphs/$name.morph"
+ "$DATADIR/workspace/$branch/test/morphs/$name"
IMPLEMENTS GIVEN a (sub)?system in cluster (\S+) in branch (\S+) called (\S+)
cluster="$MATCH_2"
branch="$MATCH_3"
name="$MATCH_4"
"$SRCDIR/scripts/edit-morph" cluster-system-init \
- "$DATADIR/workspace/$branch/test/morphs/$cluster.morph" "$name"
+ "$DATADIR/workspace/$branch/test/morphs/$cluster" "$name"
IMPLEMENTS GIVEN (sub)?system (\S+) in cluster (\S+) in branch (\S+) builds (\S+)
name="$MATCH_2"
@@ -846,7 +848,7 @@ Altering morphologies in the workspace
branch="$MATCH_4"
morphology="$MATCH_5"
"$SRCDIR/scripts/edit-morph" cluster-system-set-morphology \
- "$DATADIR/workspace/$branch/test/morphs/$cluster.morph" "$name" \
+ "$DATADIR/workspace/$branch/test/morphs/$cluster" "$name" \
"$morphology"
IMPLEMENTS GIVEN (sub)?system (\S+) in cluster (\S+) in branch (\S+) has deployment type: (\S+)
@@ -855,7 +857,7 @@ Altering morphologies in the workspace
branch="$MATCH_4"
type="$MATCH_5"
"$SRCDIR/scripts/edit-morph" cluster-system-set-deploy-type \
- "$DATADIR/workspace/$branch/test/morphs/$cluster.morph" "$name" \
+ "$DATADIR/workspace/$branch/test/morphs/$cluster" "$name" \
"$type"
IMPLEMENTS GIVEN (sub)?system (\S+) in cluster (\S+) in branch (\S+) has deployment location: (\S+)
@@ -864,7 +866,7 @@ Altering morphologies in the workspace
branch="$MATCH_4"
location="$MATCH_5"
"$SRCDIR/scripts/edit-morph" cluster-system-set-deploy-location \
- "$DATADIR/workspace/$branch/test/morphs/$cluster.morph" "$name" \
+ "$DATADIR/workspace/$branch/test/morphs/$cluster" "$name" \
"$location"
IMPLEMENTS GIVEN (sub)?system (\S+) in cluster (\S+) in branch (\S+) has deployment variable: ([^=]+)=(.*)
@@ -874,5 +876,5 @@ Altering morphologies in the workspace
key="$MATCH_5"
val="$MATCH_6"
"$SRCDIR/scripts/edit-morph" cluster-system-set-deploy-variable \
- "$DATADIR/workspace/$branch/test/morphs/$cluster.morph" "$name" \
+ "$DATADIR/workspace/$branch/test/morphs/$cluster" "$name" \
"$key" "$val"