blob: e883e3967e3955d0176d9ac6f6f66761512f8002 [file] [log] [blame]
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-| Unittests for ganeti-htools.
-}
{-
Copyright (C) 2009, 2010, 2011, 2012 Google Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
-}
module Test.Ganeti.Daemon (testDaemon) where
import Test.QuickCheck hiding (Result)
import Test.HUnit
import Test.Ganeti.TestHelper
import Test.Ganeti.TestCommon
import Test.Ganeti.Common
import Ganeti.Common
import Ganeti.Daemon as Daemon
{-# ANN module "HLint: ignore Use camelCase" #-}
-- | Test a few string arguments.
prop_string_arg :: String -> Property
prop_string_arg argument =
let args = [ (argument, oBindAddress, optBindAddress)
]
in conjoin $
map (checkOpt Just defaultOptions failTest (const (==?)) Just) args
-- | Test a few integer arguments (only one for now).
prop_numeric_arg :: Int -> Property
prop_numeric_arg argument =
checkOpt (Just . show) defaultOptions
failTest (const (==?)) (Just . fromIntegral)
(argument, oPort 0, optPort)
-- | Test a few boolean arguments.
case_bool_arg :: Assertion
case_bool_arg =
mapM_ (checkOpt (const Nothing) defaultOptions assertFailure
assertEqual id)
[ (False, oNoDaemonize, optDaemonize)
, (True, oDebug, optDebug)
, (True, oNoUserChecks, optNoUserChecks)
]
-- | Tests a few invalid arguments.
case_wrong_arg :: Assertion
case_wrong_arg =
mapM_ (passFailOpt defaultOptions assertFailure (return ()))
[ (oSyslogUsage, "foo", "yes")
, (oPort 0, "x", "10")
]
-- | Test that the option list supports some common options.
case_stdopts :: Assertion
case_stdopts =
checkEarlyExit defaultOptions "prog" [oShowHelp, oShowVer] []
testSuite "Daemon"
[ 'prop_string_arg
, 'prop_numeric_arg
, 'case_bool_arg
, 'case_wrong_arg
, 'case_stdopts
]