mirror of
https://github.com/NixOS/nix
synced 2025-06-29 23:13:14 +02:00
Merge remote-tracking branch 'origin/master' into lazy-trees
This commit is contained in:
commit
12c554acd4
19 changed files with 90 additions and 82 deletions
5
.github/assign-by-files.yml
vendored
5
.github/assign-by-files.yml
vendored
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
# This files is used by https://github.com/marketplace/actions/auto-assign-reviewer-by-files
|
|
||||||
# to assign maintainers
|
|
||||||
"doc/**/*":
|
|
||||||
- fricklerhandwerk
|
|
12
.github/workflows/assign-reviewer.yml
vendored
12
.github/workflows/assign-reviewer.yml
vendored
|
@ -1,12 +0,0 @@
|
||||||
name: "Auto Assign"
|
|
||||||
on:
|
|
||||||
- pull_request
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
assign_reviewer:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: shufo/auto-assign-reviewer-by-files@v1.1.4
|
|
||||||
with:
|
|
||||||
config: ".github/assign-by-files.yml"
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
@ -7,11 +7,11 @@ Most Nix commands interpret the following environment variables:
|
||||||
`nix-shell`. It can have the values `pure` or `impure`.
|
`nix-shell`. It can have the values `pure` or `impure`.
|
||||||
|
|
||||||
- [`NIX_PATH`]{#env-NIX_PATH}\
|
- [`NIX_PATH`]{#env-NIX_PATH}\
|
||||||
A colon-separated list of directories used to look up Nix
|
A colon-separated list of directories used to look up the location of Nix
|
||||||
expressions enclosed in angle brackets (i.e., `<path>`),
|
expressions using [paths](../language/values.md#type-path)
|
||||||
|
enclosed in angle brackets (i.e., `<path>`),
|
||||||
e.g. `/home/eelco/Dev:/etc/nixos`. It can be extended using the
|
e.g. `/home/eelco/Dev:/etc/nixos`. It can be extended using the
|
||||||
`-I` option. For more information about the semantics of the Nix
|
[`-I` option](./opt-common#opt-I).
|
||||||
search path, see the documentation for `-I`.
|
|
||||||
|
|
||||||
- [`NIX_IGNORE_SYMLINK_STORE`]{#env-NIX_IGNORE_SYMLINK_STORE}\
|
- [`NIX_IGNORE_SYMLINK_STORE`]{#env-NIX_IGNORE_SYMLINK_STORE}\
|
||||||
Normally, the Nix store directory (typically `/nix/store`) is not
|
Normally, the Nix store directory (typically `/nix/store`) is not
|
||||||
|
|
|
@ -3,7 +3,10 @@
|
||||||
* The `repeat` and `enforce-determinism` options have been removed
|
* The `repeat` and `enforce-determinism` options have been removed
|
||||||
since they had been broken under many circumstances for a long time.
|
since they had been broken under many circumstances for a long time.
|
||||||
|
|
||||||
* You can now use flake references in the old CLI, e.g.
|
* You can now use [flake references] in the [old command line interface], e.g.
|
||||||
|
|
||||||
|
[flake references]: ../command-ref/new-cli/nix3-flake.md#flake-references
|
||||||
|
[old command line interface]: ../command-ref/main-commands.md
|
||||||
|
|
||||||
```
|
```
|
||||||
# nix-build flake:nixpkgs -A hello
|
# nix-build flake:nixpkgs -A hello
|
||||||
|
|
|
@ -36,23 +36,31 @@ MixEvalArgs::MixEvalArgs()
|
||||||
.shortName = 'I',
|
.shortName = 'I',
|
||||||
.description = R"(
|
.description = R"(
|
||||||
Add *path* to the Nix search path. The Nix search path is
|
Add *path* to the Nix search path. The Nix search path is
|
||||||
initialized from the colon-separated `NIX_PATH` environment
|
initialized from the colon-separated [`NIX_PATH`](./env-common.md#env-NIX_PATH) environment
|
||||||
variable, and is used to look up Nix expressions enclosed in angle
|
variable, and is used to look up the location of Nix expressions using [paths](../language/values.md#type-path) enclosed in angle
|
||||||
brackets (i.e., `<nixpkgs>`). For instance, if the Nix search path
|
brackets (i.e., `<nixpkgs>`).
|
||||||
consists of the entries
|
|
||||||
|
For instance, passing
|
||||||
|
|
||||||
```
|
```
|
||||||
/home/eelco/Dev
|
-I /home/eelco/Dev
|
||||||
/etc/nixos
|
-I /etc/nixos
|
||||||
```
|
```
|
||||||
|
|
||||||
Nix will look for paths relative to `/home/eelco/Dev` and
|
will cause Nix to look for paths relative to `/home/eelco/Dev` and
|
||||||
`/etc/nixos`, in this order. It is also possible to match paths
|
`/etc/nixos`, in that order. This is equivalent to setting the
|
||||||
against a prefix. For example, the search path
|
`NIX_PATH` environment variable to
|
||||||
|
|
||||||
```
|
```
|
||||||
nixpkgs=/home/eelco/Dev/nixpkgs-branch
|
/home/eelco/Dev:/etc/nixos
|
||||||
/etc/nixos
|
```
|
||||||
|
|
||||||
|
It is also possible to match paths against a prefix. For example,
|
||||||
|
passing
|
||||||
|
|
||||||
|
```
|
||||||
|
-I nixpkgs=/home/eelco/Dev/nixpkgs-branch
|
||||||
|
-I /etc/nixos
|
||||||
```
|
```
|
||||||
|
|
||||||
will cause Nix to search for `<nixpkgs/path>` in
|
will cause Nix to search for `<nixpkgs/path>` in
|
||||||
|
@ -61,10 +69,10 @@ MixEvalArgs::MixEvalArgs()
|
||||||
If a path in the Nix search path starts with `http://` or `https://`,
|
If a path in the Nix search path starts with `http://` or `https://`,
|
||||||
it is interpreted as the URL of a tarball that will be downloaded and
|
it is interpreted as the URL of a tarball that will be downloaded and
|
||||||
unpacked to a temporary location. The tarball must consist of a single
|
unpacked to a temporary location. The tarball must consist of a single
|
||||||
top-level directory. For example, setting `NIX_PATH` to
|
top-level directory. For example, passing
|
||||||
|
|
||||||
```
|
```
|
||||||
nixpkgs=https://github.com/NixOS/nixpkgs/archive/master.tar.gz
|
-I nixpkgs=https://github.com/NixOS/nixpkgs/archive/master.tar.gz
|
||||||
```
|
```
|
||||||
|
|
||||||
tells Nix to download and use the current contents of the `master`
|
tells Nix to download and use the current contents of the `master`
|
||||||
|
@ -73,25 +81,25 @@ MixEvalArgs::MixEvalArgs()
|
||||||
The URLs of the tarballs from the official `nixos.org` channels
|
The URLs of the tarballs from the official `nixos.org` channels
|
||||||
(see [the manual page for `nix-channel`](nix-channel.md)) can be
|
(see [the manual page for `nix-channel`](nix-channel.md)) can be
|
||||||
abbreviated as `channel:<channel-name>`. For instance, the
|
abbreviated as `channel:<channel-name>`. For instance, the
|
||||||
following two values of `NIX_PATH` are equivalent:
|
following two flags are equivalent:
|
||||||
|
|
||||||
```
|
```
|
||||||
nixpkgs=channel:nixos-21.05
|
-I nixpkgs=channel:nixos-21.05
|
||||||
nixpkgs=https://nixos.org/channels/nixos-21.05/nixexprs.tar.xz
|
-I nixpkgs=https://nixos.org/channels/nixos-21.05/nixexprs.tar.xz
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also use refer to source trees looked up in the flake
|
You can also fetch source trees using flake URLs and add them to the
|
||||||
registry. For instance,
|
search path. For instance,
|
||||||
|
|
||||||
```
|
```
|
||||||
nixpkgs=flake:nixpkgs
|
-I nixpkgs=flake:nixpkgs
|
||||||
```
|
```
|
||||||
|
|
||||||
specifies that the prefix `nixpkgs` shall refer to the source tree
|
specifies that the prefix `nixpkgs` shall refer to the source tree
|
||||||
downloaded from the `nixpkgs` entry in the flake registry. Similarly,
|
downloaded from the `nixpkgs` entry in the flake registry. Similarly,
|
||||||
|
|
||||||
```
|
```
|
||||||
nixpkgs=flake:github:NixOS/nixpkgs/nixos-22.05
|
-I nixpkgs=flake:github:NixOS/nixpkgs/nixos-22.05
|
||||||
```
|
```
|
||||||
|
|
||||||
makes `<nixpkgs>` refer to a particular branch of the
|
makes `<nixpkgs>` refer to a particular branch of the
|
||||||
|
|
|
@ -1764,7 +1764,7 @@ void EvalState::autoCallFunction(Bindings & args, Value & fun, Value & res)
|
||||||
Nix attempted to evaluate a function as a top level expression; in
|
Nix attempted to evaluate a function as a top level expression; in
|
||||||
this case it must have its arguments supplied either by default
|
this case it must have its arguments supplied either by default
|
||||||
values, or passed explicitly with '--arg' or '--argstr'. See
|
values, or passed explicitly with '--arg' or '--argstr'. See
|
||||||
https://nixos.org/manual/nix/stable/expressions/language-constructs.html#functions.)", symbols[i.name],
|
https://nixos.org/manual/nix/stable/language/constructs.html#functions.)", symbols[i.name],
|
||||||
*fun.lambda.env, *fun.lambda.fun);
|
*fun.lambda.env, *fun.lambda.fun);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -333,7 +333,7 @@ LockedFlake lockFlake(
|
||||||
|
|
||||||
computeLocks = [&](
|
computeLocks = [&](
|
||||||
/* The inputs of this node, either from flake.nix or
|
/* The inputs of this node, either from flake.nix or
|
||||||
flake.lock */
|
flake.lock. */
|
||||||
const FlakeInputs & flakeInputs,
|
const FlakeInputs & flakeInputs,
|
||||||
/* The node whose locks are to be updated.*/
|
/* The node whose locks are to be updated.*/
|
||||||
ref<Node> node,
|
ref<Node> node,
|
||||||
|
@ -568,7 +568,7 @@ LockedFlake lockFlake(
|
||||||
inputFlake.inputs, childNode, inputPath,
|
inputFlake.inputs, childNode, inputPath,
|
||||||
oldLock
|
oldLock
|
||||||
? std::dynamic_pointer_cast<const Node>(oldLock)
|
? std::dynamic_pointer_cast<const Node>(oldLock)
|
||||||
: (std::shared_ptr<Node>) readLockFile(inputFlake).root,
|
: readLockFile(inputFlake).root.get_ptr(),
|
||||||
oldLock ? followsPrefix : inputPath,
|
oldLock ? followsPrefix : inputPath,
|
||||||
inputFlake.path,
|
inputFlake.path,
|
||||||
false);
|
false);
|
||||||
|
@ -600,7 +600,7 @@ LockedFlake lockFlake(
|
||||||
flake->inputs,
|
flake->inputs,
|
||||||
newLockFile.root,
|
newLockFile.root,
|
||||||
{},
|
{},
|
||||||
lockFlags.recreateLockFile ? nullptr : (std::shared_ptr<Node>) oldLockFile.root,
|
lockFlags.recreateLockFile ? nullptr : oldLockFile.root.get_ptr(),
|
||||||
{},
|
{},
|
||||||
flake->path,
|
flake->path,
|
||||||
false);
|
false);
|
||||||
|
|
|
@ -45,15 +45,15 @@ std::shared_ptr<Node> LockFile::findInput(const InputPath & path)
|
||||||
{
|
{
|
||||||
std::shared_ptr<Node> pos = root;
|
std::shared_ptr<Node> pos = root;
|
||||||
|
|
||||||
if (!pos) return {};
|
|
||||||
|
|
||||||
for (auto & elem : path) {
|
for (auto & elem : path) {
|
||||||
if (auto i = get(pos->inputs, elem)) {
|
if (auto i = get(pos->inputs, elem)) {
|
||||||
if (auto node = std::get_if<0>(&*i))
|
if (auto node = std::get_if<0>(&*i))
|
||||||
pos = (std::shared_ptr<LockedNode>) *node;
|
pos = (std::shared_ptr<LockedNode>) *node;
|
||||||
else if (auto follows = std::get_if<1>(&*i)) {
|
else if (auto follows = std::get_if<1>(&*i)) {
|
||||||
pos = findInput(*follows);
|
if (auto p = findInput(*follows))
|
||||||
if (!pos) return {};
|
pos = ref(p);
|
||||||
|
else
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
return {};
|
return {};
|
||||||
|
|
|
@ -71,7 +71,12 @@ struct FetchSettings : public Config
|
||||||
"Whether to warn about dirty Git/Mercurial trees."};
|
"Whether to warn about dirty Git/Mercurial trees."};
|
||||||
|
|
||||||
Setting<std::string> flakeRegistry{this, "https://channels.nixos.org/flake-registry.json", "flake-registry",
|
Setting<std::string> flakeRegistry{this, "https://channels.nixos.org/flake-registry.json", "flake-registry",
|
||||||
"Path or URI of the global flake registry."};
|
R"(
|
||||||
|
Path or URI of the global flake registry.
|
||||||
|
|
||||||
|
When empty, disables the global flake registry.
|
||||||
|
)"};
|
||||||
|
|
||||||
|
|
||||||
Setting<bool> useRegistries{this, true, "use-registries",
|
Setting<bool> useRegistries{this, true, "use-registries",
|
||||||
"Whether to use flake registries to resolve flake references."};
|
"Whether to use flake registries to resolve flake references."};
|
||||||
|
|
|
@ -153,6 +153,9 @@ static std::shared_ptr<Registry> getGlobalRegistry(ref<Store> store)
|
||||||
{
|
{
|
||||||
static auto reg = [&]() {
|
static auto reg = [&]() {
|
||||||
auto path = fetchSettings.flakeRegistry.get();
|
auto path = fetchSettings.flakeRegistry.get();
|
||||||
|
if (path == "") {
|
||||||
|
return std::make_shared<Registry>(Registry::Global); // empty registry
|
||||||
|
}
|
||||||
|
|
||||||
if (!hasPrefix(path, "/")) {
|
if (!hasPrefix(path, "/")) {
|
||||||
auto storePath = downloadFile(store, path, "flake-registry.json", false).storePath;
|
auto storePath = downloadFile(store, path, "flake-registry.json", false).storePath;
|
||||||
|
|
|
@ -515,8 +515,9 @@ template<typename T>
|
||||||
T readLittleEndian(unsigned char * p)
|
T readLittleEndian(unsigned char * p)
|
||||||
{
|
{
|
||||||
T x = 0;
|
T x = 0;
|
||||||
for (size_t i = 0; i < sizeof(x); ++i)
|
for (size_t i = 0; i < sizeof(x); ++i, ++p) {
|
||||||
x |= ((T) *p++) << (i * 8);
|
x |= ((T) *p) << (i * 8);
|
||||||
|
}
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -756,7 +757,9 @@ inline std::string operator + (std::string && s, std::string_view s2)
|
||||||
|
|
||||||
inline std::string operator + (std::string_view s1, const char * s2)
|
inline std::string operator + (std::string_view s1, const char * s2)
|
||||||
{
|
{
|
||||||
std::string s(s1);
|
std::string s;
|
||||||
|
s.reserve(s1.size() + strlen(s2));
|
||||||
|
s.append(s1);
|
||||||
s.append(s2);
|
s.append(s2);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -808,12 +808,18 @@ static void opServe(Strings opFlags, Strings opArgs)
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 2)
|
if (GET_PROTOCOL_MINOR(clientVersion) >= 2)
|
||||||
settings.maxLogSize = readNum<unsigned long>(in);
|
settings.maxLogSize = readNum<unsigned long>(in);
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 3) {
|
if (GET_PROTOCOL_MINOR(clientVersion) >= 3) {
|
||||||
if (readInt(in) != 0) {
|
auto nrRepeats = readInt(in);
|
||||||
|
if (nrRepeats != 0) {
|
||||||
throw Error("client requested repeating builds, but this is not currently implemented");
|
throw Error("client requested repeating builds, but this is not currently implemented");
|
||||||
}
|
}
|
||||||
if (readInt(in) != 0) {
|
// Ignore 'enforceDeterminism'. It used to be true by
|
||||||
throw Error("client requested enforcing determinism, but this is not currently implemented");
|
// default, but also only never had any effect when
|
||||||
}
|
// `nrRepeats == 0`. We have already asserted that
|
||||||
|
// `nrRepeats` in fact is 0, so we can safely ignore this
|
||||||
|
// without doing something other than what the client
|
||||||
|
// asked for.
|
||||||
|
readInt(in);
|
||||||
|
|
||||||
settings.runDiffHook = true;
|
settings.runDiffHook = true;
|
||||||
}
|
}
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 7) {
|
if (GET_PROTOCOL_MINOR(clientVersion) >= 7) {
|
||||||
|
|
|
@ -40,14 +40,6 @@ nix-build check.nix -A deterministic --argstr checkBuildId $checkBuildId \
|
||||||
if grep -q 'may not be deterministic' $TEST_ROOT/log; then false; fi
|
if grep -q 'may not be deterministic' $TEST_ROOT/log; then false; fi
|
||||||
checkBuildTempDirRemoved $TEST_ROOT/log
|
checkBuildTempDirRemoved $TEST_ROOT/log
|
||||||
|
|
||||||
nix build -f check.nix deterministic --rebuild --repeat 1 \
|
|
||||||
--argstr checkBuildId $checkBuildId --keep-failed --no-link \
|
|
||||||
2> $TEST_ROOT/log
|
|
||||||
if grep -q 'checking is not possible' $TEST_ROOT/log; then false; fi
|
|
||||||
# Repeat is set to 1, ie. nix should build deterministic twice.
|
|
||||||
if [ "$(grep "checking outputs" $TEST_ROOT/log | wc -l)" -ne 2 ]; then false; fi
|
|
||||||
checkBuildTempDirRemoved $TEST_ROOT/log
|
|
||||||
|
|
||||||
nix-build check.nix -A nondeterministic --argstr checkBuildId $checkBuildId \
|
nix-build check.nix -A nondeterministic --argstr checkBuildId $checkBuildId \
|
||||||
--no-out-link 2> $TEST_ROOT/log
|
--no-out-link 2> $TEST_ROOT/log
|
||||||
checkBuildTempDirRemoved $TEST_ROOT/log
|
checkBuildTempDirRemoved $TEST_ROOT/log
|
||||||
|
@ -58,12 +50,6 @@ grep 'may not be deterministic' $TEST_ROOT/log
|
||||||
[ "$status" = "104" ]
|
[ "$status" = "104" ]
|
||||||
checkBuildTempDirRemoved $TEST_ROOT/log
|
checkBuildTempDirRemoved $TEST_ROOT/log
|
||||||
|
|
||||||
nix build -f check.nix nondeterministic --rebuild --repeat 1 \
|
|
||||||
--argstr checkBuildId $checkBuildId --keep-failed --no-link \
|
|
||||||
2> $TEST_ROOT/log || status=$?
|
|
||||||
grep 'may not be deterministic' $TEST_ROOT/log
|
|
||||||
checkBuildTempDirRemoved $TEST_ROOT/log
|
|
||||||
|
|
||||||
nix-build check.nix -A nondeterministic --argstr checkBuildId $checkBuildId \
|
nix-build check.nix -A nondeterministic --argstr checkBuildId $checkBuildId \
|
||||||
--no-out-link --check --keep-failed 2> $TEST_ROOT/log || status=$?
|
--no-out-link --check --keep-failed 2> $TEST_ROOT/log || status=$?
|
||||||
grep 'may not be deterministic' $TEST_ROOT/log
|
grep 'may not be deterministic' $TEST_ROOT/log
|
||||||
|
@ -72,12 +58,6 @@ if checkBuildTempDirRemoved $TEST_ROOT/log; then false; fi
|
||||||
|
|
||||||
clearStore
|
clearStore
|
||||||
|
|
||||||
nix-build dependencies.nix --no-out-link --repeat 3
|
|
||||||
|
|
||||||
nix-build check.nix -A nondeterministic --no-out-link --repeat 1 2> $TEST_ROOT/log || status=$?
|
|
||||||
[ "$status" = "1" ]
|
|
||||||
grep 'differs from previous round' $TEST_ROOT/log
|
|
||||||
|
|
||||||
path=$(nix-build check.nix -A fetchurl --no-out-link)
|
path=$(nix-build check.nix -A fetchurl --no-out-link)
|
||||||
|
|
||||||
chmod +w $path
|
chmod +w $path
|
||||||
|
|
|
@ -74,8 +74,10 @@ nix registry add --registry $registry flake3 git+file://$flake3Dir
|
||||||
nix registry add --registry $registry flake4 flake3
|
nix registry add --registry $registry flake4 flake3
|
||||||
nix registry add --registry $registry nixpkgs flake1
|
nix registry add --registry $registry nixpkgs flake1
|
||||||
|
|
||||||
# Test 'nix flake list'.
|
# Test 'nix registry list'.
|
||||||
[[ $(nix registry list | wc -l) == 5 ]]
|
[[ $(nix registry list | wc -l) == 5 ]]
|
||||||
|
nix registry list | grep -q '^global'
|
||||||
|
nix registry list | grep -q -v '^user' # nothing in user registry
|
||||||
|
|
||||||
# Test 'nix flake metadata'.
|
# Test 'nix flake metadata'.
|
||||||
nix flake metadata flake1
|
nix flake metadata flake1
|
||||||
|
@ -342,6 +344,16 @@ nix registry pin flake1 flake3
|
||||||
nix registry remove flake1
|
nix registry remove flake1
|
||||||
[[ $(nix registry list | wc -l) == 5 ]]
|
[[ $(nix registry list | wc -l) == 5 ]]
|
||||||
|
|
||||||
|
# Test 'nix registry list' with a disabled global registry.
|
||||||
|
nix registry add user-flake1 git+file://$flake1Dir
|
||||||
|
nix registry add user-flake2 git+file://$flake2Dir
|
||||||
|
[[ $(nix --flake-registry "" registry list | wc -l) == 2 ]]
|
||||||
|
nix --flake-registry "" registry list | grep -q -v '^global' # nothing in global registry
|
||||||
|
nix --flake-registry "" registry list | grep -q '^user'
|
||||||
|
nix registry remove user-flake1
|
||||||
|
nix registry remove user-flake2
|
||||||
|
[[ $(nix registry list | wc -l) == 5 ]]
|
||||||
|
|
||||||
# Test 'nix flake clone'.
|
# Test 'nix flake clone'.
|
||||||
rm -rf $TEST_ROOT/flake1-v2
|
rm -rf $TEST_ROOT/flake1-v2
|
||||||
nix flake clone flake1 --dest $TEST_ROOT/flake1-v2
|
nix flake clone flake1 --dest $TEST_ROOT/flake1-v2
|
||||||
|
|
|
@ -2,6 +2,7 @@ source common.sh
|
||||||
|
|
||||||
export TEST_VAR=foo # for eval-okay-getenv.nix
|
export TEST_VAR=foo # for eval-okay-getenv.nix
|
||||||
export NIX_REMOTE=dummy://
|
export NIX_REMOTE=dummy://
|
||||||
|
export NIX_STORE_DIR=/nix/store
|
||||||
|
|
||||||
nix-instantiate --eval -E 'builtins.trace "Hello" 123' 2>&1 | grep -q Hello
|
nix-instantiate --eval -E 'builtins.trace "Hello" 123' 2>&1 | grep -q Hello
|
||||||
nix-instantiate --eval -E 'builtins.addErrorContext "Hello" 123' 2>&1
|
nix-instantiate --eval -E 'builtins.addErrorContext "Hello" 123' 2>&1
|
||||||
|
@ -50,10 +51,10 @@ for i in lang/eval-okay-*.nix; do
|
||||||
if test -e lang/$i.flags; then
|
if test -e lang/$i.flags; then
|
||||||
flags=$(cat lang/$i.flags)
|
flags=$(cat lang/$i.flags)
|
||||||
fi
|
fi
|
||||||
if ! expect 0 env NIX_PATH=lang/dir3:lang/dir4 nix-instantiate $flags --eval --strict lang/$i.nix > lang/$i.out; then
|
if ! expect 0 env NIX_PATH=lang/dir3:lang/dir4 HOME=/fake-home nix-instantiate $flags --eval --strict lang/$i.nix > lang/$i.out; then
|
||||||
echo "FAIL: $i should evaluate"
|
echo "FAIL: $i should evaluate"
|
||||||
fail=1
|
fail=1
|
||||||
elif ! diff lang/$i.out lang/$i.exp; then
|
elif ! diff <(< lang/$i.out sed -e "s|$(pwd)|/pwd|g") lang/$i.exp; then
|
||||||
echo "FAIL: evaluation result of $i not as expected"
|
echo "FAIL: evaluation result of $i not as expected"
|
||||||
fail=1
|
fail=1
|
||||||
fi
|
fi
|
||||||
|
|
1
tests/lang/eval-okay-closure.exp
Normal file
1
tests/lang/eval-okay-closure.exp
Normal file
|
@ -0,0 +1 @@
|
||||||
|
[ { foo = true; key = -13; } { foo = true; key = -12; } { foo = true; key = -11; } { foo = true; key = -9; } { foo = true; key = -8; } { foo = true; key = -7; } { foo = true; key = -5; } { foo = true; key = -4; } { foo = true; key = -3; } { key = -1; } { foo = true; key = 0; } { foo = true; key = 1; } { foo = true; key = 2; } { foo = true; key = 4; } { foo = true; key = 5; } { foo = true; key = 6; } { key = 8; } { foo = true; key = 9; } { foo = true; key = 10; } { foo = true; key = 13; } { foo = true; key = 14; } { foo = true; key = 15; } { key = 17; } { foo = true; key = 18; } { foo = true; key = 19; } { foo = true; key = 22; } { foo = true; key = 23; } { key = 26; } { foo = true; key = 27; } { foo = true; key = 28; } { foo = true; key = 31; } { foo = true; key = 32; } { key = 35; } { foo = true; key = 36; } { foo = true; key = 40; } { foo = true; key = 41; } { key = 44; } { foo = true; key = 45; } { foo = true; key = 49; } { key = 53; } { foo = true; key = 54; } { foo = true; key = 58; } { key = 62; } { foo = true; key = 67; } { key = 71; } { key = 80; } ]
|
1
tests/lang/eval-okay-functionargs.exp
Normal file
1
tests/lang/eval-okay-functionargs.exp
Normal file
|
@ -0,0 +1 @@
|
||||||
|
[ "stdenv" "fetchurl" "aterm-stdenv" "aterm-stdenv2" "libX11" "libXv" "mplayer-stdenv2.libXv-libX11" "mplayer-stdenv2.libXv-libX11_2" "nix-stdenv-aterm-stdenv" "nix-stdenv2-aterm2-stdenv2" ]
|
1
tests/lang/eval-okay-path-antiquotation.exp
Normal file
1
tests/lang/eval-okay-path-antiquotation.exp
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ absolute = /foo; expr = /pwd/lang/foo/bar; home = /fake-home/foo; notfirst = /pwd/lang/bar/foo; simple = /pwd/lang/foo; slashes = /foo/bar; surrounded = /pwd/lang/a-foo-b; }
|
1
tests/lang/eval-okay-path.exp
Normal file
1
tests/lang/eval-okay-path.exp
Normal file
|
@ -0,0 +1 @@
|
||||||
|
"/nix/store/ya937r4ydw0l6kayq8jkyqaips9c75jm-output"
|
Loading…
Add table
Add a link
Reference in a new issue