mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-26 07:46:21 +02:00
Progress on tests
This commit is contained in:
parent
d5fe828d76
commit
f08754a97a
3 changed files with 73 additions and 3 deletions
56
tests/hermetic.nix
Normal file
56
tests/hermetic.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
{ busybox }:
|
||||
|
||||
with import ./config.nix;
|
||||
|
||||
let
|
||||
contentAddressedByDefault = builtins.getEnv "NIX_TESTS_CA_BY_DEFAULT" == "1";
|
||||
caArgs = if contentAddressedByDefault then {
|
||||
__contentAddressed = true;
|
||||
outputHashMode = "recursive";
|
||||
outputHashAlgo = "sha256";
|
||||
} else {};
|
||||
|
||||
mkDerivation = args:
|
||||
derivation ({
|
||||
inherit system;
|
||||
builder = busybox;
|
||||
args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")];
|
||||
} // removeAttrs args ["builder" "meta" "passthru"]
|
||||
// caArgs)
|
||||
// { meta = args.meta or {}; passthru = args.passthru or {}; };
|
||||
|
||||
input1 = mkDerivation {
|
||||
shell = busybox;
|
||||
name = "build-remote-input-1";
|
||||
buildCommand = "echo hi-input1; echo FOO > $out";
|
||||
};
|
||||
|
||||
input2 = mkDerivation {
|
||||
shell = busybox;
|
||||
name = "build-remote-input-2";
|
||||
buildCommand = "echo hi; echo BAR > $out";
|
||||
};
|
||||
|
||||
input3 = mkDerivation {
|
||||
shell = busybox;
|
||||
name = "build-remote-input-3";
|
||||
buildCommand = ''
|
||||
echo hi-input3
|
||||
read x < ${input2}
|
||||
echo $x BAZ > $out
|
||||
'';
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
mkDerivation {
|
||||
shell = busybox;
|
||||
name = "build-remote";
|
||||
passthru = { inherit input1 input2 input3; };
|
||||
buildCommand =
|
||||
''
|
||||
read x < ${input1}
|
||||
read y < ${input3}
|
||||
echo "$x $y" > $out
|
||||
'';
|
||||
}
|
|
@ -1,3 +1,7 @@
|
|||
source common.sh
|
||||
|
||||
requireSandboxSupport
|
||||
[[ $busybox =~ busybox ]] || skipTest "no busybox"
|
||||
if [[ $(uname) != Linux ]]; then skipTest "Need Linux for overlayfs"; fi
|
||||
|
||||
exec unshare --mount --map-root-user overlay-local-store/inner.sh
|
||||
|
|
|
@ -11,13 +11,16 @@ export NIX_CONFIG='build-users-group = '
|
|||
# Creating testing directories
|
||||
|
||||
storeA="$TEST_ROOT/store_a"
|
||||
storeB="$TEST_ROOT/store_b?real=$TEST_ROOT/merged-store"
|
||||
storeB="local-overlay?root=$TEST_ROOT/store_b&lower-store=$TEST_ROOT/merged-store"
|
||||
storeBTop="$TEST_ROOT/store_b"
|
||||
|
||||
mkdir -p "$TEST_ROOT"/{store_a,store_b,merged-store,workdir}
|
||||
|
||||
# Mounting Overlay Store
|
||||
|
||||
## Restore normal, because we are using these chroot stores
|
||||
#NIX_STORE_DIR=/nix/store
|
||||
|
||||
nix-store --store "$TEST_ROOT/store_a" --add dummy
|
||||
nix-store --store "$TEST_ROOT/store_b" --add dummy
|
||||
|
||||
|
@ -27,7 +30,14 @@ mount -t overlay overlay \
|
|||
-o workdir="$TEST_ROOT/workdir" \
|
||||
"$TEST_ROOT/merged-store" || skipTest "overlayfs is not supported"
|
||||
|
||||
path_a=$(nix-build '<nixpkgs>' -A signal-desktop --store "$storeA")
|
||||
# Add in lower
|
||||
NIX_REMOTE=$storeA source add.sh
|
||||
|
||||
# Add in layered
|
||||
NIX_REMOTE=$storeB source add.sh
|
||||
|
||||
#busyboxExpr="\"\${$(dirname "$busybox")}/$(basename "$busybox")\""
|
||||
path_a=$(nix-build ./hermetic.nix --arg busybox "$busybox" --store "$storeA")
|
||||
|
||||
# Checking for Path in store_a
|
||||
stat "$TEST_ROOT/store_a/$path_a"
|
||||
|
@ -48,4 +58,4 @@ expect 1 nix-store --verify-path --store "$storeB" "$path_a"
|
|||
# Verifying path in store_b (Should fail)
|
||||
expect 1 nix-store --verify-path --store "$storeBTop" "$path_a"
|
||||
|
||||
path_b=$(nix-build '<nixpkgs>' -A signal-desktop --store "$storeB")
|
||||
path_b=$(nix-build ./hermetic.nix --arg busybox $busybox --store "$storeB")
|
||||
|
|
Loading…
Reference in a new issue