diff options
Diffstat (limited to 'yarns')
-rw-r--r-- | yarns/implementations.yarn | 29 | ||||
-rw-r--r-- | yarns/regression.yarn | 19 | ||||
-rw-r--r-- | yarns/splitting.yarn | 17 |
3 files changed, 49 insertions, 16 deletions
diff --git a/yarns/implementations.yarn b/yarns/implementations.yarn index 5b9b39df..b4d8e7ce 100644 --- a/yarns/implementations.yarn +++ b/yarns/implementations.yarn @@ -238,7 +238,7 @@ another to hold a chunk. - | for cfgfile in test.conf README; do - install -D -m 644 /dev/null "$DESTDIR/$PREFIX/etc/test.d/$cfgfile" + install -D -m 644 /dev/null "$DESTDIR/etc/test.d/$cfgfile" done EOF @@ -797,3 +797,30 @@ Implementations for tarball inspection IMPLEMENTS THEN tarball (\S+) doesn't contain (.*) ! tar -tf "$DATADIR/$MATCH_1" | grep -Fe "$MATCH_2" + +Implementations for morphology manipulation +========================================== + +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" + 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" + git commit -m "Make $MATCH_1 match $MATCH_2" + +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" diff --git a/yarns/regression.yarn b/yarns/regression.yarn index 49c663ec..71431ff7 100644 --- a/yarns/regression.yarn +++ b/yarns/regression.yarn @@ -46,6 +46,25 @@ area, hence their results cannot be trusted. AND the user attempts to build the system bootstrap-system in branch master THEN the build error message includes the string "No non-bootstrap chunks found" +When we started allowing multiple artifacts, a long-standing bug in +cache-key computation was discovered, it didn't include artifact names, +which would cause a collision if a morphology changed which artifacts +from a source it depended on, but not the number of artifacts from that +source it depended on. + + SCENARIO changing the artifacts a system uses + GIVEN a workspace + AND a git server + AND system test-system uses test-stratum-runtime from test-stratum + AND stratum test-stratum has match rules: [{artifact: test-stratum-runtime, include: [.*-(bins|libs|locale)]}, {artifact: test-stratum-devel, include: [.*-(devel|doc|misc)]}] + WHEN the user checks out the system branch called master + GIVEN a cluster called test-cluster for deploying only the test-system system as type tar in system branch master + WHEN the user builds the system test-system in branch master + GIVEN stratum test-stratum in system branch master has match rules: [{artifact: test-stratum-runtime, include: [.*-(bins|libs|misc)]}, {artifact: test-stratum-devel, include: [.*-(devel|doc|locale)]}] + WHEN the user builds the system test-system in branch master + AND the user deploys the cluster test-cluster in branch master with options system.location="$DATADIR/test.tar" + THEN tarball test.tar contains baserock/test-chunk-misc.meta + Implementations --------------- diff --git a/yarns/splitting.yarn b/yarns/splitting.yarn index e55d5ed0..40da5fb4 100644 --- a/yarns/splitting.yarn +++ b/yarns/splitting.yarn @@ -40,7 +40,7 @@ libraries. The only change we need to make is to add a field to the system morphology to select which artifact to use in the system. - AND system test-system only uses test-stratum-runtime from test-stratum + AND system test-system uses test-stratum-runtime from test-stratum WHEN the user checks out the system branch called master The best way to test that only using some stratum artifacts works is @@ -75,7 +75,7 @@ so we know that if the system successfully builds, then we only built chunks that were needed. AND stratum test-stratum has chunks that aren't used in test-stratum-minimal - AND system test-system only uses test-stratum-minimal from test-stratum + AND system test-system uses test-stratum-minimal from test-stratum WHEN the user checks out the system branch called master THEN morph build the system test-system of the branch master @@ -168,19 +168,6 @@ Implementations run_in "$DATADIR/gits/morphs" git add "$MATCH_1.morph" run_in "$DATADIR/gits/morphs" git commit -m 'Add default splitting rules' - IMPLEMENTS GIVEN system (\S+) only uses (\S+) from (\S+) - python -c 'import sys, yaml - with open(sys.argv[1], "r") as f: - d = yaml.load(f) - for spec in d["strata"]: - if spec["name"] == sys.argv[3]: - spec["artifacts"] = [sys.argv[2]] - with open(sys.argv[1], "w") as f: - yaml.dump(d, f) - ' "$DATADIR/gits/morphs/$MATCH_1.morph" "$MATCH_2" "$MATCH_3" - run_in "$DATADIR/gits/morphs" git add "$MATCH_1.morph" - run_in "$DATADIR/gits/morphs" git commit -m "Make $MATCH_1 only use $MATCH_2" - IMPLEMENTS GIVEN stratum (\S+) has chunks that aren't used in (\1-\S+) # Create an extra chunk that will never successfully build cat >"$DATADIR/gits/test-chunk/unbuildable-chunk.morph" <<EOF |