makeHardcodeGsettingsPatch: Add simple tests

This commit is contained in:
Jan Tojnar 2022-12-15 21:05:02 +01:00
parent 35d24b51f5
commit 98e84e79a9
4 changed files with 133 additions and 0 deletions

View File

@ -81,6 +81,8 @@ with pkgs;
coq = callPackage ./coq {};
makeHardcodeGsettingsPatch = callPackage ./make-hardcode-gsettings-patch { };
makeWrapper = callPackage ./make-wrapper { };
makeBinaryWrapper = callPackage ./make-binary-wrapper {
makeBinaryWrapper = pkgs.makeBinaryWrapper.override {

View File

@ -0,0 +1,57 @@
{ 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";
};
expected = ./fixtures/example-project-patched;
};
}

View File

@ -0,0 +1,46 @@
#include <gio/gio.h>
#include <glib-object.h>
void schema_id_literal() {
GSettings *settings;
{
g_autoptr(GSettingsSchemaSource) schema_source;
g_autoptr(GSettingsSchema) schema;
schema_source = g_settings_schema_source_new_from_directory("@EDS@", g_settings_schema_source_get_default(), TRUE, NULL);
schema = g_settings_schema_source_lookup(schema_source, "org.gnome.evolution-data-server.addressbook", FALSE);
settings = g_settings_new_full(schema, NULL, NULL);
}
g_object_unref(settings);
}
#define SELF_UID_PATH_ID "org.gnome.evolution-data-server.addressbook"
int schema_id_from_constant() {
GSettings *settings;
{
g_autoptr(GSettingsSchemaSource) schema_source;
g_autoptr(GSettingsSchema) schema;
schema_source = g_settings_schema_source_new_from_directory("@EDS@", g_settings_schema_source_get_default(), TRUE, NULL);
schema = g_settings_schema_source_lookup(schema_source, SELF_UID_PATH_ID, FALSE);
settings = g_settings_new_full(schema, NULL, NULL);
}
g_object_unref(settings);
}
void schema_id_autoptr() {
g_autoptr(GSettings) settings = NULL;
{
g_autoptr(GSettingsSchemaSource) schema_source;
g_autoptr(GSettingsSchema) schema;
schema_source = g_settings_schema_source_new_from_directory("@EVO@", g_settings_schema_source_get_default(), TRUE, NULL);
schema = g_settings_schema_source_lookup(schema_source, "org.gnome.evolution.calendar", FALSE);
settings = g_settings_new_full(schema, NULL, NULL);
}
}
int main() {
schema_id_literal();
schema_id_from_constant();
schema_id_autoptr();
return 0;
}

View File

@ -0,0 +1,28 @@
#include <gio/gio.h>
#include <glib-object.h>
void schema_id_literal() {
GSettings *settings;
settings = g_settings_new("org.gnome.evolution-data-server.addressbook");
g_object_unref(settings);
}
#define SELF_UID_PATH_ID "org.gnome.evolution-data-server.addressbook"
int schema_id_from_constant() {
GSettings *settings;
settings = g_settings_new(SELF_UID_PATH_ID);
g_object_unref(settings);
}
void schema_id_autoptr() {
g_autoptr(GSettings) settings = NULL;
settings = g_settings_new("org.gnome.evolution.calendar");
}
int main() {
schema_id_literal();
schema_id_from_constant();
schema_id_autoptr();
return 0;
}