Well, I’m sorry. The whole Piston package was broken for the last two weeks. In fact, it was a problem with internal reorganizations and broken requires.

This also illustrated the fact that I needed some kind of automated testing… Which I advocate, but didn’t do anything about until now for Piston. Well, no more ! Piston now has a suite of specifications, coded using RSpec.

I briefly touched on this issue a week ago in Piston import bugs and behavioural specifications. Back then, I had three specifications. I now have twenty:

 1 $ spec --format specdoc specs
 3 update when no local changes
 4 - retrieves the latest fulltext from the remote repository
 5 - records remote revision that was merged
 7 update when a local change
 8 - should merge local changes with remote ones
10 convert with no svn:externals
11 - does not touch the working copy
13 convert with one svn:externals
14 - removes existing folder to replace with piston export
15 - remembers the revision we converted from
17 convert with hard-coded revision in svn:externals
18 - retrieves the specified revision text
19 - locks the pistoned directory to that revision
21 convert with non HEAD externals
22 - retrieves the same revision we had in our WC
23 - remembers the revision that was present, not HEAD
24 - does not lock the pistoned directory
26 import with a valid repository URL
27 - gets the fulltext of all files
28 - remembers the root of the import
29 - remembers the upstream repository's UUID
30 - remembers the revision we imported from
31 - remembers the revision this WC was at when we imported
33 switching to a branch in the same repository (without local mods)
34 - gets the fulltext of the branch
35 - changes the root of the pistoned dir to the new import location
36 - keeps the upstream repository's UUID unchanged
37 - remembers the upstream revision we pistoned from
39 Finished in 103.968133 seconds
41 20 specifications, 0 failures

At the moment, the four most important commands are specified: convert, import, update and switch. And even then, only the golden path. Which means I am missing tons of specifications. But at least, I can now guarantee that Piston works, which is a huge step forward from the 1.3.2 relelase.

As I continue to further specify Piston, things can only get better.

Also, a very big thank you to all the people who told me they had problems with Piston. Bug reports, although never enjoyable, are an absolute necessity.


Your Host

A picture of me

I am François Beausoleil, a Ruby on Rails and Scala developer. During the day, I work on Seevibes, a platform to measure social interactions related to TV shows. At night, I am interested many things. Read my biography.

Top Tags

Books I read and recommend


Projects I work on

Projects I worked on