summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDon Scorgie <dscorgie@src.gnome.org>2007-06-02 13:19:51 +0000
committerDon Scorgie <dscorgie@src.gnome.org>2007-06-02 13:19:51 +0000
commit5de8d38f5160373e70fba5e12a9fe6d91fddffb7 (patch)
treecb20ebae9b356db9810806fd54d02dc8d6614361
parent334cb5bb40033d1554016593e93ee0c463438361 (diff)
downloadyelp-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--ChangeLog11
-rw-r--r--src/test-resolver.c68
-rw-r--r--src/yelp-utils.c50
-rw-r--r--src/yelp-utils.h14
4 files changed, 137 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index ec13ef60..939ff3ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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__ */