build: Add unit test for the `guix-build' command.
authorLudovic Courtès <ludo@gnu.org>
Wed, 31 Oct 2012 22:27:51 +0000 (23:27 +0100)
committerLudovic Courtès <ludo@gnu.org>
Wed, 31 Oct 2012 23:52:46 +0000 (00:52 +0100)
* 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.

Makefile.am
tests/guix-build.sh [new file with mode: 0644]

index daec244..d3a3dbf 100644 (file)
@@ -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 (file)
index 0000000..4df5cc0
--- /dev/null
@@ -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"