aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-10-31 23:27:51 +0100
committerLudovic Courtès <ludo@gnu.org>2012-11-01 00:52:46 +0100
commit97298ffae9fef6260bc812fffb01972736bc0ab4 (patch)
tree5497c0f1bc4fd7fb77079b68e060b17a98a4eea4
parent073c34d72f94adf6c4c307239b1de0d14bdb60f3 (diff)
downloadpatches-97298ffae9fef6260bc812fffb01972736bc0ab4.tar
patches-97298ffae9fef6260bc812fffb01972736bc0ab4.tar.gz
build: Add unit test for the `guix-build' command.
* tests/guix-build.sh: New file. * Makefile.am (TESTS): Add it. (LOG_COMPILER): Rename to... (SCM_LOG_COMPILER): ... this. Move flags to... (AM_SCM_LOG_FLAGS): ... this. (TEST_EXTENSIONS, SH_LOG_COMPILER, AM_SH_LOG_FLAGS): New variables.
-rw-r--r--Makefile.am13
-rw-r--r--tests/guix-build.sh47
2 files changed, 56 insertions, 4 deletions
diff --git a/Makefile.am b/Makefile.am
index daec24460a..d3a3dbf69a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -119,11 +119,16 @@ TESTS = \
tests/utils.scm \
tests/build-utils.scm \
tests/packages.scm \
- tests/union.scm
+ tests/union.scm \
+ tests/guix-build.sh
-LOG_COMPILER = \
- $(top_builddir)/pre-inst-env \
- $(GUILE) --no-auto-compile -L "$(top_srcdir)"
+TEST_EXTENSIONS = .scm .sh
+
+SCM_LOG_COMPILER = $(top_builddir)/pre-inst-env $(GUILE)
+AM_SCM_LOG_FLAGS = --no-auto-compile -L "$(top_srcdir)"
+
+SH_LOG_COMPILER = $(top_builddir)/pre-inst-env $(SHELL)
+AM_SH_LOG_FLAGS = -x -e
EXTRA_DIST = \
HACKING \
diff --git a/tests/guix-build.sh b/tests/guix-build.sh
new file mode 100644
index 0000000000..4df5cc0790
--- /dev/null
+++ b/tests/guix-build.sh
@@ -0,0 +1,47 @@
+# Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
+# Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+#
+# This file is part of Guix.
+#
+# Guix 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; either version 3 of the License, or (at
+# your option) any later version.
+#
+# Guix 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 Guix. If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Test the `guix-build' command-line utility.
+#
+
+guix-build --version
+
+# Should fail.
+guix-build -e + || true
+
+# Should pass.
+guix-build -e '(@@ (distro packages base) %bootstrap-guile)' | \
+ grep -e '-guile-'
+guix-build hello -d | \
+ grep -e '-hello-[0-9\.]\+\.drv$'
+
+# Should fail because the name/version combination could not be found.
+if guix-build hello-0.0.1 -n; then false; else true; fi
+
+# Keep a symlink to the result, registered as a root.
+result="t-result-$$"
+guix-build -r "$result" \
+ -e '(@@ (distro packages base) %bootstrap-guile)'
+test -x "$result/bin/guile"
+
+# Should fail, because $result already exists.
+if guix-build -r "$result" -e '(@@ (distro packages base) %bootstrap-guile)'
+then false; else true; fi
+
+rm -f "$result"