go-linq
go-linq copied to clipboard
Unit test ExampleOrderedQuery_ThenByDescending fails on golang-1.19.2
testing: github.com/ahmetb/go-linq
github.com/ahmetb/go-linq
--- FAIL: ExampleOrderedQuery_ThenByDescending (0.00s)
got:
apPLe
apple
apPLE
APple
orange
baNanA
ORANGE
BAnana
want:
apPLe
apPLE
apple
APple
orange
baNanA
ORANGE
BAnana
FAIL
exit status 1
FAIL github.com/ahmetb/go-linq 0.021s
Passes on golang-1.18
Interesting. If you wanna debug, I'm open to patches.
Probably related to the change in sorting algorithm to pattern-defeating quicksort in Go 1.19.
https://tip.golang.org/doc/go1.19#sort
I'm not a go programmer, but you'd think there would be a sort_unstable() to get the faster algorithm rather than breaking a bunch of things that depend on stability.
Since this package seems to be about linking to case insensitive libraries, the result might be actually valid. But the verbatim check is too strict for an unstable sort. How about running the output through an undependent stable sort (e.g. unix sort program with case insensitive option) and check that the result is unchanged? Would that be valid?
I'm not a go programmer, but you'd think there would be a sort_unstable() to get the faster algorithm rather than breaking a bunch of things that depend on stability.
There is probably already some difference between sort.Sort
and sort.Stable
.