1{-# LANGUAGE OverloadedStrings #-}
2module Pantry.CasaSpec (spec) where
3
4import Distribution.Types.Version (mkVersion)
5import Pantry
6import Pantry.SHA256
7import Test.Hspec
8
9spec :: Spec
10spec = do
11  loadHackagePackageSpec
12  completeSpec
13
14completeSpec :: Spec
15completeSpec =
16  it
17    "completePackageLocation: unliftio_0_2_12"
18    (shouldReturn
19       (runPantryAppClean
20          (cplComplete <$> completePackageLocation (argsRlpi unliftio_0_2_12)))
21       ( PLIHackage
22           (PackageIdentifier
23              { pkgName = "unliftio"
24              , pkgVersion = mkVersion [0, 2, 12]
25              })
26           (argsCabalKey unliftio_0_2_12)
27           (argsTreeKey unliftio_0_2_12)))
28
29loadHackagePackageSpec :: Spec
30loadHackagePackageSpec = do
31  it
32    "loadPackageRaw Exact hackage lookup"
33    (shouldReturn
34       (fmap
35          packageTreeKey
36          (runPantryAppClean (loadPackageRaw (argsRlpi unliftio_0_2_12))))
37       (argsTreeKey unliftio_0_2_12))
38  it
39    "loadHackagePackageRaw Exact hackage lookup"
40    (shouldReturn
41       (fmap
42          packageTreeKey
43          (runPantryAppClean (loadPackageRaw (argsRlpi unliftio_0_2_12))))
44       (argsTreeKey unliftio_0_2_12))
45  it
46    "loadHackagePackageRawViaCasa Exact hackage lookup"
47    (shouldReturn
48       (fmap
49          (fmap packageTreeKey)
50          (runPantryAppClean
51             (tryLoadPackageRawViaCasa
52                (argsRlpi unliftio_0_2_12)
53                (argsTreeKey unliftio_0_2_12))))
54       (Just (argsTreeKey unliftio_0_2_12)))
55
56data Args =
57  Args
58    { argsRlpi :: !RawPackageLocationImmutable
59    , argsTreeKey :: !TreeKey
60    , argsRevision :: !PackageIdentifierRevision
61    , argsCabalKey :: !BlobKey
62    }
63
64unliftio_0_2_12 :: Args
65unliftio_0_2_12 =
66  let cabalHash = (either
67                     (error . show)
68                     id
69                     (fromHexText
70                        "b089fbc2ff2628a963c2c4b12143f2020874e3e5144ffd6c62b25639a0ca1483"))
71      cabalLen = FileSize 3325
72      cabalFileHash =
73        CFIHash
74          cabalHash
75          (Just cabalLen)
76      casaTreeKey =
77        TreeKey
78          (BlobKey
79             (either
80                (error . show)
81                id
82                (fromHexText
83                   "4971b43f3d473eff868eb1a0c359729b49f1779e78c462ba45ef0d1eda677699"))
84             (FileSize 2229))
85      pir =
86        PackageIdentifierRevision
87          "unliftio"
88          (mkVersion [0, 2, 12])
89          cabalFileHash
90   in Args
91        { argsRevision = pir
92        , argsRlpi = RPLIHackage pir (Just casaTreeKey)
93        , argsTreeKey = casaTreeKey
94        , argsCabalKey = BlobKey cabalHash cabalLen
95        }
96