2009-06-25 9 views
39

Ich habe ein Haskell-Projekt und Cabal Paket-Beschreibung, die ich mein Paket mitWie kann ich einen einfachen Test mit Cabal einrichten?

$ cabal configure 
$ cabal build 
$ cabal install

Aber was cabal test erstellen kann und installieren? Cabals Hilfe sagt, eine Test-Suite mit UserHooks zu konfigurieren, aber wie kann ich das machen?

Antwort

27

Als Duncan in Gregs Antwort erwähnt, hat Cabal-1.10 Unterstützung für Testsuiten aus dem Kasten heraus.

Die manual scheint die besten Informationen zu haben, die ich in Bezug darauf gefunden habe, wie man davon Gebrauch macht.

Hier ist ein Ausschnitt aus dem Handbuch, das zeigt, wie der exitcode-stdio Testtyp verwenden:

foo.cabal

Name:   foo 
Version:  1.0 
License:  BSD3 
Cabal-Version: >= 1.9.2 
Build-Type:  Simple 

Test-Suite test-foo 
    type:  exitcode-stdio-1.0 
    main-is: test-foo.hs 
    build-depends: base 

Test-foo.hs:

module Main where 

import System.Exit (exitFailure) 

main = do 
    putStrLn "This test always fails!" 
    exitFailure 
+0

Hmm, sieht aus wie ein Tippfehler im Handbuch. Sollte das nicht "Cabal-Version:> = 1.10" heißen? Oder werden frühere Kabalen es harmlos ignorieren? –

+0

Err, vergiss es, es steht dort im Handbuch: "Verwenden von Testsuite Sektionen erfordert mindestens Cabal Version 1.9.2" –

+3

Beachten Sie, dass, um die Abhängigkeiten der Testsuite * zu installieren *, Sie führen müssen machbare Tests. Dann können Sie 'cabal test' ausführen, um Ihre Tests durchzuführen. –

10

Für einen Ansatz siehe Setting up a simple test with Cabal.

Dieser Ansatz hat Nachteile, und es gibt einen open Cabal ticket, der vorschlägt, Tests direkter spezifizieren zu können, z. B. .,

test 
    test-is: Test 
    build-depends: QuickCheck 
    hs-source-dirs: tests src 
+7

Diese Funktion wird in Cabal-1.10 sein –

+0

@Duncan Gute Nachrichten und gut, dass Sie con sind Tribut hier! –