debian 4.0.4 → 4.0.5
raw patch · 6 files changed
+67/−11 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Debian.Apt.Dependencies: gutsyPackages :: [Char]
+ Debian.Apt.Dependencies: gutsyPackages :: String
- Debian.Apt.Dependencies: sidPackages :: [Char]
+ Debian.Apt.Dependencies: sidPackages :: String
Files
- Test/Apt.hs +45/−0
- Test/Main.hs +5/−2
- debian.cabal +4/−3
- src/Debian/Apt/Index.hs +11/−6
- src/Debian/Apt/Methods.hs +1/−0
- src/Debian/Control/ByteString.hs +1/−0
+ Test/Apt.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE OverloadedStrings #-}++module Apt (aptTests) where++import Test.HUnit+import Control.Exception+import Data.Text (Text)+import Debian.Apt.Index+import Debian.Control++aptTests :: [Test]+aptTests = releaseIndexTests++releaseIndexTests :: [Test]+releaseIndexTests =+ [ testReleaseIndexes e ps i | (i, (e, ps)) <- zip [1..]+ [ ( Left "Invalid release file: "+ , [] )+ , ( Left "No indexes in release: No SHA256 Field, No SHA1 Field, No MD5Sum Field"+ , [Paragraph []] )+ , ( Left "No indexes in release: No SHA256 Field, No SHA1 Field, No MD5Sum Field"+ , [Paragraph [Field ("x", "foo")]] )+ , ( Left "No indexes in release: Invalid checksum line: \"abc\", Invalid checksum line: \"def\", Invalid checksum line: \"ghi\""+ , [Paragraph [Field ("SHA256", "abc"), Field ("SHA1", "def"), Field ("MD5Sum", "ghi")]] )+ , ( Left "No indexes in release: Invalid size field: \"123x\", No SHA1 Field, No MD5Sum Field"+ , [Paragraph [Field ("SHA256", "abcde 123x file")]] )+ , ( Right [(CheckSums {md5sum = Nothing, sha1 = Nothing, sha256 = Just "abcde"}, 123, "file")]+ , [Paragraph [Field ("SHA256", "abcde 123 file")]] )+ , ( Right [(CheckSums {md5sum = Just "abcde", sha1 = Nothing, sha256 = Nothing}, 123, "file")]+ , [Paragraph [Field ("md5sum", "abcde 123 file")]] )+ ]+ ]++testReleaseIndexes :: Either String [(CheckSums, Integer, FilePath)] -> [Paragraph' Text] -> Int -> Test+testReleaseIndexes expected ps i = TestCase $+ either (assertError pfx) (assertEqual pfx) expected+ $ indexesInRelease (const True) (Control ps)+ where pfx = "indexesInRelease" <> show i++assertError :: (Eq a, Show a) => String -> String -> a -> Assertion+assertError preface errExpected action = do+ r <- try $ evaluate action+ case r of+ Left (ErrorCall err) -> assertEqual preface errExpected err+ Right _ -> assertFailure $ preface <> " did not call error"
Test/Main.hs view
@@ -2,15 +2,17 @@ import Test.HUnit import System.Exit+import Apt import Changes import Control+import Dependencies import Versions import Debian.Sources-import Dependencies import Text.PrettyPrint +main :: IO () main =- do (c,st) <- runTestText putTextToShowS (TestList (versionTests ++ [sourcesListTests] ++ dependencyTests ++ changesTests ++ controlTests ++ prettyTests))+ do (c,st) <- runTestText putTextToShowS (TestList (versionTests ++ [sourcesListTests] ++ dependencyTests ++ changesTests ++ controlTests ++ prettyTests ++ aptTests)) putStrLn (st "") case (failures c) + (errors c) of 0 -> return ()@@ -18,6 +20,7 @@ -- | I was converting from one pretty printing package to another and -- was unclear how this should work.+prettyTests :: [Test] prettyTests = [ TestCase (assertEqual "pretty0"
debian.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 Name: debian-Version: 4.0.4+Version: 4.0.5 License: BSD-3-Clause License-File: debian/copyright Author: David Fox <dsf@seereason.com>, Jeremy Shaw <jeremy@seereason.com>, Clifford Beshers <beshers@seereason.com>@@ -9,7 +9,7 @@ Homepage: https://github.com/clinty/debian-haskell Build-Type: Simple Synopsis: Modules for working with the Debian package system-Tested-With: GHC ==9.2.3 || ==9.0.2 || ==8.10.7 || ==8.8.4 || ==8.6.5 || ==8.4.4+Tested-With: GHC ==9.6.2 || ==9.4.7 || ==9.2.8 || ==9.0.2 || ==8.10.7 Description: This library includes modules covering some basic data types defined by the Debian policy manual - version numbers, control file syntax, etc.@@ -127,7 +127,8 @@ Hs-Source-Dirs: Test Main-Is: Main.hs Build-Depends: base, Cabal, debian, HUnit, parsec, pretty >= 1.1.2, regex-tdfa, text- other-modules: Changes+ other-modules: Apt+ , Changes , Control , Dependencies , Paths_debian
src/Debian/Apt/Index.hs view
@@ -283,13 +283,18 @@ indexesInRelease filterp (Control [p]) = -- In a release file we should find one or more of the fields -- "SHA256", "SHA1", or "MD5Sum", each containing a list of triples- either error (filter (\(_,_,fp) -> filterp fp)) $- msum [either Left (makeTuples makeSHA256) (maybe (Left "No SHA256 Field") makeTriples $ fieldValue "SHA256" p),- either Left (makeTuples makeSHA1) (maybe (Left "No SHA1 Field") makeTriples $ fieldValue "SHA1" p),- either Left (makeTuples makeMD5) (maybe (Left "No MD5Sum Field") makeTriples $ msum [fieldValue "MD5Sum" p,- fieldValue "Md5Sum" p,- fieldValue "MD5sum" p])]+ case attempts of+ (_, fps:_) -> filter (\(_,_,fp) -> filterp fp) fps+ (errs, _) -> error $ "No indexes in release: " <> intercalate ", " errs where+ attempts = partitionEithers+ [ attempt makeSHA256 "SHA256"+ , attempt makeSHA1 "SHA1"+ , attempt makeMD5 "MD5Sum" ]++ attempt mksum fn = makeTuples mksum =<< makeTriples =<<+ maybe (Left $ "No " <> fn <> " Field") Right (fieldValue fn p)+ makeSHA256 s = CheckSums {md5sum = Nothing, sha1 = Nothing, sha256 = Just s} makeSHA1 s = CheckSums {md5sum = Nothing, sha1 = Just s, sha256 = Nothing} makeMD5 s = CheckSums {md5sum = Just s, sha1 = Nothing, sha256 = Nothing}
src/Debian/Apt/Methods.hs view
@@ -25,6 +25,7 @@ import Debian.URI (URI(..), parseURI, uriToString') import Control.Exception+import Control.Monad (liftM, unless) import Control.Monad.Except import Data.Maybe import Data.Time
src/Debian/Control/ByteString.hs view
@@ -30,6 +30,7 @@ import Data.Char(toLower, isSpace) import Data.List+import Control.Monad (MonadPlus(..), ap, liftM, unless) import Text.ParserCombinators.Parsec.Error import Text.ParserCombinators.Parsec.Pos