a7d0df2dbc1d8fded14f2631b46d47851ded1b40 chmalee Mon May 23 12:04:32 2022 -0700 Add a test for bogus subgroup membership in hubCheck, refs #29389, #13428 diff --git src/hg/utils/hubCheck/hubCheck.c src/hg/utils/hubCheck/hubCheck.c index ebb2be8..e664265 100644 --- src/hg/utils/hubCheck/hubCheck.c +++ src/hg/utils/hubCheck/hubCheck.c @@ -663,30 +663,40 @@ } } // now check that this subtrack is a member of every defined subgroup for (i = 0; i < ArraySize(membersForAll->members); i++) { if (membersForAll->members[i] != NULL) { char *subgroupName = membersForAll->members[i]->groupTag; if (stringArrayIx(subgroupName, membership->subgroups, membership->count) == -1) { errAbort("subtrack %s not a member of subgroup %s", subtrackName, subgroupName); } } } + + // check that the subtrack does not have any bogus subgroups that don't exist in the parent + for (i = 0; i < membership->count; i++) + { + char *subgroupName = membership->subgroups[i]; + if (!subgroupingExists(tdb->parent, subgroupName)) + { + errAbort("subtrack \"%s\" has a subgroup \"%s\" not defined at parent level", subtrackName, subgroupName); + } + } } } errCatchEnd(errCatch); if (errCatch->gotError) { retVal = 1; trackDbErr(errors, errCatch->message->string, genome, tdb, options->htmlOut); } errCatchFree(&errCatch); return retVal; } int hubCheckCompositeSettings(struct trackHubGenome *genome, struct trackDb *tdb, struct dyString *errors, struct trackHubCheckOptions *options) /* Check composite level settings like subgroups, dimensions, sortOrder, etc.