In addition to `g_settings_new`, there are three other GSettings constructors: https://docs.gtk.org/gio/ctor.Settings.new.html
59 lines
1.3 KiB
Nix
59 lines
1.3 KiB
Nix
{ runCommandLocal
|
|
, git
|
|
, clang-tools
|
|
, makeHardcodeGsettingsPatch
|
|
}:
|
|
|
|
let
|
|
mkTest =
|
|
{
|
|
name,
|
|
expected,
|
|
src,
|
|
schemaIdToVariableMapping,
|
|
}:
|
|
|
|
let
|
|
patch = makeHardcodeGsettingsPatch {
|
|
inherit src schemaIdToVariableMapping;
|
|
};
|
|
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
|
|
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;
|
|
};
|
|
}
|