diff --git a/stack.yaml b/stack.yaml index bb092adaa..d65b6e976 100644 --- a/stack.yaml +++ b/stack.yaml @@ -7,11 +7,14 @@ nix: pure: false packages: [perl gmp ncurses zlib] -extra-deps: [] - packages: - hledger-lib - hledger - hledger-ui - hledger-web - hledger-api + +extra-deps: +# for tools/easytest.hs. Should be harmless otherwise. +- git: git@github.com:joelburget/easytest.git + commit: 5d5b851e77368071b5727cd366af9c6ecd288add diff --git a/tools/easytest.hs b/tools/easytest.hs new file mode 100755 index 000000000..e95c30e01 --- /dev/null +++ b/tools/easytest.hs @@ -0,0 +1,36 @@ +#!/usr/bin/env stack +-- stack runghc --install-ghc --package easytest +-- (use project's resolver) + +-- stack script --resolver lts-10.3 --package easytest +-- (use specific resolver, be more self-contained) + +-- Examples of https://github.com/joelburget/easytest, an easier testing framework. + +{-# LANGUAGE OverloadedStrings #-} + +import EasyTest +import Control.Applicative +import Control.Monad + +suite1 :: Test () +suite1 = tests + [ scope "a" ok + , scope "b.c" ok + , scope "b" ok + , scope "b" . scope "c" . scope "d" $ ok + , scope "c" ok ] + +reverseTest :: Test () +reverseTest = scope "list reversal" $ do + nums <- listsOf [0..100] (int' 0 99) + nums `forM_` \nums -> expect (reverse (reverse nums) == nums) + +main :: IO () +main = do + run suite1 + runOnly "a" suite1 + runOnly "b" suite1 + runOnly "b" $ tests [suite1, scope "xyz" (crash "never run")] + runOnly "b.c" $ tests [suite1, scope "b" (crash "never run")] + run reverseTest