]> granicus.if.org Git - jq/commitdiff
fix jq_test so that it runs in the distcheck phase of autoconf
authorLee Thompson <stagr.lee@gmail.com>
Sun, 3 Feb 2013 05:05:00 +0000 (23:05 -0600)
committerLee Thompson <stagr.lee@gmail.com>
Sun, 3 Feb 2013 05:05:00 +0000 (23:05 -0600)
jq_test.c

index 77e2860fd82b5db7dd5ff803c3ab751f08f617f3..9cdbdba4c1234ddb8765ba932085a7bef9d9075f 100644 (file)
--- a/jq_test.c
+++ b/jq_test.c
@@ -8,12 +8,24 @@
 static void jv_test();
 static void run_jq_tests();
 
-FILE* testdata;
 
 int main(int argc, char* argv[]) {
+  FILE* testdata;
+
   jv_test();
   if (argc == 1) {
     testdata = fopen("testdata", "r");
+    if ( NULL == testdata )
+    {
+      /* in an autoconf distcheck, the binary file will be in a _build subdirectory */
+      testdata = fopen("../testdata", "r");
+      if ( NULL == testdata )
+      {
+        fprintf(stderr, "Could not find testdata file\n");
+        exit(1);
+      }
+    }
+
   } else if (argc == 2) {
     if (!strcmp(argv[1], "-")) {
       testdata = stdin;
@@ -24,7 +36,7 @@ int main(int argc, char* argv[]) {
     printf("usage: %s OR cat testdata | %s - OR %s testdata\n", argv[0], argv[0], argv[0]);
     return 127;
   }
-  run_jq_tests();
+  run_jq_tests(testdata);
   if (testdata != stdin) fclose(testdata);
 }
 
@@ -38,22 +50,10 @@ static int skipline(const char* buf) {
   return 0;
 }
 
-static void run_jq_tests() {
-  FILE* testdata = NULL;
+static void run_jq_tests(FILE *testdata) {
   char buf[4096];
   int tests = 0, passed = 0, invalid = 0;
 
-  testdata = fopen("testdata","r");
-  if ( NULL == testdata )
-  {
-    /* in an autoconf distcheck, the binary file will be in a _build subdirectory */
-    testdata = fopen("../testdata", "r");
-    if ( NULL == testdata )
-    {
-      fprintf(stderr, "Could not find testdata file\n");
-      exit(1);
-    }
-  }
   while (1) {
     if (!fgets(buf, sizeof(buf), testdata)) break;
     if (skipline(buf)) continue;