Meta process note: it'd be great if the Hudson configs could be modified
to email a notification of failed builds to the respective project
leads. I'd have been on this before now, and the transient matrix
failure would have stayed on my radar. I see the option for it in the
'Configure' screen, but I know Stuart rebuilds those configurations from
scratch via some automated process, so I presume changing anything there
will be reverted eventually.
Anyway: the test was a bit sloppy. The only guarantee is that
middlewares without explicit dependencies will land at the end of the
linearization. At some point, it'd be nice if their provided order was
maintained, but that's wasn't something I wanted to bother offering when
the linearization was implemented.
Colin is right about what fundamentally caused the change (set-member
sorting), and that there are some dodgy bits in the implementation;
c'est la vie. The sort-by/reverse thing prior to the conj-sorted
reduction is particularly pointless, but I'm disinclined to touch
anything in there unless I'm going to set down for a time and do it
properly, etc.
I've pushed a clarification of the test to more properly check the
invariant that is actually guaranteed; the nREPL hudson build is now green.
(P.S. The one failure in the matrix build I saw this morning was this:
http://build.clojure.org/job/tools.nrepl-test-matrix/CLOJURE_VERSION=1.2.0,jdk=IBM%20JDK%201.6/129/consoleFull
I've never seen that before.)
- Chas