Bump year. Change Aps->ApS
[idzebra-moved-to-github.git] / test / api / testlib.c
index b9c1b1e..c32fb16 100644 (file)
@@ -1,6 +1,6 @@
-/* $Id: testlib.c,v 1.6 2004-11-29 21:55:28 adam Exp $
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
-   Index Data Aps
+/* $Id: testlib.c,v 1.11 2005-01-15 19:38:35 adam Exp $
+   Copyright (C) 1995-2005
+   Index Data ApS
 
 This file is part of the Zebra server.
 
@@ -23,6 +23,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 /** testlib - utilities for the api tests */
 
 #include <assert.h>
+#include <yaz/log.h>
 #include <yaz/pquery.h>
 #include <idzebra/api.h>
 #include "testlib.h"
@@ -60,18 +61,27 @@ ZebraService start_up(char *cfgname, int argc, char **argv)
     return start_service(cfgname);
 }
 
+/**
+ * get_srcdir: return env srcdir or . (if does does not exist)
+ */
+const char *get_srcdir()
+{
+    const char *srcdir = getenv("srcdir");
+    if (!srcdir || ! *srcdir)
+        srcdir=".";
+    return srcdir;
+
+}
 /** start_service - do a zebra_start with a decent config name */
 ZebraService start_service(char *cfgname)
 {
     char cfg[256];
-    char *srcdir = getenv("srcdir");
+    const char *srcdir = get_srcdir();
     ZebraService zs;
-    if (!srcdir || ! *srcdir)
-        srcdir=".";
     if (!cfgname || ! *cfgname )
         cfgname="zebra.cfg";
 
-    sprintf(cfg, "%.200s/%s",srcdir, cfgname);
+    sprintf(cfg, "%.200s/%.50s", srcdir, cfgname);
     zs=zebra_start(cfg);
     if (!zs)
     {
@@ -219,7 +229,6 @@ void meta_query(int lineno, ZebraHandle zh, char *query, int exphits,
     const char *setname="rsetname";
     zint *positions = (zint *) malloc(1 + (exphits * sizeof(zint)));
     int hits;
-    int rc;
     int i;
         
     hits = do_query(lineno, zh, query, exphits);
@@ -231,7 +240,7 @@ void meta_query(int lineno, ZebraHandle zh, char *query, int exphits,
     
     if (!meta)
     {
-        printf("Error: retrieve returned %d \n%s\n",rc,query);
+        printf("Error: retrieve returned error\n%s\n", query);
         exit (1);
     }
 
@@ -249,3 +258,32 @@ void meta_query(int lineno, ZebraHandle zh, char *query, int exphits,
     free(positions);
 }
 
+struct finfo {
+    const char *name;
+    int occurred;
+};
+
+static void filter_cb(void *cd, const char *name)
+{
+    struct finfo *f = (struct finfo*) cd;
+    if (!strcmp(f->name, name))
+       f->occurred = 1;
+}
+
+void check_filter(ZebraService zs, const char *name)
+{
+    struct finfo f;
+
+    f.name = name;
+    f.occurred = 0;
+    zebra_filter_info(zs, &f, filter_cb);
+    if (!f.occurred)
+    {
+       yaz_log(YLOG_WARN, "Filter %s does not exist.", name);
+       exit(0);
+    }
+}
+
+
+
+