a0eba0964baabf512bdace17b3df2b203a923df9
braney
  Wed Jan 14 12:36:56 2015 -0800
hubCheck should make sure that the number on "type bigBed #" lines has anumber that's less than equal to the number of fields in the table.

diff --git src/hg/lib/trackHubCheck.c src/hg/lib/trackHubCheck.c
index 740edcf..07a8110 100644
--- src/hg/lib/trackHubCheck.c
+++ src/hg/lib/trackHubCheck.c
@@ -52,30 +52,38 @@
 	if (relativeUrl != NULL)
 	    {
 	    char *type = trackDbRequiredSetting(tdb, "type");
 	    char *bigDataUrl = trackHubRelativeUrl(genome->trackDbFile, relativeUrl);
 	    verbose(2, "checking %s.%s type %s at %s\n", genome->name, tdb->track, type, bigDataUrl);
 	    if (startsWithWord("bigWig", type))
 		{
 		/* Just open and close to verify file exists and is correct type. */
 		struct bbiFile *bbi = bigWigFileOpen(bigDataUrl);
 		bbiFileClose(&bbi);
 		}
 	    else if (startsWithWord("bigBed", type) || startsWithWord("bigGenePred", type))
 		{
 		/* Just open and close to verify file exists and is correct type. */
 		struct bbiFile *bbi = bigBedFileOpen(bigDataUrl);
+		char *typeString = cloneString(type);
+		nextWord(&typeString);
+		if (typeString != NULL)
+		    {
+		    unsigned numFields = sqlUnsigned(nextWord(&typeString));
+		    if (numFields > bbi->fieldCount)
+			errAbort("fewer fields in bigBed (%d) than in type statement (%d) for track %s with bigDataUrl %s\n", bbi->fieldCount, numFields, trackHubSkipHubName(tdb->track), bigDataUrl);
+		    }
 		bbiFileClose(&bbi);
 		}
 	    else if (startsWithWord("vcfTabix", type))
 		{
 		/* Just open and close to verify file exists and is correct type. */
 		struct vcfFile *vcf = vcfTabixFileMayOpen(bigDataUrl, NULL, 0, 0, 1, 1);
 		if (vcf == NULL)
 		    // Warnings already indicated whether the tabix file is missing etc.
 		    errAbort("Couldn't open %s and/or its tabix index (.tbi) file.  "
 			     "See http://genome.ucsc.edu/goldenPath/help/vcf.html",
 			     bigDataUrl);
 		vcfFileFree(&vcf);
 		}
 	    else if (startsWithWord("bam", type))
 		{