"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 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 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" 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 test-stratum-runtime from test-stratum AND stratum strata/test-stratum.morph 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.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/test-stratum.morph 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 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 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 < "$DATADIR/gits/morphs/bootstrap-chunk.morph" run_in "$DATADIR/gits/morphs" git add . run_in "$DATADIR/gits/morphs" git commit -m "Add bootstrap-system"