import Test.Hspec
--import Distribution.RPM.Build.Graph
import Distribution.RPM.Build.Order
main :: IO ()
main = hspec spec
pkg :: FilePath -> FilePath
pkg = ("test/pkgs/" ++)
spec :: Spec
spec = do
describe "sorting" $ do
it "sort A B" $
dependencySort [pkg "A", pkg "B"] >>=
(`shouldBe` [pkg "B", pkg "A"])
it "sort A/ B/" $
dependencySort [pkg "A/", pkg "B/"] >>=
(`shouldBe` [pkg "B/", pkg "A/"])
it "sort A.spec B.spec" $
dependencySort [pkg "A/A.spec", pkg "B/B.spec"] >>=
(`shouldBe` [pkg "B/B.spec", pkg "A/A.spec"])
it "sort A/ B.spec" $
dependencySort [pkg "A/", pkg "B/B.spec"] >>=
(`shouldBe` [pkg "B/B.spec", pkg "A/"])
it "circular A B C" $
dependencySort [pkg "A", pkg "B", pkg "C"]
`shouldThrow` anyException
it "sort A B D1.0" $
dependencySort [pkg "A", pkg "B/", pkg "D1.0"] >>=
(`shouldBe` [pkg "B/", pkg "D1.0", pkg "A"])
describe "layers" $
it "layers A B" $
dependencyLayers [pkg "A", pkg "B"] >>=
(`shouldBe` [[pkg "B"], [pkg "A"]])
describe "leaves" $
it "leaves A B D" $
leafPackages [pkg "A", pkg "B", pkg "D1.0"] >>=
(`shouldBe` [pkg "A", pkg "D1.0"])