mirror of
https://github.com/haskell-nix/hnix-store.git
synced 2024-12-14 19:47:56 +03:00
37 lines
1.0 KiB
Haskell
37 lines
1.0 KiB
Haskell
|
|
||
|
module Derivation where
|
||
|
|
||
|
import Test.Tasty (TestTree, testGroup)
|
||
|
import Test.Tasty.Golden (goldenVsFile)
|
||
|
|
||
|
import System.Nix.Derivation (parseDerivation, buildDerivation)
|
||
|
|
||
|
import qualified Data.Attoparsec.Text.Lazy
|
||
|
import qualified Data.Text.IO
|
||
|
import qualified Data.Text.Lazy
|
||
|
import qualified Data.Text.Lazy.Builder
|
||
|
|
||
|
processDerivation source dest = do
|
||
|
contents <- Data.Text.IO.readFile source
|
||
|
case Data.Attoparsec.Text.Lazy.parseOnly (parseDerivation "/nix/store") contents of
|
||
|
Left e -> error e
|
||
|
Right drv ->
|
||
|
Data.Text.IO.writeFile dest
|
||
|
. Data.Text.Lazy.toStrict
|
||
|
. Data.Text.Lazy.Builder.toLazyText
|
||
|
$ buildDerivation drv
|
||
|
|
||
|
test_derivation :: TestTree
|
||
|
test_derivation = testGroup "golden" $ map mk [0..1]
|
||
|
where
|
||
|
mk n =
|
||
|
let
|
||
|
fp = "tests/samples/example"
|
||
|
drv = (fp ++ show n ++ ".drv")
|
||
|
act = (fp ++ show n ++ ".actual")
|
||
|
in
|
||
|
goldenVsFile
|
||
|
("derivation roundtrip of " ++ drv)
|
||
|
drv act (processDerivation drv act)
|
||
|
|