Revision 105266b2

b/test/hs/Test/Ganeti/Block/Drbd/Parser.hs
40 40

  
41 41
{-# ANN module "HLint: ignore Use camelCase" #-}
42 42

  
43
-- | Function for testing whether a file is parsed correctly.
44
testFile :: String -> DRBDStatus -> Assertion
45
testFile fileName expectedContent = do
46
    fileContent <- readTestData fileName
47
    case A.parseOnly (drbdStatusParser []) $ pack fileContent of
48
        Left msg -> assertFailure $ "Parsing failed: " ++ msg
49
        Right obtained -> assertEqual fileName expectedContent obtained
50

  
51 43
-- | Test a DRBD 8.0 file with an empty line inside.
52 44
case_drbd80_emptyline :: Assertion
53
case_drbd80_emptyline = testFile "proc_drbd80-emptyline.txt" $
54
  DRBDStatus
45
case_drbd80_emptyline = testParser (drbdStatusParser [])
46
  "proc_drbd80-emptyline.txt" $ DRBDStatus
55 47
    ( VersionInfo (Just "8.0.12") (Just "86") (Just "86") Nothing
56 48
        (Just "5c9f89594553e32adb87d9638dce591782f947e3")
57 49
        (Just "root@node1.example.com, 2009-05-22 12:47:52")
......
72 64

  
73 65
-- | Test a DRBD 8.0 file with an empty version.
74 66
case_drbd80_emptyversion :: Assertion
75
case_drbd80_emptyversion = testFile "proc_drbd80-emptyversion.txt" $
76
  DRBDStatus
67
case_drbd80_emptyversion = testParser (drbdStatusParser [])
68
  "proc_drbd80-emptyversion.txt" $ DRBDStatus
77 69
    ( VersionInfo Nothing Nothing Nothing Nothing
78 70
        (Just "5c9f89594553e32adb87d9638dce591782f947e3")
79 71
        (Just "root@node1.example.com, 2009-05-22 12:47:52")
......
94 86

  
95 87
-- | Test a DRBD 8.4 file with an ongoing synchronization.
96 88
case_drbd84_sync :: Assertion
97
case_drbd84_sync = testFile "proc_drbd84_sync.txt" $
89
case_drbd84_sync = testParser (drbdStatusParser []) "proc_drbd84_sync.txt" $
98 90
  DRBDStatus
99 91
    ( VersionInfo (Just "8.4.2") (Just "1") (Just "86-101") Nothing
100 92
        (Just "7ad5f850d711223713d6dcadc3dd48860321070c")
......
122 114

  
123 115
-- | Test a DRBD 8.4 file.
124 116
case_drbd84 :: Assertion
125
case_drbd84 = testFile "proc_drbd84.txt" $
117
case_drbd84 = testParser (drbdStatusParser []) "proc_drbd84.txt" $
126 118
  DRBDStatus
127 119
    ( VersionInfo (Just "8.4.2") (Just "1") (Just "86-101") Nothing
128 120
      (Just "7ad5f850d711223713d6dcadc3dd48860321070c")
......
173 165

  
174 166
-- | Test a DRBD 8.3 file with a NULL caracter inside.
175 167
case_drbd83_sync_krnl2_6_39 :: Assertion
176
case_drbd83_sync_krnl2_6_39 = testFile "proc_drbd83_sync_krnl2.6.39.txt" $
177
  DRBDStatus
168
case_drbd83_sync_krnl2_6_39 = testParser (drbdStatusParser [])
169
  "proc_drbd83_sync_krnl2.6.39.txt" $ DRBDStatus
178 170
    ( VersionInfo (Just "8.3.1") (Just "88") (Just "86-89") Nothing
179 171
        (Just "fd40f4a8f9104941537d1afc8521e584a6d3003c")
180 172
        (Just "phil@fat-tyre, 2009-03-27 12:19:49")
......
217 209

  
218 210
-- | Test a DRBD 8.3 file with an ongoing synchronization.
219 211
case_drbd83_sync :: Assertion
220
case_drbd83_sync = testFile "proc_drbd83_sync.txt" $
212
case_drbd83_sync = testParser (drbdStatusParser []) "proc_drbd83_sync.txt" $
221 213
  DRBDStatus
222 214
    ( VersionInfo (Just "8.3.1") (Just "88") (Just "86-89") Nothing
223 215
        (Just "fd40f4a8f9104941537d1afc8521e584a6d3003c")
......
262 254
-- | Test a DRBD 8.3 file not from git sources, with an ongoing synchronization
263 255
-- and the "want" field
264 256
case_drbd83_sync_want :: Assertion
265
case_drbd83_sync_want = testFile "proc_drbd83_sync_want.txt" $
266
  DRBDStatus
257
case_drbd83_sync_want = testParser (drbdStatusParser [])
258
  "proc_drbd83_sync_want.txt" $ DRBDStatus
267 259
    ( VersionInfo (Just "8.3.11") (Just "88") (Just "86-96")
268 260
        (Just "2D876214BAAD53B31ADC1D6")
269 261
        Nothing Nothing
......
284 276

  
285 277
-- | Test a DRBD 8.3 file.
286 278
case_drbd83 :: Assertion
287
case_drbd83 = testFile "proc_drbd83.txt" $
279
case_drbd83 = testParser (drbdStatusParser []) "proc_drbd83.txt" $
288 280
  DRBDStatus
289 281
    ( VersionInfo (Just "8.3.1") (Just "88") (Just "86-89")
290 282
      Nothing
......
352 344

  
353 345
-- | Test a DRBD 8.0 file with a missing device.
354 346
case_drbd8 :: Assertion
355
case_drbd8 = testFile "proc_drbd8.txt" $
347
case_drbd8 = testParser (drbdStatusParser []) "proc_drbd8.txt" $
356 348
  DRBDStatus
357 349
    ( VersionInfo (Just "8.0.12") (Just "86") (Just "86") Nothing
358 350
        (Just "5c9f89594553e32adb87d9638dce591782f947e3")
b/test/hs/Test/Ganeti/TestCommon.hs
59 59
  , resultProp
60 60
  , readTestData
61 61
  , genSample
62
  , testParser
62 63
  ) where
63 64

  
64 65
import Control.Applicative
65 66
import Control.Exception (catchJust)
66 67
import Control.Monad
68
import Data.Attoparsec.Text (Parser, parseOnly)
67 69
import Data.List
70
import Data.Text (pack)
68 71
import Data.Word
69 72
import qualified Data.Set as Set
70 73
import System.Environment (getEnv)
......
340 343
  case values of
341 344
    [] -> error "sample' returned an empty list of values??"
342 345
    x:_ -> return x
346

  
347
-- | Function for testing whether a file is parsed correctly.
348
testParser :: (Show a, Eq a) => Parser a -> String -> a -> HUnit.Assertion
349
testParser parser fileName expectedContent = do
350
  fileContent <- readTestData fileName
351
  case parseOnly parser $ pack fileContent of
352
    Left msg -> HUnit.assertFailure $ "Parsing failed: " ++ msg
353
    Right obtained -> HUnit.assertEqual fileName expectedContent obtained

Also available in: Unified diff