Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at gcc-offload 77 lines 2.0 kB view raw
1{ 2 runCommandLocal, 3 lib, 4 git, 5 clang-tools, 6 makeHardcodeGsettingsPatch, 7}: 8 9let 10 mkTest = 11 { 12 name, 13 expected, 14 src, 15 patches ? [ ], 16 schemaIdToVariableMapping, 17 }: 18 19 let 20 patch = makeHardcodeGsettingsPatch ({ 21 inherit src schemaIdToVariableMapping; 22 inherit patches; 23 }); 24 in 25 runCommandLocal "makeHardcodeGsettingsPatch-tests-${name}" 26 27 { 28 nativeBuildInputs = [ 29 git 30 clang-tools 31 ]; 32 } 33 34 '' 35 cp -r --no-preserve=all "${src}" src 36 cp -r --no-preserve=all "${expected}" src-expected 37 38 pushd src 39 for patch in ${lib.escapeShellArgs (builtins.map (p: "${p}") patches)}; do 40 patch < "$patch" 41 done 42 patch < "${patch}" 43 popd 44 45 find src -name '*.c' -print0 | while read -d $'\0' sourceFile; do 46 sourceFile=''${sourceFile#src/} 47 clang-format -style='{BasedOnStyle: InheritParentConfig, ColumnLimit: 240}' -i "src/$sourceFile" "src-expected/$sourceFile" 48 git diff --no-index "src/$sourceFile" "src-expected/$sourceFile" | cat 49 done 50 touch "$out" 51 ''; 52in 53{ 54 basic = mkTest { 55 name = "basic"; 56 src = ./fixtures/example-project; 57 schemaIdToVariableMapping = { 58 "org.gnome.evolution-data-server.addressbook" = "EDS"; 59 "org.gnome.evolution.calendar" = "EVO"; 60 "org.gnome.seahorse.nautilus.window" = "SEANAUT"; 61 }; 62 expected = ./fixtures/example-project-patched; 63 }; 64 65 patches = mkTest { 66 name = "patches"; 67 src = ./fixtures/example-project-wrapped-settings-constructor; 68 patches = [ 69 # Avoid using wrapper function, which the generator cannot handle. 70 ./fixtures/example-project-wrapped-settings-constructor-resolve.patch 71 ]; 72 schemaIdToVariableMapping = { 73 "org.gnome.evolution-data-server.addressbook" = "EDS"; 74 }; 75 expected = ./fixtures/example-project-wrapped-settings-constructor-patched; 76 }; 77}