685233c5df19c4adedc6b82cd16418e611246a3e chmalee Wed Sep 18 14:58:29 2024 -0700 hubCheck checks for valid type lines in subtracks, not just that the bigBed type setting is correct, refs #34475 diff --git src/hg/utils/hubCheck/hubCheck.c src/hg/utils/hubCheck/hubCheck.c index 43082fa..77eabf4 100644 --- src/hg/utils/hubCheck/hubCheck.c +++ src/hg/utils/hubCheck/hubCheck.c @@ -768,30 +768,50 @@ { errAbort("Track \"%s\" has children tracks (e.g: \"%s\"), but is not a " "compositeTrack, container, view or superTrack", tdb->track, tdb->subtracks->track); } } boolean checkTypeLine(struct trackHubGenome *genome, struct trackDb *tdb, struct dyString *errors, struct trackHubCheckOptions *options) { boolean retVal = FALSE; struct errCatch *errCatch = errCatchNew(); if (errCatchStart(errCatch)) { char *type = trackDbRequiredSetting(tdb, "type"); char *splitType[4]; int numWords = chopByWhite(cloneString(type), splitType, sizeof(splitType)); + char *trackType = splitType[0]; + boolean isParentTrack = (tdbIsComposite(tdb) || tdbIsCompositeView(tdb) || tdbIsContainer(tdb)); + if (!isParentTrack && + // these are the valid trackDb types for hub data tracks: + !(sameString("bigNarrowPeak", trackType) || sameString("bigBed", trackType) || + sameString("bigGenePred", trackType) || sameString("bigPsl", trackType)|| + sameString("bigChain", trackType)|| sameString("bigMaf", trackType) || + sameString("bigBarChart", trackType) || sameString("bigInteract", trackType) || + sameString("bigLolly", trackType) || sameString("bigRmsk", trackType) || + sameString("bigWig", trackType) || sameString("longTabix", trackType) || + sameString("vcfTabix", trackType) || sameString("vcfPhasedTrio", trackType) || + sameString("bam", trackType) || sameString("hic", trackType) + #ifdef USE_HAL + || sameString("halSnake", trackType) + #endif + )) + { + errAbort("error in type line \"%s\" for track \"%s\". The only valid types for tracks that are not composites, views or supertracks are: bigWig, bigBed and bigBed variants like bigGenePred/bigChain/bigBarChart/etc, longTabix, vcfTabix, vcfPhasedTrio, bam, hic and halSnake.", trackType, tdb->track); + } + if (sameString(splitType[0], "bigBed")) { if (numWords > 1 && (strchr(splitType[1], '+') || strchr(splitType[1], '.'))) { errAbort("error in type line \"%s\" for track \"%s\". " "A space is needed after the \"+\" or \".\" character.", type, tdb->track); } if (numWords > 2 && (!sameString(splitType[2], "+") && !sameString(splitType[2], "."))) { errAbort("error in type line \"%s\" for track \"%s\". " "Only \"+\" or \".\" is allowed after bigBed numFields setting.", type, tdb->track); } } } errCatchEnd(errCatch);