5294e72024937d44e0e13e4f55ba408f351c2ac2
hiram
  Tue Apr 16 10:27:14 2019 -0700
updated error messages and error testing refs #18869

diff --git src/hg/hubApi/tests/jsonConsumer.pl src/hg/hubApi/tests/jsonConsumer.pl
index 9611017..abaa789 100755
--- src/hg/hubApi/tests/jsonConsumer.pl
+++ src/hg/hubApi/tests/jsonConsumer.pl
@@ -208,131 +208,138 @@
 }
 
 #############################################################################
 sub verifyCommandProcessing()
 {
     my $json = JSON->new;
     # verify command processing can detected bad input
     my $endpoint = "/list/noSubCommand";
     my $expect = "do not recognize endpoint function:";
     checkError($json, $endpoint,$expect);
 }	#	sub verifyCommandProcessing()
 
 
 #############################################################################
 sub processEndPoint() {
+  my $errReturn = 0;
   if (length($endpoint)) {
      my $json = JSON->new;
      my $jsonReturn = {};
      if ($endpoint eq "/list/hubGenomes") {
 	my %parameters;
 	# allow no hubUrl argument to test error reports
         if (length($hubUrl)) {
 	   $parameters{"hubUrl"} = "$hubUrl";
         }
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
+	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } elsif ($endpoint eq "/list/tracks") {
 	# no need to verify arguments here, pass them along, or not,
 	# so that error returns can be verified
 	my %parameters;
 	if ($trackLeavesOnly) {
 	    $parameters{"trackLeavesOnly"} = "1";
 	}
 	if (length($db)) {
 	    $parameters{"db"} = "$db";
 	}
 	# allow no hubUrl argument to test error reports
         if (length($hubUrl)) {
 	  $parameters{"hubUrl"} = "$hubUrl";
 	}
 	# allow call to go through without a genome specified to test error
 	if (length($genome)) {
 	  $parameters{"genome"} = "$genome";
 	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
+	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } elsif ($endpoint eq "/list/chromosomes") {
 	my %parameters;
 	if (length($db)) {
 	    $parameters{"db"} = "$db";
 	} else {
           if (length($hubUrl)) {
 	    $parameters{"hubUrl"} = "$hubUrl";
 	  # allow call to go through without a genome specified to test error
             if (length($genome)) {
 	      $parameters{"genome"} = "$genome";
 	    }
             if (length($track)) {
 	      $parameters{"track"} = "$track";
 	    }
 	  }
 	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
+	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } elsif ($endpoint eq "/getData/sequence") {
 	my %parameters;
 	if (length($db)) {
 	    $parameters{"db"} = "$db";
 	}
 	if (length($hubUrl)) {
 	  $parameters{"hubUrl"} = "$hubUrl";
 	}
 	# allow call to go through without a genome specified to test error
 	if (length($genome)) {
 	  $parameters{"genome"} = "$genome";
 	}
 	if (length($chrom)) {
 	    $parameters{"chrom"} = "$chrom";
 	}
 	if (length($start)) {
 	    $parameters{"start"} = "$start";
 	    $parameters{"end"} = "$end";
 	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
+	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } elsif ($endpoint eq "/getData/track") {
 	my %parameters;
 	if (length($db)) {
 	    $parameters{"db"} = "$db";
 	}
 	if (length($hubUrl)) {
 	  $parameters{"hubUrl"} = "$hubUrl";
 	}
 	# allow call to go through without a genome specified to test error
 	if (length($genome)) {
 	    $parameters{"genome"} = "$genome";
 	}
 	if (length($track)) {
 	    $parameters{"track"} = "$track";
 	}
 	if (length($chrom)) {
 	    $parameters{"chrom"} = "$chrom";
 	}
 	if (length($start)) {
 	    $parameters{"start"} = "$start";
 	    $parameters{"end"} = "$end";
 	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
+	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } else {
 	printf STDERR "# TBD: '%s'\n", $endpoint;
      }
   } else {
     printf STDERR "ERROR: no endpoint given ?\n";
     exit 255;
   }
+  return $errReturn;
 }	# sub processEndPoint()
 
 ###########################################################################
 ### test /list/publicHubs and /list/ucscGenomes
 sub test0() {
 
 my $json = JSON->new;
 my $jsonReturn = {};
 
 verifyCommandProcessing();	# check 'command' and 'subCommand'
 
 $jsonReturn = performJsonAction("/list/publicHubs", "");
 
 # this prints everything out indented nicely:
 # printf "%s", $json->pretty->encode( $jsonReturn );
@@ -406,20 +413,23 @@
     "chrom=s"  => \$chrom,
     "start=s"  => \$start,
     "end=s"    => \$end,
     "test0"    => \$test0,
     "debug"    => \$debug,
     "trackLeavesOnly"    => \$trackLeavesOnly,
     "maxItemsOutput=s"   => \$maxItemsOutput)
     or die "Error in command line arguments\n";
 
 if ($test0) {
    test0;
    exit 0;
 }
 
 if ($argc > 0) {
-   processEndPoint();
+   if (processEndPoint()) {
+	exit 255;
+   } else {
 	exit 0;
    }
+}
 
 usage();