at 24.11-pre 77 lines 2.0 kB view raw
1{ runCommandLocal 2, lib 3, git 4, clang-tools 5, makeHardcodeGsettingsPatch 6}: 7 8let 9 mkTest = 10 { 11 name, 12 expected, 13 src, 14 patches ? [ ], 15 schemaIdToVariableMapping, 16 }: 17 18 let 19 patch = makeHardcodeGsettingsPatch ({ 20 inherit src schemaIdToVariableMapping; 21 inherit patches; 22 }); 23 in 24 runCommandLocal 25 "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}