packages feed

hydra-0.13.0: src/exec/update-generation-tests/Main.hs

#!/usr/bin/env stack
{- stack script
   --resolver lts-22.28
   --package hydra
-}

module Main where

import Hydra.Kernel
import Hydra.Staging.Testing.Generation.Generate
import Hydra.Staging.Testing.Generation.HaskellCodec (haskellTestGenerator)
import qualified Hydra.Sources.Test.TestSuite as TestSuite
import qualified Hydra.Test.TestSuite as GenTests


main :: IO ()
main = do
  putStrLn "=== Generate Hydra generation tests ==="
  putStrLn ""

  -- Get the namespaces from TestSuite's term dependencies
  let testNamespaces = moduleTermDependencies TestSuite.module_

  -- Build the lookup function from namespaces and test group hierarchy
  let lookupFn = createTestGroupLookup testNamespaces GenTests.allTests

  -- Get the list of test modules by looking up each namespace
  -- For now, use the libPairs and otherPairs from TestSuite (the actual Module values)
  let testModules = TestSuite.testSuiteModules

  -- Generate generation tests to src/gen-test/haskell
  let outputDir = "src/gen-test/haskell"

  putStrLn $ "Generating tests into: " ++ outputDir
  putStrLn ""

  generateGenerationTestSuite haskellTestGenerator outputDir testModules lookupFn

  putStrLn ""
  putStrLn "=== Done! ==="
  putStrLn ""
  putStrLn "To view the generated tests:"
  putStrLn $ "  ls -R " ++ outputDir
  putStrLn ""
  putStrLn "To run the generated tests:"
  putStrLn "  stack test"