📖 3 min read (~ 700 words).

Upstream Tracking

Upstream Tracking

We continue to monitor and selectively adopt changes from upstream:

Implemented from Upstream

  • ✅ [#1513] - JSONEqBytes
  • ✅ [#1803] - Kind/NotKind assertions
  • ✅ [#1805] - IsOfTypeT[T] generic assertions
  • ✅ [#1685] - Partial iterator support (SeqContainsT variants)
  • ✅ [#1828] - Spew panic fixes
  • ✅ [#1825], [#1818], [#1223], [#1813], [#1611], [#1822], [#1829] - Various bug fixes

Monitoring

  • 🔍 #1087 - Consistently assertion
  • 🔍 #1601 - NoFieldIsZero

Superseded by Our Implementation

  • ⛔ #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: April 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
[#1223]PRDisplay uint values in decimal instead of hex✅ Merged - Applied to diff output
[#1232]PRColorized output for expected/actual/errors✅ Adapted into enable/color module
#1356PRpanic(nil) handling for Go 1.21+✅ Merged - Updated panic assertions
[#1467]PRColorized output with terminal detection✅ Adapted into enable/color module (most mature implementation)
[#1480]PRColorized diffs via TESTIFY_COLORED_DIFF env var✅ Adapted with env var support in enable/color
[#1513]PRJSONEqBytes for byte slice JSON comparison✅ Merged - Added to JSON domain
[#1685]PRIterator 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
[#1803]PRKind/NotKind assertions✅ Merged - Added to Type domain
[#1805]IssueGeneric 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
[#1818]PRFix panic on invalid regex in Regexp/NotRegexp✅ Merged - Added graceful error handling
[#1822]IssueDeterministic map ordering in diffs✅ Fixed in internalized go-spew
[#1825]PRFix panic using EqualValues with uncomparable types✅ Merged - Enhanced type safety in EqualValues
#1826IssueType safety with spew (meta-issue)✅ Addressed through comprehensive fuzzing and fixes
[#1828]PRFixed panic with unexported fields in maps✅ Merged into internalized go-spew
[#1829]IssueFix time.Time rendering in diffs✅ Fixed in internalized go-spew
[#1611]IssueGoroutine leak in Eventually/Never✅ Fixed by using context.Context (consolidation into single pollCondition function)
[#1813]IssuePanic with unexported fields✅ Fixed via #1828 in internalized spew

Superseded by Our Implementation

ReferenceTypeSummaryWhy Superseded
#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
#1087PRConsistently assertion🔍 Monitoring - Evaluating usefulness
#1601IssueNoFieldIsZero assertion🔍 Monitoring - Considering implementation

Informational (Not Implemented)

ReferenceTypeSummaryOutcome
#1147IssueGeneral discussion about generics adoptionâ„šī¸ Marked “Not Planned” upstream - We implemented our own generics approach (38 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/Merged21
Superseded3
Monitoring2
Informational2
Total Processed28

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.