packages feed

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

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

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

import System.Nix.DerivedPath (OutputsSpec(..))
import System.Nix.JSON ()
import System.Nix.OutputName qualified

-- upstream-nix/src/libstore-tests/data/outputs-spec/all.json
upstreamAll :: OutputsSpec
upstreamAll = OutputsSpec_All

-- upstream-nix/src/libstore-tests/data/outputs-spec/name.json
upstreamName :: OutputsSpec
upstreamName = OutputsSpec_Names $
  Data.Set.singleton $ forceRight $ System.Nix.OutputName.mkOutputName "a"

-- upstream-nix/src/libstore-tests/data/outputs-spec/names.json
upstreamNames :: OutputsSpec
upstreamNames = OutputsSpec_Names $ Data.Set.fromList
  [ forceRight $ System.Nix.OutputName.mkOutputName "a"
  , forceRight $ System.Nix.OutputName.mkOutputName "b"
  ]

spec :: Spec
spec = do
  let dir = "upstream-libstore-data/outputs-spec"
  describe "upstream Nix test data" $ do
    parsesUpstream dir "all.json" upstreamAll
    parsesUpstream dir "name.json" upstreamName
    parsesUpstream dir "names.json" upstreamNames