sydtest-mutation-driver-gen-0.0.0.0: test/Test/Syd/Mutation/Driver/OptParseSpec.hs
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module Test.Syd.Mutation.Driver.OptParseSpec (spec) where
import Test.Syd
import Test.Syd.Mutation.Driver.Gen ()
import Test.Syd.Mutation.Driver.OptParse
import Test.Syd.Validity
spec :: Spec
spec = do
describe "SuiteConfig" $
genValidSpec @SuiteConfig
describe "SuitePkgSpec" $
genValidSpec @SuitePkgSpec
describe "MutationDriverSettings" $
genValidSpec @MutationDriverSettings
describe "CoverageSettings" $
genValidSpec @CoverageSettings
describe "DiffSource" $
genValidSpec @DiffSource
describe "DiffSettings" $
genValidSpec @DiffSettings
describe "parseSuitePkgSpec" $ do
it "parses PNAME=ROOT=RESOURCE_DIR" $
parseSuitePkgSpec "mypkg=/nix/store/abc/=/nix/store/def/"
`shouldSatisfy` (\case Right _ -> True; Left _ -> False)
it "rejects an empty PNAME" $
parseSuitePkgSpec "=/nix/store/abc/=/nix/store/def/"
`shouldSatisfy` (\case Left _ -> True; Right _ -> False)
it "rejects when fewer than three components" $
parseSuitePkgSpec "mypkg=/nix/store/abc/"
`shouldSatisfy` (\case Left _ -> True; Right _ -> False)
it "rejects when more than three components" $
parseSuitePkgSpec "a=/b/=/c/=extra"
`shouldSatisfy` (\case Left _ -> True; Right _ -> False)
it "rejects a relative path for the built-test-pkg root" $
parseSuitePkgSpec "mypkg=relative/path=/nix/store/def/"
`shouldSatisfy` (\case Left _ -> True; Right _ -> False)
it "rejects a relative path for the resource dir" $
parseSuitePkgSpec "mypkg=/nix/store/abc/=relative/path"
`shouldSatisfy` (\case Left _ -> True; Right _ -> False)