mirror of
https://github.com/CHN-beta/nixpkgs.git
synced 2026-01-12 02:40:31 +08:00
evolution-ews introduced a check for optional schemas, which would skip our hardcoded code paths.
a0c514bd34
Let’s update the semantic patch to also replace the invocations of specified `schemaExistsFunction` for known schemas with `true`.
99 lines
2.4 KiB
Nix
99 lines
2.4 KiB
Nix
{
|
|
runCommandLocal,
|
|
lib,
|
|
git,
|
|
clang-tools,
|
|
makeHardcodeGsettingsPatch,
|
|
}:
|
|
|
|
let
|
|
mkTest =
|
|
{
|
|
name,
|
|
expected,
|
|
src,
|
|
patches ? [ ],
|
|
args,
|
|
}:
|
|
|
|
let
|
|
patch = makeHardcodeGsettingsPatch (
|
|
args
|
|
// {
|
|
inherit src 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;
|
|
args = {
|
|
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
|
|
];
|
|
args = {
|
|
schemaIdToVariableMapping = {
|
|
"org.gnome.evolution-data-server.addressbook" = "EDS";
|
|
};
|
|
};
|
|
expected = ./fixtures/example-project-wrapped-settings-constructor-patched;
|
|
};
|
|
|
|
existsFn = mkTest {
|
|
name = "exists-fn";
|
|
src = ./fixtures/example-project;
|
|
args = {
|
|
schemaIdToVariableMapping = {
|
|
"org.gnome.evolution-data-server.addressbook" = "EDS";
|
|
"org.gnome.evolution.calendar" = "EVO";
|
|
"org.gnome.seahorse.nautilus.window" = "SEANAUT";
|
|
};
|
|
schemaExistsFunction = "e_ews_common_utils_gsettings_schema_exists";
|
|
};
|
|
expected = ./fixtures/example-project-patched-with-exists-fn;
|
|
};
|
|
|
|
}
|