Upstream Tracking
Upstream Tracking
We continue to monitor and selectively adopt changes from the upstream repository.
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
- â #1606, #1087 - Consistently assertion
Monitoring
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)
| 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 incomparable 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 |
| #1087 | Issue | Consistently assertion | â Adapted |
| #1606 | PR | Consistently assertion | â Adapted |
Superseded by Our Implementation
| Reference | Type | Summary | Why Superseded |
|---|---|---|---|
| #1845 | PR | Fix Eventually/Never regression | Superseded by context-based pollCondition implementation (we don’t have this bug) |
| #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 |
|---|---|---|---|
| #1601 | Issue | NoFieldIsZero assertion | đ Monitoring - Considering implementation |
| #1840 | Issue | JSON presence check without exact values | đ Monitoring - Interesting for testing APIs with generated IDs |
Informational (Not Implemented)
| Reference | Type | Summary | Outcome |
|---|---|---|---|
| #1147 | Issue | General discussion about generics adoption | âšī¸ Marked “Not Planned” upstream - We implemented our own generics approach (42 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 | 23 |
| Superseded | 4 |
| Monitoring | 2 |
| Informational | 2 |
| Total Processed | 31 |
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
- Changes from v1 - Complete list of all implemented changes and new features
- Roadmap - Future plans and development priorities
- Architecture - Technical architecture and design decisions
- Original Project - History and acknowledgments