lix/tests
Eelco Dolstra d4dcffd643
Add pure evaluation mode
In this mode, the following restrictions apply:

* The builtins currentTime, currentSystem and storePath throw an
  error.

* $NIX_PATH and -I are ignored.

* fetchGit and fetchMercurial require a revision hash.

* fetchurl and fetchTarball require a sha256 attribute.

* No file system access is allowed outside of the paths returned by
  fetch{Git,Mercurial,url,Tarball}. Thus 'nix build -f ./foo.nix' is
  not allowed.

Thus, the evaluation result is completely reproducible from the
command line arguments. E.g.

  nix build --pure-eval '(
    let
      nix = fetchGit { url = https://github.com/NixOS/nixpkgs.git; rev = "9c927de4b179a6dd210dd88d34bda8af4b575680"; };
      nixpkgs = fetchGit { url = https://github.com/NixOS/nixpkgs.git; ref = "release-17.09"; rev = "66b4de79e3841530e6d9c6baf98702aa1f7124e4"; };
    in (import (nix + "/release.nix") { inherit nix nixpkgs; }).build.x86_64-linux
  )'

The goal is to enable completely reproducible and traceable
evaluation. For example, a NixOS configuration could be fully
described by a single Git commit hash. 'nixos-rebuild' would do
something like

  nix build --pure-eval '(
    (import (fetchGit { url = file:///my-nixos-config; rev = "..."; })).system
  ')

where the Git repository /my-nixos-config would use further fetchGit
calls or Git externals to fetch Nixpkgs and whatever other
dependencies it has. Either way, the commit hash would uniquely
identify the NixOS configuration and allow it to reproduced.
2018-01-16 19:23:18 +01:00
..
lang Revert "Don't parse "x:x" as a URI" 2017-11-14 15:10:52 +01:00
add.sh * Refactoring: remove unnecessary variables from the tests. 2011-10-10 21:32:34 +00:00
binary-cache.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
brotli.sh use libbrotli directly when available 2017-12-30 20:26:33 -06:00
build-hook.nix build-remote: Add a basic test 2017-05-02 15:46:10 +02:00
build-remote.sh Allow shorter syntax for chroot stores 2017-10-24 15:32:38 +02:00
case-hack.sh Fix tests 2014-08-21 21:50:19 +02:00
case.nar Handle case collisions on case-insensitive systems 2014-07-16 16:02:05 +02:00
check-refs.nix Add disallowedReferences / disallowedRequisites 2014-08-28 18:57:13 +02:00
check-refs.sh Add disallowedReferences / disallowedRequisites 2014-08-28 18:57:13 +02:00
check-reqs.nix Add disallowedReferences / disallowedRequisites 2014-08-28 18:57:13 +02:00
check-reqs.sh Print out all bad references/requisites at once 2016-04-16 19:58:26 -04:00
common.sh.in use libbrotli directly when available 2017-12-30 20:26:33 -06:00
config.nix Pass lists/attrsets to bash as (associative) arrays 2017-10-25 13:01:50 +02:00
dependencies.builder0.sh Test executables in NARs 2014-02-26 18:59:01 +01:00
dependencies.builder1.sh * Purify `make check'. 2006-07-21 13:21:43 +00:00
dependencies.builder2.sh * Purify `make check'. 2006-07-21 13:21:43 +00:00
dependencies.nix Test string semantics a bit more 2013-10-17 01:12:43 +02:00
dependencies.sh * Refactoring: remove unnecessary variables from the tests. 2011-10-10 21:32:34 +00:00
dump-db.sh Remove $NIX_DB_DIR 2016-08-10 18:05:35 +02:00
export-graph.nix Support quoted attribute names in -A 2013-11-18 10:21:12 +00:00
export-graph.sh Support quoted attribute names in -A 2013-11-18 10:21:12 +00:00
export.sh Don't put results symlinks in the tests directory 2012-09-11 19:14:15 -04:00
fetchGit.sh Add pure evaluation mode 2018-01-16 19:23:18 +01:00
fetchMercurial.sh Add pure evaluation mode 2018-01-16 19:23:18 +01:00
fetchurl.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
filter-source.nix Use shorter daemon socket path in tests 2016-03-24 14:45:55 +01:00
filter-source.sh Fix tests 2014-08-21 21:50:19 +02:00
fixed.builder1.sh * Test the impureEnvVars feature. 2007-09-11 13:32:04 +00:00
fixed.builder2.sh * Test case to show that parallel builds of different fixed-output 2007-08-28 09:21:47 +00:00
fixed.nix * Refactoring: renamed *.nix.in to *.nix. 2009-03-17 17:11:55 +00:00
fixed.sh Support SHA-512 hashes 2015-11-04 16:37:49 +01:00
gc-concurrent.builder.sh * Increase the sleep periods a bit to make the test less likely to 2008-08-14 09:26:30 +00:00
gc-concurrent.nix * Refactoring: renamed *.nix.in to *.nix. 2009-03-17 17:11:55 +00:00
gc-concurrent.sh Fix tests 2014-08-21 21:50:19 +02:00
gc-concurrent2.builder.sh * Increase the sleep periods a bit to make the test less likely to 2008-08-14 09:26:30 +00:00
gc-runtime.nix * Refactoring: renamed *.nix.in to *.nix. 2009-03-17 17:11:55 +00:00
gc-runtime.sh Fix gc-runtime test 2016-09-12 13:40:07 +02:00
gc.sh Test nix-store -q --roots 2014-02-26 18:00:46 +01:00
hash-check.nix * Purify `make check'. 2006-07-21 13:21:43 +00:00
hash.sh Support base-64 hashes 2017-07-04 15:07:41 +02:00
import-derivation.nix * Add a test for importing derivations. 2012-01-26 13:04:50 +00:00
import-derivation.sh Don't put results symlinks in the tests directory 2012-09-11 19:14:15 -04:00
init.sh Rename a few configuration options 2017-08-31 14:28:25 +02:00
install-darwin.sh Rename PINCH_ME_IM_SILLY to ALLOW_PREEXISTING_INSTALLATION 2017-07-14 12:11:33 -04:00
lang.sh Fix tests 2014-08-21 21:50:19 +02:00
linux-sandbox.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
local.mk Add pure evaluation mode 2018-01-16 19:23:18 +01:00
logging.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
misc.sh Output line number on infinite recursion 2015-07-31 20:26:44 +02:00
multiple-outputs.nix Don't put results symlinks in the tests directory 2012-09-11 19:14:15 -04:00
multiple-outputs.sh nix-shell/nix-build: Support .drv files again 2017-11-24 18:08:35 +01:00
nar-access.nix Rename tests/nar-index -> tests/nar-access 2017-11-14 13:27:40 +01:00
nar-access.sh nix ls-{nar,store}: Return offset of files in the NAR if known 2017-12-07 01:07:07 +01:00
nix-build.sh nix-shell/nix-build: Support .drv files again 2017-11-24 18:08:35 +01:00
nix-channel.sh Fix tests 2017-10-02 23:45:27 -04:00
nix-copy-closure.nix release.nix: Use fetchTarball and fetchGit 2017-12-22 11:35:32 +01:00
nix-profile.sh Fix nix-profile test in a chroot 2016-05-31 13:07:24 +02:00
nix-shell.sh nix-shell/nix-build: Support .drv files again 2017-11-24 18:08:35 +01:00
optimise-store.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
parallel.builder.sh Drop dependency on ‘expr’ 2014-02-06 13:51:57 +01:00
parallel.nix * Make this test a bit more robust. It's still timing dependent 2009-03-23 15:16:36 +00:00
parallel.sh Add support for ‘make installcheck’ 2013-11-25 18:47:03 +01:00
pass-as-file.sh Use $<attr>Path instead of $<attr> for passAsFile 2015-02-17 16:42:54 +01:00
placeholders.sh Add a mechanism for derivation attributes to reference the derivation's outputs 2016-08-17 17:19:32 +02:00
pure-eval.nix Add pure evaluation mode 2018-01-16 19:23:18 +01:00
pure-eval.sh Add pure evaluation mode 2018-01-16 19:23:18 +01:00
referrers.sh Remove $NIX_DB_DIR 2016-08-10 18:05:35 +02:00
remote-builds.nix release.nix: Use fetchTarball and fetchGit 2017-12-22 11:35:32 +01:00
remote-store.sh Remove $NIX_DB_DIR 2016-08-10 18:05:35 +02:00
repair.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
restricted.nix Add pure evaluation mode 2018-01-16 19:23:18 +01:00
restricted.sh Add pure evaluation mode 2018-01-16 19:23:18 +01:00
run.nix Add tests for "nix run" 2017-11-20 18:36:36 +01:00
run.sh run.sh: include lib64 in sandbox-paths to fix on ubuntu 16.XX 2017-12-30 22:41:49 -06:00
secure-drv-outputs.nix * On FreeBSD, ‘touch’ is not in the test $PATH, so don't use it. 2011-08-08 14:08:38 +00:00
secure-drv-outputs.sh Remove manifest support 2016-04-11 16:20:15 +02:00
setuid.nix release.nix: Use fetchTarball and fetchGit 2017-12-22 11:35:32 +01:00
shell.nix Fix nix-shell test 2017-04-25 18:59:18 +02:00
shell.shebang.sh Rename "use-substitutes" to "substitute" 2018-01-04 16:58:39 +01:00
signing.sh Fix test 2017-12-07 01:07:07 +01:00
simple.builder.sh * Fix the tests. 2007-08-13 13:15:02 +00:00
simple.nix * Refactoring: renamed *.nix.in to *.nix. 2009-03-17 17:11:55 +00:00
simple.sh Handle $TMPDIR ending with a slash 2016-10-19 15:19:38 +02:00
structured-attrs.nix exportReferencesGraph: Allow exporting a list of store paths 2017-10-25 15:18:49 +02:00
structured-attrs.sh Pass lists/attrsets to bash as (associative) arrays 2017-10-25 13:01:50 +02:00
tarball.sh Fix test failure 2016-09-08 18:22:28 +02:00
timeout.nix Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
timeout.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
user-envs.builder.sh Test priorities 2012-12-04 14:47:50 +01:00
user-envs.nix Test priorities 2012-12-04 14:47:50 +01:00
user-envs.sh Remove $NIX_DB_DIR 2016-08-10 18:05:35 +02:00