Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
1.8 kB · 74 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475{ lib, stdenv, pkgsCross, makeBinaryWrapper, writeText, runCommand, runCommandCC,}:
let env = { nativeBuildInputs = [ makeBinaryWrapper ]; }; envCheck = runCommandCC "envcheck" env '' cc -Wall -Werror -Wpedantic -o $out ${./envcheck.c} ''; makeGoldenTest = testname: runCommand "make-binary-wrapper-test-${testname}" env '' mkdir -p tmp/foo # for the chdir test
source=${./. + "/${testname}"}
params=$(<"$source/${testname}.cmdline") eval "makeCWrapper /send/me/flags $params" > wrapper.c
diff wrapper.c "$source/${testname}.c"
if [ -f "$source/${testname}.env" ]; then eval "makeWrapper ${envCheck} wrapped $params" env -i ./wrapped > env.txt sed "s#SUBST_ARGV0#${envCheck}#;s#SUBST_CWD#$PWD#" \ "$source/${testname}.env" > golden-env.txt if ! diff env.txt golden-env.txt; then echo "env/argv should be:" cat golden-env.txt echo "env/argv output is:" cat env.txt exit 1 fi else # without a golden env, we expect the wrapper compilation to fail ! eval "makeWrapper ${envCheck} wrapped $params" &> error.txt fi
cp wrapper.c $out ''; tests = lib.genAttrs [ "add-flags" "argv0" "basic" "chdir" "combination" "env" "inherit-argv0" "invalid-env" "overlength-strings" "prefix" "suffix" ] makeGoldenTest // lib.optionalAttrs (!stdenv.hostPlatform.isDarwin) { cross = pkgsCross.${if stdenv.buildPlatform.isAarch64 then "gnu64" else "aarch64-multiplatform"}.callPackage ./cross.nix { }; };in
writeText "make-binary-wrapper-tests" '' ${lib.concatStringsSep "\n" (builtins.attrValues tests)}''// tests