1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
module Test.SourcesList where
import Test.HUnit
import Debian.Sources
--import Data.Maybe
-- * Unit Tests
-- TODO: add test cases that test for unterminated double-quote or bracket
testQuoteWords :: Test
testQuoteWords =
test [ assertEqual "Space seperate words, no quoting" ["hello", "world","!"] (quoteWords " hello world ! ")
, assertEqual "Space seperate words, double quotes" ["hello world","!"] (quoteWords " hel\"lo world\" ! ")
, assertEqual "Space seperate words, square brackets" ["hel[lo worl]d","!"] (quoteWords " hel[lo worl]d ! ")
, assertEqual "Space seperate words, square-bracket at end" ["hel[lo world]"] (quoteWords " hel[lo world]")
, assertEqual "Space seperate words, double quote at end" ["hello world"] (quoteWords " hel\"lo world\"")
, assertEqual "Space seperate words, square-bracket at beginning" ["[hello wo]rld","!"] (quoteWords "[hello wo]rld !")
, assertEqual "Space seperate words, double quote at beginning" ["hello world","!"] (quoteWords "\"hello wor\"ld !")
]
testSourcesList :: Test
testSourcesList =
test [ assertEqual "valid sources.list" validSourcesListExpected (unlines . map show . parseSourcesList $ validSourcesListStr) ]
where
validSourcesListStr =
unlines $ [ " # A comment only line "
, " deb ftp://ftp.debian.org/debian unstable main contrib non-free # typical deb line"
, " deb-src ftp://ftp.debian.org/debian unstable main contrib non-free # typical deb-src line"
, ""
, "# comment line"
, "deb http://pkg-kde.alioth.debian.org/kde-3.5.0/ ./ # exact path"
, "deb http://ftp.debian.org/whee \"space dist\" main"
, "deb http://ftp.debian.org/whee dist space%20section"
]
validSourcesListExpected =
unlines $ [ "deb ftp://ftp.debian.org/debian unstable main contrib non-free"
, "deb-src ftp://ftp.debian.org/debian unstable main contrib non-free"
, "deb http://pkg-kde.alioth.debian.org/kde-3.5.0/ ./"
, "deb http://ftp.debian.org/whee space%20dist main"
, "deb http://ftp.debian.org/whee dist space%20section"
]
_invalidSourcesListStr1 = "deb http://pkg-kde.alioth.debian.org/kde-3.5.0/ ./ main contrib non-free # exact path with sections"
testSourcesListParse :: Test
testSourcesListParse =
test [ assertEqual "" text (concat . map (++ "\n") . map show . parseSourcesList $ text) ]
where
text = (concat ["deb http://us.archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse\n",
"deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse\n",
"deb http://us.archive.ubuntu.com/ubuntu/ gutsy-updates main restricted universe multiverse\n",
"deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-updates main restricted universe multiverse\n",
"deb http://us.archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse\n",
"deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse\n",
"deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted universe multiverse\n",
"deb-src http://security.ubuntu.com/ubuntu/ gutsy-security main restricted universe multiverse\n"])
sourcesListTests :: [Test]
sourcesListTests =
[ testQuoteWords, testSourcesList, testSourcesListParse ]
|