diff options
author | Don Scorgie <dscorgie@src.gnome.org> | 2007-06-02 13:19:51 +0000 |
---|---|---|
committer | Don Scorgie <dscorgie@src.gnome.org> | 2007-06-02 13:19:51 +0000 |
commit | 5de8d38f5160373e70fba5e12a9fe6d91fddffb7 (patch) | |
tree | cb20ebae9b356db9810806fd54d02dc8d6614361 | |
parent | 334cb5bb40033d1554016593e93ee0c463438361 (diff) | |
download | yelp-5de8d38f5160373e70fba5e12a9fe6d91fddffb7.tar.gz |
Bit more framework
* src/test-resolver.c:
Bit more framework
* src/yelp-utils.c:
* src/yelp-utils.h:
Beginnings of testing (sort-of recognises different types)
svn path=/branches/yelp-spoon/; revision=2818
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | src/test-resolver.c | 68 | ||||
-rw-r--r-- | src/yelp-utils.c | 50 | ||||
-rw-r--r-- | src/yelp-utils.h | 14 |
4 files changed, 137 insertions, 6 deletions
@@ -1,3 +1,14 @@ +2007-06-02 Don Scorgie <dscorgie@cvs.gnome.org> + + * src/test-resolver.c: + Bit more framework + + * src/yelp-utils.c: + * src/yelp-utils.h: + Beginnings of testing (sort-of recognises different types) + Add enum for different types + Add lots of printfs that should be removed at some point + 2007-05-31 Don Scorgie <dscorgie@svn.gnome.org> * src/yelp-utils.h: diff --git a/src/test-resolver.c b/src/test-resolver.c index 39828f7a..e9c8b89d 100644 --- a/src/test-resolver.c +++ b/src/test-resolver.c @@ -6,26 +6,88 @@ */ #include <stdio.h> +#include <glib.h> #include "yelp-utils.h" +int DefaultTests (void); +int TestFile (char *uri); + + +int +TestFile (char *uri) +{ + + return TRUE; +} + +int +DefaultTests (void) +{ + + return 0; +} + int main (int argc, char *argv[]) { int i=1; - if (argc < 2 || argc % 2 != 1) { - printf ("Usage: %s <test-uri> <type>\n", argv[0]); + if (argc % 2 != 1) { + printf ("Usage: %s [<test-uri> <type> <test-uri> <type> ... ]\n", argv[0]); printf ("type can be one of:\n"); - printf ("man, info, doc, external, fail\n"); + printf ("man, info, doc, html, external, fail\n"); return 1; } + if (argc == 1) { + int ret; + ret = DefaultTests (); + return ret; + } while (i < argc) { + char *uri = argv[i]; + char *type = argv[i+1]; + char *result = NULL; + YelpSpoonType restype = YELP_TYPE_ERROR; + + printf ("uri: %s type: %s\n", argv[i], argv[i+1]); + restype = yelp_uri_resolve (argv[i], &result); + if (g_str_equal (type, "doc")) { + if (restype != YELP_TYPE_DOC || !TestFile (result)) { + printf ("Failed doc test %s. Aborting.\n", uri); + return 2; + } + } else if (g_str_equal (type, "info")) { + if (restype != YELP_TYPE_INFO || !TestFile (result)) { + printf ("Failed doc test %s. Aborting.\n", uri); + return 3; + } + } else if (g_str_equal (type, "man")) { + if (restype != YELP_TYPE_MAN || !TestFile (result)) { + printf ("Failed doc test %s. Aborting.\n", uri); + return 4; + } + } else if (g_str_equal (type, "external")) { + if (restype != YELP_TYPE_EXTERNAL || !TestFile (result)) { + printf ("Failed doc test %s. Aborting.\n", uri, restype, YELP_TYPE_EXTERNAL); + return 5; + } + } else if (g_str_equal (type, "error")) { + if (restype != YELP_TYPE_ERROR || result != NULL) { + printf ("Failed doc test %s. Aborting.\n", uri); + return 6; + } + } else { + printf ("Unknown test: %s. Ignoring.\n", type); + } i+=2; + g_free (result); + result = NULL; } + return 0; } diff --git a/src/yelp-utils.c b/src/yelp-utils.c index 03fb3f63..ae3e85f1 100644 --- a/src/yelp-utils.c +++ b/src/yelp-utils.c @@ -1047,8 +1047,54 @@ convert_info_uri (gchar *uri) } #else gchar * -yelp_uri_resolve (char *uri) +resolve_process_ghelp (char *uri) { - printf ("Resolving %s\n", uri); + +} + +YelpSpoonType +yelp_uri_resolve (gchar *uri, gchar **result) +{ + YelpSpoonType ret = YELP_TYPE_ERROR; + g_assert (result != NULL); + if (*result != NULL) { + g_warning ("Warning: result is not empty: %s. Not searching.", *result); + return ret; + } + + if (!strncmp (uri, "ghelp:", 6) || !strncmp (uri, "gnome-help:", 11)) { + printf ("ghelp\n"); + *result = resolve_process_ghelp (uri); + if (*result) { + ret = YELP_TYPE_DOC; + } + } else if (!strncmp (uri, "man:", 4)) { + printf ("man\n"); + /* Man page */ + } else if (!strncmp (uri, "info:", 5)) { + printf ("info\n"); + /* info page */ + } else if (!strncmp (uri, "file:", 5)) { + printf ("file\n"); + /* full file path. Ensure file exists and determine type */ + } else if (!strncmp (uri, "x-yelp-toc:", 11)) { + printf("toc\n"); + /* TOC page */ + } else if (!strncmp (uri, "x-yelp-search:", 14)) { + printf ("search\n"); + /* Search pager request */ + } else if (g_file_test (uri, G_FILE_TEST_EXISTS)) { + printf ("Full path\n"); + /* Probably full path */ + } else { + /* We really don't care what it is. It's not ours. Let + * someone else handle it + */ + printf ("Ext\n"); + ret = YELP_TYPE_EXTERNAL; + *result = g_strdup (uri); + } + + return ret; } #endif diff --git a/src/yelp-utils.h b/src/yelp-utils.h index d502b696..fc0bfae2 100644 --- a/src/yelp-utils.h +++ b/src/yelp-utils.h @@ -114,7 +114,19 @@ gchar ** yelp_get_info_paths (void); gchar ** yelp_get_man_paths (void); #else -gchar * yelp_uri_resolve (char *uri); +typedef enum { + YELP_TYPE_DOC = 0, + YELP_TYPE_MAN, + YELP_TYPE_INFO, + YELP_TYPE_HTML, + YELP_TYPE_TOC, + YELP_TYPE_SEARCH, + YELP_TYPE_NOT_FOUND, + YELP_TYPE_EXTERNAL, + YELP_TYPE_ERROR +} YelpSpoonType; + +YelpSpoonType yelp_uri_resolve (gchar *uri, gchar **result); #endif #endif /* __YELP_UTILS_H__ */ |