File: TargetSpec.hs

package info (click to toggle)
haskell-stack 3.7.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,144 kB
  • sloc: haskell: 38,070; makefile: 6; ansic: 5
file content (33 lines) | stat: -rw-r--r-- 1,227 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}

module Stack.Build.TargetSpec
  ( main
  , spec
  ) where

import qualified Data.Text           as T
import           Distribution.Types.PackageName (mkPackageName)
import           Distribution.Version (mkVersion)
import           Stack.Build.Target
import           Stack.Prelude
import           Stack.Types.NamedComponent
import           Test.Hspec

main :: IO ()
main = hspec spec

spec :: Spec
spec = do
    describe "parseRawTarget" $ do
        let test s e = it s $ parseRawTarget (T.pack s) `shouldBe` e
        test "foobar" $ Just $ RTPackage (mkPackageName "foobar")
        test "foobar-1.2.3" $ Just $ RTPackageIdentifier $ PackageIdentifier
            (mkPackageName "foobar") (mkVersion [1, 2, 3])
        test "./foobar" Nothing
        test "foobar/" Nothing
        test "/foobar" Nothing
        test ":some-exe" $ Just $ RTComponent "some-exe"
        test "foobar:some-exe" $ Just $ RTPackageComponent (mkPackageName "foobar") $ UnresolvedComponent "some-exe"
        test "foobar:exe:some-exe" $ Just $ RTPackageComponent (mkPackageName "foobar")
            $ ResolvedComponent $ CExe "some-exe"