module Main where import qualified Nix.Derivation import qualified Data.Attoparsec.Text.Lazy import qualified Data.Text.Lazy.Builder import qualified Data.Text.Lazy.IO import Data.Attoparsec.Text.Lazy (Result(..)) main :: IO () main = do text0 <- Data.Text.Lazy.IO.readFile "tests/example0.drv" derivation <- case Data.Attoparsec.Text.Lazy.parse Nix.Derivation.parseDerivation text0 of Fail _ _ string -> fail string Done _ derivation -> return derivation let builder = Nix.Derivation.buildDerivation derivation let text1 = Data.Text.Lazy.Builder.toLazyText builder if text0 == text1 then return () else fail "Parsing and rendering the example derivation does not round-trip"