diff options
Diffstat (limited to 'nixpkgs/pkgs/test/make-hardcode-gsettings-patch/default.nix')
-rw-r--r-- | nixpkgs/pkgs/test/make-hardcode-gsettings-patch/default.nix | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/test/make-hardcode-gsettings-patch/default.nix b/nixpkgs/pkgs/test/make-hardcode-gsettings-patch/default.nix new file mode 100644 index 000000000000..e27a6f179208 --- /dev/null +++ b/nixpkgs/pkgs/test/make-hardcode-gsettings-patch/default.nix @@ -0,0 +1,77 @@ +{ runCommandLocal +, lib +, git +, clang-tools +, makeHardcodeGsettingsPatch +}: + +let + mkTest = + { + name, + expected, + src, + patches ? [ ], + schemaIdToVariableMapping, + }: + + let + patch = makeHardcodeGsettingsPatch ({ + inherit src schemaIdToVariableMapping; + inherit patches; + }); + in + runCommandLocal + "makeHardcodeGsettingsPatch-tests-${name}" + + { + nativeBuildInputs = [ + git + clang-tools + ]; + } + + '' + cp -r --no-preserve=all "${src}" src + cp -r --no-preserve=all "${expected}" src-expected + + pushd src + for patch in ${lib.escapeShellArgs (builtins.map (p: "${p}") patches)}; do + patch < "$patch" + done + patch < "${patch}" + popd + + find src -name '*.c' -print0 | while read -d $'\0' sourceFile; do + sourceFile=''${sourceFile#src/} + clang-format -style='{BasedOnStyle: InheritParentConfig, ColumnLimit: 240}' -i "src/$sourceFile" "src-expected/$sourceFile" + git diff --no-index "src/$sourceFile" "src-expected/$sourceFile" | cat + done + touch "$out" + ''; +in +{ + basic = mkTest { + name = "basic"; + src = ./fixtures/example-project; + schemaIdToVariableMapping = { + "org.gnome.evolution-data-server.addressbook" = "EDS"; + "org.gnome.evolution.calendar" = "EVO"; + "org.gnome.seahorse.nautilus.window" = "SEANAUT"; + }; + expected = ./fixtures/example-project-patched; + }; + + patches = mkTest { + name = "patches"; + src = ./fixtures/example-project-wrapped-settings-constructor; + patches = [ + # Avoid using wrapper function, which the generator cannot handle. + ./fixtures/example-project-wrapped-settings-constructor-resolve.patch + ]; + schemaIdToVariableMapping = { + "org.gnome.evolution-data-server.addressbook" = "EDS"; + }; + expected = ./fixtures/example-project-wrapped-settings-constructor-patched; + }; +} |