mirror of
https://github.com/NixOS/nix
synced 2025-07-08 06:53:54 +02:00
Put functional tests in tests/functional
I think it is bad for these reasons when `tests/` contains a mix of functional and integration tests - Concepts is harder to understand, the documentation makes a good unit vs functional vs integration distinction, but when the integration tests are just two subdirs within `tests/` this is not clear. - Source filtering in the `flake.nix` is more complex. We need to filter out some of the dirs from `tests/`, rather than simply pick the dirs we want and take all of them. This is a good sign the structure of what we are trying to do is not matching the structure of the files. With this change we have a clean: ```shell-session $ git show 'HEAD:tests' tree HEAD:tests functional/ installer/ nixos/ ```
This commit is contained in:
parent
3dd4475826
commit
68c81c7375
599 changed files with 84 additions and 87 deletions
|
@ -1,90 +0,0 @@
|
|||
{ inNixShell ? false, contentAddressed ? false, fooContents ? "foo" }:
|
||||
|
||||
let cfg = import ./config.nix; in
|
||||
with cfg;
|
||||
|
||||
let
|
||||
mkDerivation =
|
||||
if contentAddressed then
|
||||
args: cfg.mkDerivation ({
|
||||
__contentAddressed = true;
|
||||
outputHashMode = "recursive";
|
||||
outputHashAlgo = "sha256";
|
||||
} // args)
|
||||
else cfg.mkDerivation;
|
||||
in
|
||||
|
||||
let pkgs = rec {
|
||||
setupSh = builtins.toFile "setup" ''
|
||||
export VAR_FROM_STDENV_SETUP=foo
|
||||
for pkg in $buildInputs; do
|
||||
export PATH=$PATH:$pkg/bin
|
||||
done
|
||||
|
||||
# mimic behavior of stdenv for `$out` etc. for structured attrs.
|
||||
if [ -n "''${NIX_ATTRS_SH_FILE}" ]; then
|
||||
for o in "''${!outputs[@]}"; do
|
||||
eval "''${o}=''${outputs[$o]}"
|
||||
export "''${o}"
|
||||
done
|
||||
fi
|
||||
|
||||
declare -a arr1=(1 2 "3 4" 5)
|
||||
declare -a arr2=(x $'\n' $'x\ny')
|
||||
fun() {
|
||||
echo blabla
|
||||
}
|
||||
'';
|
||||
|
||||
stdenv = mkDerivation {
|
||||
name = "stdenv";
|
||||
buildCommand = ''
|
||||
mkdir -p $out
|
||||
ln -s ${setupSh} $out/setup
|
||||
'';
|
||||
};
|
||||
|
||||
shellDrv = mkDerivation {
|
||||
name = "shellDrv";
|
||||
builder = "/does/not/exist";
|
||||
VAR_FROM_NIX = "bar";
|
||||
ASCII_PERCENT = "%";
|
||||
ASCII_AT = "@";
|
||||
TEST_inNixShell = if inNixShell then "true" else "false";
|
||||
inherit stdenv;
|
||||
outputs = ["dev" "out"];
|
||||
};
|
||||
|
||||
# Used by nix-shell -p
|
||||
runCommand = name: args: buildCommand: mkDerivation (args // {
|
||||
inherit name buildCommand stdenv;
|
||||
});
|
||||
|
||||
foo = runCommand "foo" {} ''
|
||||
mkdir -p $out/bin
|
||||
echo 'echo ${fooContents}' > $out/bin/foo
|
||||
chmod a+rx $out/bin/foo
|
||||
ln -s ${shell} $out/bin/bash
|
||||
'';
|
||||
|
||||
bar = runCommand "bar" {} ''
|
||||
mkdir -p $out/bin
|
||||
echo 'echo bar' > $out/bin/bar
|
||||
chmod a+rx $out/bin/bar
|
||||
'';
|
||||
|
||||
bash = shell;
|
||||
bashInteractive = runCommand "bash" {} ''
|
||||
mkdir -p $out/bin
|
||||
ln -s ${shell} $out/bin/bash
|
||||
'';
|
||||
|
||||
# ruby "interpreter" that outputs "$@"
|
||||
ruby = runCommand "ruby" {} ''
|
||||
mkdir -p $out/bin
|
||||
echo 'printf %s "$*"' > $out/bin/ruby
|
||||
chmod a+rx $out/bin/ruby
|
||||
'';
|
||||
|
||||
inherit pkgs;
|
||||
}; in pkgs
|
Loading…
Add table
Add a link
Reference in a new issue