Simplify a bit more the test harness
[ganeti-local] / htest / test.hs
1 {-| Unittest runner for ganeti-htools.
2
3 -}
4
5 {-
6
7 Copyright (C) 2009, 2011, 2012 Google Inc.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 02110-1301, USA.
23
24 -}
25
26 module Main(main) where
27
28 import Data.Monoid (mappend)
29 import Test.Framework
30 import System.Environment (getArgs)
31
32 import Test.Ganeti.TestImports ()
33 import Test.Ganeti.BasicTypes
34 import Test.Ganeti.Confd.Utils
35 import Test.Ganeti.Common
36 import Test.Ganeti.Daemon
37 import Test.Ganeti.HTools.CLI
38 import Test.Ganeti.HTools.Cluster
39 import Test.Ganeti.HTools.Container
40 import Test.Ganeti.HTools.Loader
41 import Test.Ganeti.HTools.Instance
42 import Test.Ganeti.HTools.Node
43 import Test.Ganeti.HTools.PeerMap
44 import Test.Ganeti.HTools.Simu
45 import Test.Ganeti.HTools.Text
46 import Test.Ganeti.HTools.Types
47 import Test.Ganeti.HTools.Utils
48 import Test.Ganeti.Jobs
49 import Test.Ganeti.JSON
50 import Test.Ganeti.Luxi
51 import Test.Ganeti.Objects
52 import Test.Ganeti.OpCodes
53 import Test.Ganeti.Query.Filter
54 import Test.Ganeti.Query.Language
55 import Test.Ganeti.Query.Query
56 import Test.Ganeti.Rpc
57 import Test.Ganeti.Ssconf
58
59 -- | Our default test options, overring the built-in test-framework
60 -- ones (but not the supplied command line parameters).
61 defOpts :: TestOptions
62 defOpts = TestOptions
63        { topt_seed                               = Nothing
64        , topt_maximum_generated_tests            = Just 500
65        , topt_maximum_unsuitable_generated_tests = Just 5000
66        , topt_maximum_test_size                  = Nothing
67        , topt_maximum_test_depth                 = Nothing
68        , topt_timeout                            = Nothing
69        }
70
71 -- | All our defined tests.
72 allTests :: [Test]
73 allTests =
74   [ testBasicTypes
75   , testCommon
76   , testConfd_Utils
77   , testDaemon
78   , testHTools_CLI
79   , testHTools_Cluster
80   , testHTools_Container
81   , testHTools_Instance
82   , testHTools_Loader
83   , testHTools_Node
84   , testHTools_PeerMap
85   , testHTools_Simu
86   , testHTools_Text
87   , testHTools_Types
88   , testHTools_Utils
89   , testJSON
90   , testJobs
91   , testLuxi
92   , testObjects
93   , testOpCodes
94   , testQuery_Filter
95   , testQuery_Language
96   , testQuery_Query
97   , testRpc
98   , testSsconf
99   ]
100
101 -- | Main function. Note we don't use defaultMain since we want to
102 -- control explicitly our test sizes (and override the default).
103 main :: IO ()
104 main = do
105   ropts <- getArgs >>= interpretArgsOrExit
106   let opts = maybe defOpts (defOpts `mappend`) $ ropt_test_options ropts
107   defaultMainWithOpts allTests (ropts { ropt_test_options = Just opts })