summaryrefslogtreecommitdiff
path: root/yarns/regression.yarn
diff options
context:
space:
mode:
Diffstat (limited to 'yarns/regression.yarn')
-rw-r--r--yarns/regression.yarn107
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"