Journal 2019.10 - clj on windows, stable tests


As Windows users are painfully aware, we don’t have an official version of clj for this platform right now. It’s hard for me to believe, but it was a year ago that Konrad Mrożek put together an initial port to Powershell in TDEPS-67. I did some work off and on bringing those scripts up to parity and trying to cover more of the installation pieces. And then I got busy with lots of other things getting 1.10 out the door.

I asked a few weeks ago for help from the community in pulling this thing over the line, as I just do not have the time or environment to make the best decisions about it. Since then, several people (like Tim Gilbert and Sean Corfield) have stepped forward with some testing and Andrew Oberstar has done a bunch of work pushing it forward. This morning I merged that in and did a build which you can try out now:

There are some known issues and questions about how we should provide this. If you are a possible user, would love to see your feedback on Sean’s question on twitter or go to the #clj-on-windows room in Clojurians Slack.

Making stable tests

Some tests I wrote were posted on Reddit this week, which was unexpected. The one thing in there that I think is worth thinking about is how to write tests that validate returns while also being open to accretion.

In this case, the tests are checking (among other things) the data maps returned by spec explain-data. But I might not care to validate every attribute and importantly I don’t want these tests to fail when we enhance problem reporting by adding additional attributes, which is a non-breaking change. Having tests break due to non-breaking code changes is a drag on progress (and it drives Rich bonkers). In these tests, I use a custom function called submap? that verifies that the values I’m looking for are a subset of what I get (in a set of nested maps and collections), rather than checking for equality. This kind of thing might be something we add something for in future Clojure (to mirror the changes we’re making in spec to be agnostic to return data enhancement).

Other stuff

  • Continued work on spec 2 select, just working on the nitty-gritty of gen. This is really interim work and will probably not be too satisfying for use in its first rev as it is embedding the keyset rather than getting it from a reusable spec (like a keys or schema spec).
  • Tracked down a (false) report report of a security issue with the data.zip contrib library from the OWASP dependency checker. Reported to them.
  • Build box maintenance, doing the update dance
  • Fixed the busted Clojure contributor agreement due to a CORS issue from a url change (thanks for nothing Adobe!)
  • Merged and added some Clojure events for 2019 - https://clojure.org/community/events - conspicuously absent there is Clojure/conj which will almost certainly be in November, working on finalizing contracts for that.
  • Bunch of other clojur-site updates

Shout out to Elana Hashman and the rest of the Debian Clojure team who have been working hard to upgrade all the Clojure stuff lately! We appreciate your (probably not too fun) efforts…

Other stuff I enjoyed this week…

I’ve posted some Vulfpeck on here before. Many of the guys in Vulf also play in other bands. I want to highlight this perfect little gem from Theo Katzmann: My Heart is Dead. And an alternate live take that’s great in its own way: My Heart is Dead (in the Attic).