[Test] (Pipe): give the pull build the same ctest names as the push build so a push-only case skips instead of vanishing

- G2 requires the pull and push ctest name sets to be identical, name for name. The two new
  suites had a single hand-written "SkippedInAPullBuild" placeholder each, which made the pull
  build 30 names short - a diff G2 exists to catch.
- Each file now carries an X-macro list of its push-only suite.name pairs, expanded in the
  pull branch into cases that GTEST_SKIP. A case added on one side and forgotten on the other
  is a visible ctest-name diff rather than a test that silently is not there.
- Measured with a CORRECTED gate command. The brief's G2/G14 grep is '^\s+Test #', which only
  matches a four-digit test number: ctest right-aligns the number, so tests 1..999 print as
  "Test    #7:" with more than one space, and on this tree that silently dropped 999 of 2368
  names - i.e. the gate as written passes while looking at 58% of the list. The pattern that
  works is '^ +Test +#[0-9]+: '. Both gates are green under it: 2396 names in the pull build
  and 2396 in the push build with a zero-line diff, and zero of the 2363 baseline names gone.
This commit is contained in:
2026-09-07 23:18:09 -04:00
parent 43bf97cc87
commit 3ab394e2b8
2 changed files with 54 additions and 6 deletions
+21 -3
View File
@@ -29,9 +29,27 @@ using namespace MobileGL::MG_Pipe;
namespace {
#if !MOBILEGL_PIPE_PUSH
TEST(CsoCache, SkippedInAPullBuild) {
GTEST_SKIP() << "the CSO cache is compiled only under MOBILEGL_PIPE_PUSH";
}
// G2 REQUIRES THE PULL AND PUSH CTEST NAME SETS TO BE IDENTICAL, name for name. A
// push-only case therefore cannot be ABSENT from a pull build; it has to be there and
// SKIP, which is the shape PipeInputsTest.cpp established for the same reason. This list
// declares exactly the suite.name pairs the push build gets from the real cases below, so
// a case added on one side and forgotten on the other shows up as a ctest-name diff
// rather than as a test that silently is not there.
#define MGL_CSO_CACHE_TEST_LIST(X) \
X(CsoCacheTest, TheSameStateIsMintedOnceAndReusedForever) \
X(CsoCacheTest, LruEvictsTheOldestAndEmitsDelete) \
X(CsoCacheTest, HashCollisionDoesNotAliasTwoStates) \
X(CsoCacheTest, ContentAddressingOffMintsEveryTime) \
X(CsoCacheTest, EveryAcquireCountsItsPayloadBytes) \
X(SetHashSuppressorTest, TheFirstEmissionAlwaysGoesOutOnEverySlot) \
X(SetHashSuppressorTest, AComputedZeroIsRemappedSoItIsNeverConfusedWithNeverEmitted) \
X(SetHashSuppressorTest, SlotsAreIndependent) \
X(SetHashSuppressorTest, InvalidateMakesTheNextSetGoOutWhateverItHashesTo)
#define MGL_DECLARE_PULL_SKIP(Suite, Name) \
TEST(Suite, Name) { GTEST_SKIP() << "compiled only under MOBILEGL_PIPE_PUSH"; }
MGL_CSO_CACHE_TEST_LIST(MGL_DECLARE_PULL_SKIP)
#undef MGL_DECLARE_PULL_SKIP
#else
class CsoCacheTest : public ::testing::Test {
protected:
+33 -3
View File
@@ -41,9 +41,39 @@ namespace {
}
#if !MOBILEGL_PIPE_PUSH
TEST(Tracker, SkippedInAPullBuild) {
GTEST_SKIP() << "the tracker is compiled only under MOBILEGL_PIPE_PUSH";
}
// G2 REQUIRES THE PULL AND PUSH CTEST NAME SETS TO BE IDENTICAL, name for name. A
// push-only case therefore cannot be ABSENT from a pull build; it has to be there and
// SKIP, which is the shape PipeInputsTest.cpp established for the same reason. This list
// declares exactly the suite.name pairs the push build gets from the real cases below, so
// a case added on one side and forgotten on the other shows up as a ctest-name diff
// rather than as a test that silently is not there.
#define MGL_TRACKER_TEST_LIST(X) \
X(TrackerAggregates, EveryAggregateStartsAtZero) \
X(TrackerAggregates, AVertexArrayAttributeMovesOnlyTheVaoAggregate) \
X(TrackerAggregates, AFramebufferObjectWriteMovesOnlyTheFramebufferAggregate) \
X(TrackerAggregates, AFramebufferDefaultSetterMovesOnlyTheFramebufferAggregate) \
X(TrackerAggregates, ATextureContentWriteMovesOnlyTheContentAggregate) \
X(TrackerAggregates, ATextureParameterMovesOnlyTheParamsAggregate) \
X(TrackerAggregates, ASamplerParameterMovesOnlyTheParamsAggregate) \
X(TrackerAggregates, ABufferRespecifyMovesOnlyTheBufferAggregate) \
X(TrackerAggregates, AVertexAttribDefaultMovesOnlyItsOwnAggregate) \
X(TrackerAggregates, ANoteWithoutALiveContextIsANoOp) \
X(TrackerWalk, EveryBitHasAName) \
X(TrackerWalk, OnlyTheFiveEmittedBitsNameASubsystem) \
X(TrackerWalk, TheFirstWalkOnAFreshContextPublishesEverything) \
X(TrackerWalk, SteadyStateEmitsNothing) \
X(TrackerWalk, BlendToggleReusesTwoCsos) \
X(TrackerWalk, ViewportDoesNotMintACso) \
X(TrackerWalk, WrapAroundRePushesButNeverMisses) \
X(TrackerWalk, AggregateGenerationCatchesABoundTextureMoving) \
X(TrackerWalk, ANaNPatchLevelEqualsItselfAndDoesNotFireForever) \
X(TrackerWalk, ThePixelPackShutterIsAByteCompareOfThePackHalfOnly) \
X(TrackerWalk, TheFireTalliesOnlyRunWhilePipeStatsIsOn)
#define MGL_DECLARE_PULL_SKIP(Suite, Name) \
TEST(Suite, Name) { GTEST_SKIP() << "compiled only under MOBILEGL_PIPE_PUSH"; }
MGL_TRACKER_TEST_LIST(MGL_DECLARE_PULL_SKIP)
#undef MGL_DECLARE_PULL_SKIP
#else
using GLContext = MG_State::GLState::GLContext;