dhall-to-cabal-1.0.0: golden-tests/GoldenTests.hs
module Main ( main ) where
import Data.Algorithm.Diff
import Data.Algorithm.DiffOutput
import Data.Function ( on )
import System.FilePath ( takeBaseName, replaceExtension )
import Test.Tasty ( defaultMain, TestTree, testGroup )
import Test.Tasty.Golden ( findByExtension )
import Test.Tasty.Golden.Advanced ( goldenTest )
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text.Lazy as LazyText
import qualified Data.Text.Lazy.Encoding as LazyText
import qualified Distribution.PackageDescription.Configuration as Cabal
import qualified Distribution.PackageDescription.Parse as Cabal
import qualified Distribution.PackageDescription.PrettyPrint as Cabal
import qualified Distribution.PackageDescription as Cabal
import qualified Distribution.Verbosity as Cabal
import Distribution.Package.Dhall ( dhallFileToCabal )
main :: IO ()
main =
defaultMain =<< goldenTests
goldenTests :: IO TestTree
goldenTests = do
dhallFiles <-
findByExtension [ ".dhall" ] "golden-tests"
return
$ testGroup "dhall-to-cabal golden tests"
[ goldenTest
( takeBaseName dhallFile )
( Cabal.readGenericPackageDescription Cabal.normal cabalFile )
( dhallFileToCabal dhallFile )
( \expected actual ->
return $
if on (==) Cabal.showGenericPackageDescription expected actual then
Nothing
else
Just "Generated .cabal file does not match input"
)
( Cabal.writeGenericPackageDescription cabalFile )
| dhallFile <- dhallFiles
, let cabalFile = replaceExtension dhallFile ".cabal"
]
reverseArtifacts pkg =
pkg { Cabal.executables = reverse (Cabal.executables pkg) }