module Main (main) where import Process.Shell (sh) import Test.Hspec (describe, hspec, it, shouldBe) main :: IO () main = hspec do describe "issue events" do it "smoke" do ( `shouldBe` concat [ " created issue 3\n", "df7c026 created issue 1\n", "55b493c deleted issue 1\n", "618907d changed issue 1\n", "618907d created issue 2\n", "e95b4ec created issue 1" ] ) . fst =<< smokeScript "anissue log" describe "issues" do it "smoke" do ( `shouldBe` concat [ "issue 3 on 1970-01-01 by Jane Doe\n", "\n", "issue 2 on 1970-01-01 by Jane Doe\n", "\n", "issue 1 on 1970-01-01 by Jane Doe" ] ) . fst =<< smokeScript "anissue list" smokeScript :: String -> IO (String, ()) smokeScript cmd = do anissue :: String <- [sh|realpath dist-newstyle/build/*/*/anissue-*/x/anissue/build/anissue|] [sh| set -efu PATH=#{anissue}${PATH+:$PATH}; export PATH readonly tmp=$(mktemp -d) trap 'rm -rf "$tmp"' EXIT cd "$tmp" ( GIT_AUTHOR_DATE="Thu Jan 1 00:00:00 1970 +0000"; export GIT_AUTHOR_DATE GIT_AUTHOR_EMAIL="jane@example.com"; export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME="Jane Doe"; export GIT_AUTHOR_NAME GIT_COMMITTER_DATE="Thu Jan 1 00:00:00 1970 +0000"; export GIT_COMMITTER_DATE GIT_COMMITTER_EMAIL="jane@example.com"; export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME="Jane Doe"; export GIT_COMMITTER_NAME git init --initial-branch=main git config --local user.name "$GIT_AUTHOR_NAME" git config --local user.email "$GIT_AUTHOR_EMAIL" cat >main.hs <<'EOF' module Main where EOF git add main.hs git commit -m 'no issues' cat >main.hs <<'EOF' module Main where -- TODO issue 1 EOF git add main.hs git commit -m 'create issue 1' cat >main.hs <<'EOF' module Main where -- TODO issue 2 EOF cat >lib.hs <<'EOF' module Main where -- TODO issue 1 -- -- remark: file modifications are not considered changes! EOF git add main.hs lib.hs git commit -m 'create issue 2, modify issue 1' cat >lib.hs <<'EOF' module Main where EOF git add lib.hs git commit -m 'close issue 1' cat >lib.hs <<'EOF' module Main where -- TODO issue 1 -- -- remark: file changes are not considered changes! EOF git add main.hs lib.hs git commit -m 'reopen issue 1' cat >main.hs <<'EOF' module Main where -- TODO issue 2 -- TODO issue 3 EOF ) 1>/dev/null FAKETIME='1970-01-01 00:00:00' eval '#{cmd}'|]