summaryrefslogtreecommitdiff
path: root/tests.build/setup
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2013-01-29 11:58:13 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2013-02-20 16:50:05 +0000
commit8d9a939630bc677c2d2e7c4202a400f9bc0ab3ad (patch)
tree5739316c27531d30be13809f61d0e1e4e630abe9 /tests.build/setup
parentb4d343b46883ef52df656f0f6401dc6bb1d6e8dd (diff)
downloadmorph-8d9a939630bc677c2d2e7c4202a400f9bc0ab3ad.tar.gz
Separate out build tests from general Morph tests
Diffstat (limited to 'tests.build/setup')
-rwxr-xr-xtests.build/setup134
1 files changed, 134 insertions, 0 deletions
diff --git a/tests.build/setup b/tests.build/setup
new file mode 100755
index 00000000..50fd5bd4
--- /dev/null
+++ b/tests.build/setup
@@ -0,0 +1,134 @@
+#!/bin/sh
+#
+# Create git repositories for tests. The chunk repository will contain a
+# simple "hello, world" C program, and two branches ("master", "farrokh"),
+# with the master branch containing just a README. The two branches are there
+# so that we can test building a branch that hasn't been checked out.
+# The branches are different so that we know that if the wrong branch
+# is uses, the build will fail.
+#
+# The stratum repository contains a single branch, "master", with a
+# stratum and a system morphology that include the chunk above.
+#
+# Copyright (C) 2011-2013 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+set -eu
+
+# The $DATADIR should be empty at the beginnig of each test.
+find "$DATADIR" -mindepth 1 -delete
+
+# Create chunk repository.
+
+chunkrepo="$DATADIR/chunk-repo"
+mkdir "$chunkrepo"
+cd "$chunkrepo"
+git init --quiet
+
+cat <<EOF > README
+This is a sample README.
+EOF
+git add README
+git commit --quiet -m "add README"
+
+git checkout --quiet -b farrokh
+
+cat <<EOF > hello.c
+#include <stdio.h>
+int main(void)
+{
+ puts("hello, world");
+ return 0;
+}
+EOF
+git add hello.c
+
+cat <<EOF > hello.morph
+{
+ "name": "hello",
+ "kind": "chunk",
+ "build-system": "dummy",
+ "build-commands": [
+ "gcc -o hello hello.c"
+ ],
+ "install-commands": [
+ "install -d \\"\$DESTDIR\\"/etc",
+ "install -d \\"\$DESTDIR\\"/bin",
+ "install hello \\"\$DESTDIR\\"/bin/hello"
+ ]
+}
+EOF
+git add hello.morph
+
+git commit --quiet -m "add a hello world program and morph"
+
+git checkout --quiet master
+
+
+
+# Create morph repository.
+
+morphsrepo="$DATADIR/morphs-repo"
+mkdir "$morphsrepo"
+cd "$morphsrepo"
+git init --quiet
+
+cat <<EOF > hello-stratum.morph
+{
+ "name": "hello-stratum",
+ "kind": "stratum",
+ "chunks": [
+ {
+ "name": "hello",
+ "repo": "test:chunk-repo",
+ "ref": "farrokh",
+ "build-depends": []
+ }
+ ]
+}
+EOF
+git add hello-stratum.morph
+
+cat <<EOF > hello-system.morph
+{
+ "name": "hello-system",
+ "kind": "system",
+ "system-kind": "syslinux-disk",
+ "disk-size": "1G",
+ "strata": [
+ {
+ "morph": "hello-stratum",
+ "repo": "test:morphs-repo",
+ "ref": "master"
+ }
+ ]
+}
+EOF
+git add hello-system.morph
+
+git commit --quiet -m "add morphs"
+
+
+# Create a morph configuration file.
+cat <<EOF > "$DATADIR/morph.conf"
+[config]
+repo-alias = test=file://$DATADIR/%s#file://$DATADIR/%s
+cachedir = $DATADIR/cache
+log = $DATADIR/morph.log
+no-distcc = true
+quiet = true
+EOF
+