mirror of
https://github.com/haskell-nix/hnix-store.git
synced 2024-12-13 23:56:37 +03:00
32 lines
1.1 KiB
Haskell
32 lines
1.1 KiB
Haskell
{-# LANGUAGE DataKinds #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
{-# LANGUAGE TypeApplications #-}
|
|
|
|
module StorePath where
|
|
|
|
import qualified Data.Attoparsec.Text
|
|
|
|
import Test.Tasty.QuickCheck
|
|
|
|
import System.Nix.StorePath
|
|
import Arbitrary
|
|
|
|
-- | Test that Nix(OS) like paths roundtrip
|
|
prop_storePathRoundtrip :: NixLike -> NixLike -> Property
|
|
prop_storePathRoundtrip (_ :: NixLike) = \(NixLike x) ->
|
|
(parsePath "/nix/store" $ storePathToRawFilePath x) === Right x
|
|
|
|
-- | Test that any `StorePath` roundtrips
|
|
prop_storePathRoundtrip' :: StorePath -> Property
|
|
prop_storePathRoundtrip' x =
|
|
(parsePath (storePathRoot x) $ storePathToRawFilePath x) === Right x
|
|
|
|
prop_storePathRoundtripParser :: NixLike -> NixLike -> Property
|
|
prop_storePathRoundtripParser (_ :: NixLike) = \(NixLike x) ->
|
|
(Data.Attoparsec.Text.parseOnly (pathParser $ storePathRoot x) $ storePathToText x) === Right x
|
|
|
|
prop_storePathRoundtripParser' :: StorePath -> Property
|
|
prop_storePathRoundtripParser' x =
|
|
(Data.Attoparsec.Text.parseOnly (pathParser $ storePathRoot x) $ storePathToText x) === Right x
|