mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-08 20:28:32 +09:00
[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:
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user