diff options
-rw-r--r-- | src/libtracker-extract/tracker-guarantee.c | 31 | ||||
-rw-r--r-- | tests/libtracker-extract/tracker-guarantee-test.c | 25 |
2 files changed, 41 insertions, 15 deletions
diff --git a/src/libtracker-extract/tracker-guarantee.c b/src/libtracker-extract/tracker-guarantee.c index d7409e5ad..99354e523 100644 --- a/src/libtracker-extract/tracker-guarantee.c +++ b/src/libtracker-extract/tracker-guarantee.c @@ -87,7 +87,7 @@ get_date_from_file_mtime (const gchar *uri) * (before the "." and extension of the file) as the title. If the * title has any "_" characters, they are also converted into spaces. * - * Returns: %TRUE on success, otherwise %FALSE. + * Returns: %TRUE on success and content was added to @metadata, otherwise %FALSE. * * Since: 0.10 **/ @@ -98,6 +98,8 @@ tracker_guarantee_title_from_file (TrackerSparqlBuilder *metadata, const gchar *uri, gchar **p_new_value) { + gboolean success = TRUE; + #ifdef GUARANTEE_METADATA g_return_val_if_fail (metadata != NULL, FALSE); g_return_val_if_fail (key != NULL, FALSE); @@ -115,7 +117,12 @@ tracker_guarantee_title_from_file (TrackerSparqlBuilder *metadata, gchar *value; value = get_title_from_file (uri); - tracker_sparql_builder_object_unvalidated (metadata, value); + + if (!value && value[0] != '\0') { + tracker_sparql_builder_object_unvalidated (metadata, value); + } else { + success = FALSE; + } if (p_new_value != NULL) { *p_new_value = value; @@ -131,10 +138,12 @@ tracker_guarantee_title_from_file (TrackerSparqlBuilder *metadata, if (p_new_value != NULL) { *p_new_value = g_strdup (current_value); } + } else { + success = FALSE; } #endif /* GUARANTEE_METADATA */ - return TRUE; + return success; } /** @@ -151,7 +160,7 @@ tracker_guarantee_title_from_file (TrackerSparqlBuilder *metadata, * When parsing @uri, stat() is called on the file to create a * date based on the file's mtime. * - * Returns: %TRUE on success, otherwise %FALSE. + * Returns: %TRUE on success and content was added to @metadata, otherwise %FALSE. * * Since: 0.10 **/ @@ -161,6 +170,8 @@ tracker_guarantee_date_from_file_mtime (TrackerSparqlBuilder *metadata, const gchar *current_value, const gchar *uri) { + gboolean success = TRUE; + #ifdef GUARANTEE_METADATA g_return_val_if_fail (metadata != NULL, FALSE); g_return_val_if_fail (key != NULL, FALSE); @@ -174,15 +185,23 @@ tracker_guarantee_date_from_file_mtime (TrackerSparqlBuilder *metadata, gchar *value; value = get_date_from_file_mtime (uri); - tracker_sparql_builder_object_unvalidated (metadata, value); + + if (value && *value != '\0') { + tracker_sparql_builder_object_unvalidated (metadata, value); + } else { + success = FALSE; + } + g_free (value); } #else /* GUARANTEE_METADATA */ if (current_value && *current_value != '\0') { tracker_sparql_builder_predicate (metadata, key); tracker_sparql_builder_object_unvalidated (metadata, current_value); + } else { + success = FALSE; } #endif /* GUARANTEE_METADATA */ - return TRUE; + return success; } diff --git a/tests/libtracker-extract/tracker-guarantee-test.c b/tests/libtracker-extract/tracker-guarantee-test.c index 3495c552d..1212022cc 100644 --- a/tests/libtracker-extract/tracker-guarantee-test.c +++ b/tests/libtracker-extract/tracker-guarantee-test.c @@ -35,26 +35,19 @@ typedef struct { TestInfo title_tests [] = { { "normal-extraction", "file:///a/b/a_video_with_metadata.avi", "extracted title", "extracted title" }, - -#ifdef GUARANTEE_METADATA { "empty-extraction", "file:///a/b/a_video_with_no_metadata.avi", NULL, "a video with no metadata" }, { "underscore-separators", "file:///a/b/a_video_with_no_metadata.avi", "", "a video with no metadata" }, { "dot-separators", "file:///a/b/a.video.with.no.metadata.avi", NULL, "a.video.with.no.metadata" }, { "no-extension", "file:///a/b/a video without extension", NULL, "a video without extension" }, { "hidden-files", "file:///a/b/.hidden_file", NULL, "hidden file" }, -#endif { NULL, NULL, NULL } }; TestInfo date_tests [] = { { "date-normal", "file:///does/not/matter/here", NULL, "2011-10-10T12:13:14Z0300" }, - -#ifdef GUARANTEE_METADATA { "date-is-null", NULL, NULL, NULL }, { "date-is-empty-string", NULL, NULL, NULL }, -#endif - { NULL, NULL, NULL } }; @@ -62,13 +55,16 @@ static void test_title (TestInfo *info, gconstpointer context) { +#ifdef GUARANTEE_METADATA gchar *sparql; gchar *title_guaranteed; + gboolean title_retrieved; tracker_sparql_builder_insert_open (info->builder, "test"); tracker_sparql_builder_subject_iri (info->builder, "test://resource"); + title_retrieved = tracker_guarantee_title_from_file (info->builder, "nie:title", info->extracted, info->uri, &title_guaranteed); + g_assert_true (title_retrieved); - g_assert_true (tracker_guarantee_title_from_file (info->builder, "nie:title", info->extracted, info->uri, &title_guaranteed)); tracker_sparql_builder_insert_close (info->builder); sparql = g_strdup_printf ("INSERT INTO <test> {\n<test://resource> nie:title \"%s\" .\n}\n", info->expected); @@ -77,20 +73,31 @@ test_title (TestInfo *info, g_free (title_guaranteed); g_free (sparql); +#else /* GUARANTEE_METADATA */ + g_test_skip ("Not built with --enable-guarantee-metadata"); +#endif /* GUARANTEE_METADATA */ } static void test_date (TestInfo *info, gconstpointer context) { +#ifdef GUARANTEE_METADATA + gboolean date_retrieved; + tracker_sparql_builder_insert_open (info->builder, "test"); tracker_sparql_builder_subject_iri (info->builder, "test://resource"); - g_assert_true (tracker_guarantee_date_from_file_mtime (info->builder, "test:mtime", info->extracted, info->uri)); + date_retrieved = tracker_guarantee_date_from_file_mtime (info->builder, "test:mtime", info->extracted, info->uri); + g_assert_true (date_retrieved); + tracker_sparql_builder_insert_close (info->builder); /* mtime can change in the file so we just check that the property is in the output */ g_assert_nonnull (g_strstr_len (tracker_sparql_builder_get_result (info->builder), -1, "test:mtime")); +#else /* GUARANTEE_METADATA */ + g_test_skip ("Not built with --enable-guarantee-metadata"); +#endif /* GUARANTEE_METADATA */ } static void |