packages feed

hnix-store-json-0.2.0.0: tests/DerivedPathSpec.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module DerivedPathSpec where

import Data.Set qualified
import Test.Hspec (Spec, describe)
import Test.Hspec.Nix (forceRight)
import UpstreamData (parsesUpstream)

import System.Nix.DerivedPath (DerivedPath(..), OutputsSpec(..), SingleDerivedPath(..))
import System.Nix.JSON ()
import System.Nix.OutputName qualified
import System.Nix.StorePath (parseBasePathFromText)

-- upstream-nix/src/libstore-tests/data/derived-path/multi_opaque.json
upstreamMultiOpaque :: DerivedPath
upstreamMultiOpaque = DerivedPath_Opaque $
  forceRight $ parseBasePathFromText "g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-foo.drv"

-- upstream-nix/src/libstore-tests/data/derived-path/mutli_built.json
upstreamMultiBuilt :: DerivedPath
upstreamMultiBuilt = DerivedPath_Built
  (SingleDerivedPath_Opaque $ forceRight $ parseBasePathFromText "g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-foo.drv")
  (OutputsSpec_Names $ Data.Set.fromList
    [ forceRight $ System.Nix.OutputName.mkOutputName "bar"
    , forceRight $ System.Nix.OutputName.mkOutputName "baz"
    ])

-- upstream-nix/src/libstore-tests/data/derived-path/multi_built_built.json
upstreamMultiBuiltBuilt :: DerivedPath
upstreamMultiBuiltBuilt = DerivedPath_Built
  (SingleDerivedPath_Built
    (SingleDerivedPath_Opaque $ forceRight $ parseBasePathFromText "g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-foo.drv")
    (forceRight $ System.Nix.OutputName.mkOutputName "bar"))
  (OutputsSpec_Names $ Data.Set.fromList
    [ forceRight $ System.Nix.OutputName.mkOutputName "baz"
    , forceRight $ System.Nix.OutputName.mkOutputName "quux"
    ])

-- upstream-nix/src/libstore-tests/data/derived-path/multi_built_built_wildcard.json
upstreamMultiBuiltBuiltWildcard :: DerivedPath
upstreamMultiBuiltBuiltWildcard = DerivedPath_Built
  (SingleDerivedPath_Built
    (SingleDerivedPath_Opaque $ forceRight $ parseBasePathFromText "g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-foo.drv")
    (forceRight $ System.Nix.OutputName.mkOutputName "bar"))
  OutputsSpec_All

spec :: Spec
spec = do
  let dir = "upstream-libstore-data/derived-path"
  describe "upstream Nix test data" $ do
    parsesUpstream dir "multi_opaque.json" upstreamMultiOpaque
    parsesUpstream dir "mutli_built.json" upstreamMultiBuilt
    parsesUpstream dir "multi_built_built.json" upstreamMultiBuiltBuilt
    parsesUpstream dir "multi_built_built_wildcard.json" upstreamMultiBuiltBuiltWildcard