{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} module StorePath where import Test.Hspec (Spec, describe, it, shouldBe) import qualified Data.Text import System.Nix.StorePath (parseNameText, InvalidNameError(..)) spec_storePath :: Spec spec_storePath = do describe "parseNameText" $ do it "parses valid name" $ parseNameText "name-dev.dotok" `shouldBe` pure "name-dev.dotok" it "fails on empty" $ parseNameText mempty `shouldBe` Left EmptyName it "fails on too long" $ parseNameText (Data.Text.replicate 256 "n") `shouldBe` Left (NameTooLong 256) it "fails on leading dot" $ parseNameText ".ab" `shouldBe` Left LeadingDot it "fails on invalid characters" $ parseNameText "ab!cd#@" `shouldBe` Left (InvalidCharacters "!#@")