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
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)
| Reference | Type | Summary | Outcome in Fork |
|---|---|---|---|
| #994 | PR | Colorize expected vs actual values | â
Adapted into enable/color module with themes and configuration |
| [#1223] | PR | Display uint values in decimal instead of hex | â Merged - Applied to diff output |
| [#1232] | PR | Colorized output for expected/actual/errors | â
Adapted into enable/color module |
| #1356 | PR | panic(nil) handling for Go 1.21+ | â Merged - Updated panic assertions |
| [#1467] | PR | Colorized output with terminal detection | â
Adapted into enable/color module (most mature implementation) |
| [#1480] | PR | Colorized diffs via TESTIFY_COLORED_DIFF env var | â
Adapted with env var support in enable/color |
| [#1513] | PR | JSONEqBytes for byte slice JSON comparison | â Merged - Added to JSON domain |
| [#1685] | PR | Iterator support (iter.Seq) for Contains/ElementsMatch | â Partial - Implemented SeqContainsT and SeqNotContainsT only |
| #1772 | PR | YAML library migration to maintained fork | â
Adapted - Used gopkg.in/yaml.v3 in optional enable/yaml module |
| #1797 | PR | Codegen package consolidation and licensing | â Adapted - Complete rewrite of code generation system |
| [#1803] | PR | Kind/NotKind assertions | â Merged - Added to Type domain |
| [#1805] | Issue | Generic IsOfType[T]() without dummy value | â Implemented - IsOfTypeT and IsNotOfTypeT in Type domain |
| #1816 | Issue | Fix panic on unexported struct key in map | â Fixed in internalized go-spew |
| [#1818] | PR | Fix panic on invalid regex in Regexp/NotRegexp | â Merged - Added graceful error handling |
| [#1822] | Issue | Deterministic map ordering in diffs | â Fixed in internalized go-spew |
| [#1825] | PR | Fix panic using EqualValues with uncomparable types | â Merged - Enhanced type safety in EqualValues |
| #1826 | Issue | Type safety with spew (meta-issue) | â Addressed through comprehensive fuzzing and fixes |
| [#1828] | PR | Fixed panic with unexported fields in maps | â Merged into internalized go-spew |
| [#1829] | Issue | Fix time.Time rendering in diffs | â Fixed in internalized go-spew |
| [#1611] | Issue | Goroutine leak in Eventually/Never | â Fixed by using context.Context (consolidation into single pollCondition function) |
| [#1813] | Issue | Panic with unexported fields | â Fixed via #1828 in internalized spew |
Superseded by Our Implementation
| Reference | Type | Summary | Why Superseded |
|---|---|---|---|
| #1819 | PR | Handle unexpected exits in Eventually | Superseded by context-based pollCondition implementation |
| #1824 | PR | Spew testing improvements | Superseded by property-based fuzzing with random type generator |
| #1830 | PR | CollectT.Halt() for stopping tests | Superseded by context-based pollCondition implementation |
Under Consideration (Monitoring)
| Reference | Type | Summary | Status |
|---|---|---|---|
| #1087 | PR | Consistently assertion | đ Monitoring - Evaluating usefulness |
| #1601 | Issue | NoFieldIsZero assertion | đ Monitoring - Considering implementation |
Informational (Not Implemented)
| Reference | Type | Summary | Outcome |
|---|---|---|---|
| #1147 | Issue | General discussion about generics adoption | âšī¸ Marked “Not Planned” upstream - We implemented our own generics approach (38 functions) |
| #1308 | PR | Comprehensive refactor with generic type parameters | âšī¸ Draft for v2.0.0 upstream - We took a different approach with the same objective |
Summary Statistics
| Category | Count |
|---|---|
| Implemented/Merged | 21 |
| Superseded | 3 |
| Monitoring | 2 |
| Informational | 2 |
| Total Processed | 28 |
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.