git @ Cat's Eye Technologies Falderal / bd2721b
Move reporting functionality to its own module. --HG-- rename : Test/Falderal/Driver.hs => Test/Falderal/Reporter/Standard.hs catseye 10 years ago
3 changed file(s) with 81 addition(s) and 35 deletion(s). Raw diff Collapse all Expand all
3131 -- POSSIBILITY OF SUCH DAMAGE.
3232 --
3333
34 import System
35
3634 import Test.Falderal.Common
3735 import Test.Falderal.Loader
3836 import Test.Falderal.Runner
3937 import Test.Falderal.Formatter
38 import Test.Falderal.Reporter.Standard
39
40 --
41 -- This module contains entry points to Falderal functionality intended
42 -- for use by users.
43 --
4044
4145 --
4246 -- Entry point for test runner.
4347 -- XXX This is still in flux.
4448 --
4549
46 test testTuples = let
47 numTests = length (filter (isTest) testTuples)
48 in do
50 test testTuples = do
4951 failures <- runTests testTuples
50 putStrLn "--------------------------------"
51 putStrLn ("Total tests: " ++ (show numTests) ++ ", failures: " ++ (show (length failures)))
52 putStrLn "--------------------------------\n"
53 reportEachTest failures
54
55 reportEachTest [] = do
56 return ()
57 reportEachTest ((Failure literalText testText expected actual):rest) = do
58 reportText 8 "FAILED" (stripLeading '\n' (stripTrailing '\n' literalText))
59 putStrLn ""
60 reportText 8 "Input" testText
61 reportText 8 "Expected" (show expected)
62 reportText 8 "Actual" (show actual)
63 putStrLn ""
64 reportEachTest rest
65
66 reportText width fieldName text =
67 if
68 contains text '\n'
69 then do
70 putStrLn (fieldName ++ ":")
71 putStrLn text
72 else do
73 putStrLn ((pad fieldName width) ++ ": " ++ text)
74
75 isTest (_, (Test _ _ _)) = True
76 isTest _ = False
52 report testTuples failures
7753
7854 --
7955 -- Entry point for formatter.
6767 "module GeneratedFalderalTests where\n\
6868 \\n\
6969 \import Test.Falderal.Common\n\
70 \import Test.Falderal.Driver\n" ++ (gatherImports blocks) ++ "\
70 \import Test.Falderal.Runner\n\
71 \import Test.Falderal.Reporter.Standard\n" ++ (gatherImports blocks) ++ "\
7172 \\n\
72 \testModule = test [\n"
73 \tests = [\n"
7374
7475 postlude =
7576 " (id, (Section \"DONE\"))\n\
76 \ ]\n"
77 \ ]\n\
78 \testModule = do\n\
79 \ failures <- runTests tests\n\
80 \ report tests failures\n"
0 module Test.Falderal.Reporter.Standard (report) where
1
2 --
3 -- Test.Falderal.Reporter.Standard -- Std. report for Falderal test results
4 -- Copyright (c)2011 Cat's Eye Technologies. All rights reserved.
5 --
6 -- Redistribution and use in source and binary forms, with or without
7 -- modification, are permitted provided that the following conditions
8 -- are met:
9 --
10 -- 1. Redistributions of source code must retain the above copyright
11 -- notices, this list of conditions and the following disclaimer.
12 -- 2. Redistributions in binary form must reproduce the above copyright
13 -- notices, this list of conditions, and the following disclaimer in
14 -- the documentation and/or other materials provided with the
15 -- distribution.
16 -- 3. Neither the names of the copyright holders nor the names of their
17 -- contributors may be used to endorse or promote products derived
18 -- from this software without specific prior written permission.
19 --
20 -- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 -- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 -- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23 -- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24 -- COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25 -- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26 -- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27 -- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28 -- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 -- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 -- POSSIBILITY OF SUCH DAMAGE.
32 --
33
34 import Test.Falderal.Common
35
36 report testTuples failures = let
37 numTests = length (filter (isTest) testTuples)
38 in do
39 putStrLn "--------------------------------"
40 putStrLn ("Total tests: " ++ (show numTests) ++ ", failures: " ++ (show (length failures)))
41 putStrLn "--------------------------------\n"
42 reportEachTest failures
43
44 reportEachTest [] = do
45 return ()
46 reportEachTest ((Failure literalText testText expected actual):rest) = do
47 reportText 8 "FAILED" (stripLeading '\n' (stripTrailing '\n' literalText))
48 putStrLn ""
49 reportText 8 "Input" testText
50 reportText 8 "Expected" (show expected)
51 reportText 8 "Actual" (show actual)
52 putStrLn ""
53 reportEachTest rest
54
55 reportText width fieldName text =
56 if
57 contains text '\n'
58 then do
59 putStrLn (fieldName ++ ":")
60 putStrLn text
61 else do
62 putStrLn ((pad fieldName width) ++ ": " ++ text)
63
64 isTest (_, (Test _ _ _)) = True
65 isTest _ = False