Ring the bells that still can ring
Forget your perfect offering
There is a crack in everything
That’s how the light gets in.
Yesterday, I posted on a trivial little testing library I hacked together.
I’ve put the source online. Get the source through Rob’s git repository (see below).
In the meantime, I discovered a problem with the idea of intercepting comparison operators, the technique used by the
expect method. Ruby doesn’t really have
!~ methods. Instead, the parser maps
(a != b) into
!(a == b). This means that the ComparisonProxy cannot intercept calls to either of these. This is a problem because
expect(1) != 1
actually passes, because it becomes
!(expect(1) == 1), and the expect method is happy with that.
I’m betting there’s a way around this…
Update: 14:26 CDT.
- Rob Sanheim has set up a Git repository for the code. He says
I’ve put this up on github to watch what forks or releases develop around it.
git clone git://github.com/rsanheim/prag_dave_testing.git
Michael Neumann suggested a way around the negated == and =~ tests using source inspection:
# try to get the source code position of the call
# and see if it's a != or a ==