tweag / pirouette

Language-generic workbench for building static analysis
MIT License
47 stars 2 forks source link

Remove executable and make `incorrectnessLogic` a tasty assertion #93

Closed florentc closed 2 years ago

florentc commented 2 years ago

This is the beginning of the move from pirouette as an app to pirouette as an API. Right now, all the exec has been deleted. Please require which feature you would like re-exposed in the new top-level Pirouette module.

As for incorrectnessLogic, it is now a tasty unit test assertion which fails in case a counterexample is found or an unexpected error occurs. The existing color-coded pretty-printing on stdout has been kept for now for convenience. In the future we might want to clean things up to keep test trees clean, or put in in the test log.

VictorCMiraldo commented 2 years ago

Why not clean it out now? We can always split it out in two different functions:

runIncorrectnessLogic :: ... -> IO IncorrectnessResult

assertIL :: Assertion
assertIL = do
  x <- runIncorrectnessLogic
  case x of
    Ok -> return ()
    _ -> assertionFailure "some reason"

incorrectnessLogicRepl :: ... -> IO ()
incorrectnessLogicRepl = runIncorrectnessLogic >>= putStrLn . prettyWithColors