📖 4 min read (~ 700 words).

Upstream Tracking

Upstream Tracking

We continue to monitor and selectively adopt changes from the upstream repository.

Implemented from Upstream

Monitoring

  • 🔍 #1601 - NoFieldIsZero
  • 🔍 #1840 - JSON presence check without exact values

Superseded by Our Implementation

  • ⛔ #1845 - Fix Eventually/Never regression (superseded by context-based pollCondition)
  • ⛔ #1830 - CollectT.Halt() (superseded by context-based pollCondition)
  • ⛔ #1819 - Handle unexpected exits (superseded by context-based pollCondition)
  • ⛔ #1824 - Spew testing (superseded by property-based fuzzing)

Review frequency: Quarterly (next review: May 2026)


Appendix: Upstream References

This table catalogs all upstream PRs and issues from github.com/stretchr/testify that we have processed.

Implemented (Adapted or Merged)

ReferenceTypeSummaryOutcome in Fork
#994PRColorize expected vs actual values✅ Adapted into enable/color module with themes and configuration
#1223PRDisplay uint values in decimal instead of hex✅ Merged - Applied to diff output
#1232PRColorized output for expected/actual/errors✅ Adapted into enable/color module
#1356PRpanic(nil) handling for Go 1.21+✅ Merged - Updated panic assertions
#1467PRColorized output with terminal detection✅ Adapted into enable/color module (most mature implementation)
#1480PRColorized diffs via TESTIFY_COLORED_DIFF env var✅ Adapted with env var support in enable/color
#1513PRJSONEqBytes for byte slice JSON comparison✅ Merged - Added to JSON domain
#1685PRIterator support (iter.Seq) for Contains/ElementsMatch✅ Partial - Implemented SeqContainsT and SeqNotContainsT only
#1772PRYAML library migration to maintained fork✅ Adapted - Used gopkg.in/yaml.v3 in optional enable/yaml module
#1797PRCodegen package consolidation and licensing✅ Adapted - Complete rewrite of code generation system
#1803PRKind/NotKind assertions✅ Merged - Added to Type domain
#1805IssueGeneric IsOfType[T]() without dummy value✅ Implemented - IsOfTypeT and IsNotOfTypeT in Type domain
#1816IssueFix panic on unexported struct key in map✅ Fixed in internalized go-spew
#1818PRFix panic on invalid regex in Regexp/NotRegexp✅ Merged - Added graceful error handling
#1822IssueDeterministic map ordering in diffs✅ Fixed in internalized go-spew
#1825PRFix panic using EqualValues with incomparable types✅ Merged - Enhanced type safety in EqualValues
#1826IssueType safety with spew (meta-issue)✅ Addressed through comprehensive fuzzing and fixes
#1828PRFixed panic with unexported fields in maps✅ Merged into internalized go-spew
#1829IssueFix time.Time rendering in diffs✅ Fixed in internalized go-spew
#1611IssueGoroutine leak in Eventually/Never✅ Fixed by using context.Context (consolidation into single pollCondition function)
#1813IssuePanic with unexported fields✅ Fixed via #1828 in internalized spew
#1087IssueConsistently assertion✅ Adapted
#1606PRConsistently assertion✅ Adapted

Superseded by Our Implementation

ReferenceTypeSummaryWhy Superseded
#1845PRFix Eventually/Never regressionSuperseded by context-based pollCondition implementation (we don’t have this bug)
#1819PRHandle unexpected exits in EventuallySuperseded by context-based pollCondition implementation
#1824PRSpew testing improvementsSuperseded by property-based fuzzing with random type generator
#1830PRCollectT.Halt() for stopping testsSuperseded by context-based pollCondition implementation

Under Consideration (Monitoring)

ReferenceTypeSummaryStatus
#1601IssueNoFieldIsZero assertion🔍 Monitoring - Considering implementation
#1840IssueJSON presence check without exact values🔍 Monitoring - Interesting for testing APIs with generated IDs

Informational (Not Implemented)

ReferenceTypeSummaryOutcome
#1147IssueGeneral discussion about generics adoptionâ„šī¸ Marked “Not Planned” upstream - We implemented our own generics approach (42 functions)
#1308PRComprehensive refactor with generic type parametersâ„šī¸ Draft for v2.0.0 upstream - We took a different approach with the same objective

Summary Statistics

CategoryCount
Implemented/Merged23
Superseded4
Monitoring2
Informational2
Total Processed31

Note: This fork maintains an active relationship with upstream, regularly reviewing new PRs and issues. The quarterly review process ensures we stay informed about upstream developments while maintaining our architectural independence.


See Also