diff options
Diffstat (limited to 'yarns/regression.yarn')
-rw-r--r-- | yarns/regression.yarn | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/yarns/regression.yarn b/yarns/regression.yarn new file mode 100644 index 00000000..c424f437 --- /dev/null +++ b/yarns/regression.yarn @@ -0,0 +1,107 @@ +"regression" tests +================== + +Tests for check we don't introduce some bugs again. + + +Testing if we can build after checking out from a tag. + + SCENARIO morph build works after checkout from a tag + GIVEN a workspace + AND a git server + WHEN the user checks out the system tag called test-tag + THEN morph build the system systems/test-system.morph of the tag test-tag + FINALLY the git server is shut down + + +Running `morph branch` when the branch directory exists doesn't +remove the existing directory. + + SCENARIO re-running 'morph branch' fails, original branch untouched + GIVEN a workspace + AND a git server + WHEN the user creates a system branch called foo + THEN the system branch foo is checked out + +The branch is checked out correctly, now it should fail if the user executes +`morph branch` with the same branch name. + + WHEN the user attempts to create a system branch called foo + THEN morph failed + AND the branch error message includes the string "File exists" + +The branch still checked out. + + AND the system branch foo is checked out + FINALLY the git server is shut down + + +It doesn't make much sense to be able to build a system with only +bootstrap chunks, since they will have been constructed without a staging +area, hence their results cannot be trusted. + + SCENARIO building a system with only bootstrap chunks fails + GIVEN a workspace + AND a git server + AND a system containing only bootstrap chunks called bootstrap-system.morph + WHEN the user checks out the system branch called master + AND the user attempts to build the system bootstrap-system.morph in branch master + THEN the build error message includes the string "No non-bootstrap chunks found" + FINALLY the git server is shut down + +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 systems/test-system.morph uses core-runtime from core + AND stratum strata/core.morph has match rules: [{artifact: core-runtime, include: [.*-(bins|libs|locale)]}, {artifact: core-devel, include: [.*-(devel|doc|misc)]}] + WHEN the user checks out the system branch called master + GIVEN a cluster called test-cluster.morph in system branch master + AND a system in cluster test-cluster.morph in branch master called test-system + AND system test-system in cluster test-cluster.morph in branch master builds systems/test-system.morph + AND system test-system in cluster test-cluster.morph in branch master has deployment type: tar + WHEN the user builds the system systems/test-system.morph in branch master + GIVEN stratum strata/core.morph in system branch master has match rules: [{artifact: core-runtime, include: [.*-(bins|libs|misc)]}, {artifact: core-devel, include: [.*-(devel|doc|locale)]}] + WHEN the user builds the system systems/test-system.morph in branch master + AND the user deploys the cluster test-cluster.morph in branch master with options test-system.location="$DATADIR/test.tar" + THEN tarball test.tar contains baserock/test-chunk-misc.meta + FINALLY the git server is shut down + + +Implementations +--------------- + + IMPLEMENTS GIVEN a system containing only bootstrap chunks called (\S+) + arch=$(run_morph print-architecture) + name="$(basename "${MATCH_1%.*}")" + install -m644 -D /dev/stdin <<EOF "$DATADIR/gits/morphs/$MATCH_1" + name: $name + kind: system + arch: $arch + strata: + - morph: strata/bootstrap-stratum.morph + EOF + + install -m644 -D /dev/stdin << EOF "$DATADIR/gits/morphs/strata/bootstrap-stratum.morph" + name: bootstrap-stratum + kind: stratum + chunks: + - name: bootstrap-chunk + morph: bootstrap-chunk.morph + repo: test:test-chunk + unpetrify-ref: master + ref: $(run_in "$DATADIR/gits/test-chunk" git rev-parse master) + build-mode: bootstrap + build-depends: [] + EOF + sed -e 's/name: test-chunk/name: bootstrap-chunk/g' \ + "$DATADIR/gits/morphs/test-chunk.morph" \ + > "$DATADIR/gits/morphs/bootstrap-chunk.morph" + + run_in "$DATADIR/gits/morphs" git add . + run_in "$DATADIR/gits/morphs" git commit -m "Add bootstrap-system" |