Aha!
I think I know why this happens.
The latest versions of ansi-terminal and hspec do not work together. Cabal picks the latest ansi-terminal (0.6) first, then the latest hspec that doesn't conflict with this choice is 0.3.0.
I can confirm this by the following:
$ cabal install hspec ansi-terminal --dry-run -v
Reading available packages...
Choosing modular solver.
Resolving dependencies...
In order, the following would be installed:
HUnit-1.2.5.1 (new package)
ansi-terminal-0.5.5.1 (new package)
hspec-expectations-0.3.0.3 (new package)
random-1.0.1.1 (new package)
QuickCheck-2.5.1.1 (new package)
setenv-0.1.0 (new package)
silently-1.2.4.1 (new package)
transformers-0.3.0.0 (new package)
hspec-1.4.3 (new package)
When hspec comes before ansi-terminal, the latest version for hspec is selected and an older version of ansi-terminal is used.
Maybe cabal-install should backtrack more and pick a more optimal set of latest versions, I don't know. If this is desired, a proximity of the selected versions to the latest available versions might be a good measure.
Best,
Ozgur