haskell mode tng - nurmi-labs/blogger GitHub Wiki

Install

The hsinspect.cabal file (0.0.8) lists testing with GHC ^>=8.4.4 || ^>=8.6.5.

eric@darkstar:~$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.6.5
eric@darkstar:~$ 

Install Cabal-3.0.0.0 and cabal-install-3.0.0.0 (required for cabal v2-install).

eric@darkstar:~$ cd /tmp/Cabal-3.0.0.0
eric@darkstar:/tmp/Cabal-3.0.0.0$ ghc -threaded --make Setup
eric@darkstar:/tmp/Cabal-3.0.0.0$ ./Setup configure --enable-library-profiling --user
eric@darkstar:/tmp/Cabal-3.0.0.0$ ./Setup build
eric@darkstar:/tmp/Cabal-3.0.0.0$ ./Setup install
eric@darkstar:/tmp/Cabal-3.0.0.0$ cd ../cabal-install-3.0.0.0
eric@darkstar:/tmp/cabal-install-3.0.0.0$ ./bootstrap.sh

...

eric@darkstar:/tmp/cabal-install-3.0.0.0$ ~/.cabal/bin/cabal update
Config file path source is default config file.
Config file /home/eric/.cabal/config not found.
Writing default configuration to /home/eric/.cabal/config
Downloading the latest package list from hackage.haskell.org
eric@darkstar:/tmp/cabal-install-3.0.0.0$  

The haskell-tng-mode.el file (0.0.1) requires emacs 26.1.

eric@darkstar:~$ emacs --version | head -n 1
GNU Emacs 26.3
eric@darkstar:~$ 

Install the following Elisp packages:

  • company
  • markdown-mode
  • popup
  • projectile
  • smartparens
  • use-package
  • yasnippet

One can locate (projectile-mode +1) above the two define-key lines in an elisp file to be loaded.

The haskell-tng.el package's files themselves can be installed into ~/lib/emacs/haskell-tng.

haskell-tng.el

Testing

Install the Cask package.

eric@darkstar:~$ curl -fsSL https://raw.githubusercontent.com/cask/cask/master/go | python
Cloning into '/home/eric/.cask'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 3668 (delta 0), reused 1 (delta 0), pack-reused 3664
Receiving objects: 100% (3668/3668), 1.19 MiB | 2.49 MiB/s, done.
Resolving deltas: 100% (2072/2072), done.
Importing package-keyring.gpg...
Importing package-keyring.gpg...done
Contacting host: melpa.org:443
Contacting host: melpa.org:443
Contacting host: elpa.gnu.org:443
Package refresh done
Successfully installed Cask!  Now, add the cask binary to your $PATH:
  export PATH="/home/eric/.cask/bin:$PATH"
eric@darkstar:~$ export PATH="/home/eric/.cask/bin:$PATH"
eric@darkstar:~$ grep Version ~/.cask/cask.el | perl -lae 'print $F[2]'
0.8.4
eric@darkstar:~$ cd ~/lib/emacs/haskell-tng
eric@darkstar:/lib/emacs/haskell-tng$

Install the Cask file dependencies.

eric@darkstar:/lib/emacs/haskell-tng$ cask install
Loading package information... done
Package operations: 8 installs, 0 removals
  - Installing [ 1/8] popup (0.5.3)... done
  - Installing [ 2/8] emacs (26.1)... already present
  - Installing [ 3/8] yasnippet (latest)... done
  - Installing [ 4/8] smartparens (latest)... done
  - Installing [ 5/8] projectile (latest)... done
  - Installing [ 6/8] ert-runner (latest)... done
  - Installing [ 7/8] faceup (latest)... done
  - Installing [ 8/8] company (latest)... done
eric@darkstar:/lib/emacs/haskell-tng$ tree -L 3 .cask
.cask
`-- 26.3
    `-- elpa
        |-- ansi-20150703.826
        |-- archives
        |-- commander-20140120.1852
        |-- company-20191114.1356
        |-- dash-20191109.1327
        |-- epl-20180205.2049
        |-- ert-runner-20180831.1145
        |-- f-20191110.1357
        |-- faceup-20170925.1946
        |-- pkg-info-20150517.1143
        |-- popup-20160709.1429
        |-- projectile-20191024.721
        |-- s-20180406.808
        |-- shut-up-20180628.1830
        |-- smartparens-20191015.1754
        `-- yasnippet-20191030.1331

18 directories, 0 files
eric@darkstar:/lib/emacs/haskell-tng$

Run the tests.

eric@darkstar:/lib/emacs/haskell-tng$ cask exec ert-runner
......Test haskell-tng-compile-errors-file-tests backtrace:

  signal(ert-test-failed (((should (have-expected-errors (testdata "co
  ert-fail(((should (have-expected-errors (testdata "compile/ghc-8.4.4
  (if (unwind-protect (setq value-312 (apply fn-310 args-311)) (setq f
  (let (form-description-314) (if (unwind-protect (setq value-312 (app
  (let ((value-312 (quote ert-form-evaluation-aborted-313))) (let (for
  (let* ((fn-310 (function have-expected-errors)) (args-311 (condition
  (closure (t) nil (let* ((fn-310 (function have-expected-errors)) (ar
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-compile-errors-file-tests
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-compile-errors-file-tests condition:

    (ert-test-failed
     ((should
       (have-expected-errors
	(testdata "compile/ghc-8.4.4-error.compile")))
      :form
      (have-expected-errors "/home/eric/lib/emacs/haskell-tng/test/compile/ghc-8.4.4-error.compile")
      :value nil))

FTest haskell-tng-compile-hspec-file-tests backtrace:

  signal(ert-test-failed (((should (have-expected-errors (testdata "co
  ert-fail(((should (have-expected-errors (testdata "compile/hspec-fai
  (if (unwind-protect (setq value-332 (apply fn-330 args-331)) (setq f
  (let (form-description-334) (if (unwind-protect (setq value-332 (app
  (let ((value-332 (quote ert-form-evaluation-aborted-333))) (let (for
  (let* ((fn-330 (function have-expected-errors)) (args-331 (condition
  (closure (t) nil (let* ((fn-330 (function have-expected-errors)) (ar
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-compile-hspec-file-tests 
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-compile-hspec-file-tests condition:

    (ert-test-failed
     ((should
       (have-expected-errors
	(testdata "compile/hspec-failure.compile")))
      :form
      (have-expected-errors "/home/eric/lib/emacs/haskell-tng/test/compile/hspec-failure.compile")
      :value nil))

FTest haskell-tng-compile-tasty-file-tests backtrace:

  signal(ert-test-failed (((should (have-expected-errors (testdata "co
  ert-fail(((should (have-expected-errors (testdata "compile/tasty-fai
  (if (unwind-protect (setq value-337 (apply fn-335 args-336)) (setq f
  (let (form-description-339) (if (unwind-protect (setq value-337 (app
  (let ((value-337 (quote ert-form-evaluation-aborted-338))) (let (for
  (let* ((fn-335 (function have-expected-errors)) (args-336 (condition
  (closure (t) nil (let* ((fn-335 (function have-expected-errors)) (ar
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-compile-tasty-file-tests 
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-compile-tasty-file-tests condition:

    (ert-test-failed
     ((should
       (have-expected-errors
	(testdata "compile/tasty-failure.compile")))
      :form
      (have-expected-errors "/home/eric/lib/emacs/haskell-tng/test/compile/tasty-failure.compile")
      :value nil))

FTest haskell-tng-compile-warnings-file-tests backtrace:

  signal(ert-test-failed (((should (have-expected-errors (testdata "co
  ert-fail(((should (have-expected-errors (testdata "compile/ghc-8.4.4
  (if (unwind-protect (setq value-322 (apply fn-320 args-321)) (setq f
  (let (form-description-324) (if (unwind-protect (setq value-322 (app
  (let ((value-322 (quote ert-form-evaluation-aborted-323))) (let (for
  (let* ((fn-320 (function have-expected-errors)) (args-321 (condition
  (closure (t) nil (let* ((fn-320 (function have-expected-errors)) (ar
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-compile-warnings-file-tes
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-compile-warnings-file-tests condition:

    (ert-test-failed
     ((should
       (have-expected-errors
	(testdata "compile/ghc-8.4.4-warning.compile")))
      :form
      (have-expected-errors "/home/eric/lib/emacs/haskell-tng/test/compile/ghc-8.4.4-warning.compile")
      :value nil))

FTest haskell-tng-font-lock-file-tests-indentation backtrace:

  signal(ert-test-failed (((should (have-expected-faces (testdata "src
  ert-fail(((should (have-expected-faces (testdata "src/indentation.hs
  (if (unwind-protect (setq value-297 (apply fn-295 args-296)) (setq f
  (let (form-description-299) (if (unwind-protect (setq value-297 (app
  (let ((value-297 (quote ert-form-evaluation-aborted-298))) (let (for
  (let* ((fn-295 (function have-expected-faces)) (args-296 (condition-
  (closure (t) nil (let* ((fn-295 (function have-expected-faces)) (arg
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-font-lock-file-tests-inde
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-font-lock-file-tests-indentation condition:

    (ert-test-failed
     ((should
       (have-expected-faces
	(testdata "src/indentation.hs")))
      :form
      (have-expected-faces "/home/eric/lib/emacs/haskell-tng/test/src/indentation.hs")
      :value nil))

FTest haskell-tng-font-lock-file-tests-indentation1 backtrace:

  signal(ert-test-failed (((should (have-expected-faces (testdata "src
  ert-fail(((should (have-expected-faces (testdata "src/indentation-op
  (if (unwind-protect (setq value-302 (apply fn-300 args-301)) (setq f
  (let (form-description-304) (if (unwind-protect (setq value-302 (app
  (let ((value-302 (quote ert-form-evaluation-aborted-303))) (let (for
  (let* ((fn-300 (function have-expected-faces)) (args-301 (condition-
  (closure (t) nil (let* ((fn-300 (function have-expected-faces)) (arg
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-font-lock-file-tests-inde
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-font-lock-file-tests-indentation1 condition:

    (ert-test-failed
     ((should
       (have-expected-faces
	(testdata "src/indentation-options1.hs")))
      :form
      (have-expected-faces "/home/eric/lib/emacs/haskell-tng/test/src/indentation-options1.hs")
      :value nil))

FTest haskell-tng-font-lock-file-tests-indentation2 backtrace:

  signal(ert-test-failed (((should (have-expected-faces (testdata "src
  ert-fail(((should (have-expected-faces (testdata "src/indentation-op
  (if (unwind-protect (setq value-307 (apply fn-305 args-306)) (setq f
  (let (form-description-309) (if (unwind-protect (setq value-307 (app
  (let ((value-307 (quote ert-form-evaluation-aborted-308))) (let (for
  (let* ((fn-305 (function have-expected-faces)) (args-306 (condition-
  (closure (t) nil (let* ((fn-305 (function have-expected-faces)) (arg
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-font-lock-file-tests-inde
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-font-lock-file-tests-indentation2 condition:

    (ert-test-failed
     ((should
       (have-expected-faces
	(testdata "src/indentation-options2.hs")))
      :form
      (have-expected-faces "/home/eric/lib/emacs/haskell-tng/test/src/indentation-options2.hs")
      :value nil))

FTest haskell-tng-font-lock-file-tests-layout backtrace:

  signal(ert-test-failed (((should (have-expected-faces (testdata "src
  ert-fail(((should (have-expected-faces (testdata "src/layout.hs"))) 
  (if (unwind-protect (setq value-292 (apply fn-290 args-291)) (setq f
  (let (form-description-294) (if (unwind-protect (setq value-292 (app
  (let ((value-292 (quote ert-form-evaluation-aborted-293))) (let (for
  (let* ((fn-290 (function have-expected-faces)) (args-291 (condition-
  (closure (t) nil (let* ((fn-290 (function have-expected-faces)) (arg
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-font-lock-file-tests-layo
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-font-lock-file-tests-layout condition:

    (ert-test-failed
     ((should
       (have-expected-faces
	(testdata "src/layout.hs")))
      :form
      (have-expected-faces "/home/eric/lib/emacs/haskell-tng/test/src/layout.hs")
      :value nil))

FTest haskell-tng-font-lock-file-tests-medley backtrace:

  signal(ert-test-failed (((should (have-expected-faces (testdata "src
  ert-fail(((should (have-expected-faces (testdata "src/medley.hs"))) 
  (if (unwind-protect (setq value-287 (apply fn-285 args-286)) (setq f
  (let (form-description-289) (if (unwind-protect (setq value-287 (app
  (let ((value-287 (quote ert-form-evaluation-aborted-288))) (let (for
  (let* ((fn-285 (function have-expected-faces)) (args-286 (condition-
  (closure (t) nil (let* ((fn-285 (function have-expected-faces)) (arg
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-font-lock-file-tests-medl
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-font-lock-file-tests-medley condition:

    (ert-test-failed
     ((should
       (have-expected-faces
	(testdata "src/medley.hs")))
      :form
      (have-expected-faces "/home/eric/lib/emacs/haskell-tng/test/src/medley.hs")
      :value nil))

F...........Test haskell-tng-lexer-file-tests-indentation backtrace:

  signal(ert-test-failed (((should (have-expected-forward-lex (testdat
  ert-fail(((should (have-expected-forward-lex (testdata "src/indentat
  (if (unwind-protect (setq value-52 (apply fn-50 args-51)) (setq form
  (let (form-description-54) (if (unwind-protect (setq value-52 (apply
  (let ((value-52 (quote ert-form-evaluation-aborted-53))) (let (form-
  (let* ((fn-50 (function have-expected-forward-lex)) (args-51 (condit
  (closure (t) nil (let* ((fn-50 (function have-expected-forward-lex))
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-lexer-file-tests-indentat
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-lexer-file-tests-indentation condition:

    (ert-test-failed
     ((should
       (have-expected-forward-lex
	(testdata "src/indentation.hs")))
      :form
      (have-expected-forward-lex "/home/eric/lib/emacs/haskell-tng/test/src/indentation.hs")
      :value nil))

FTest haskell-tng-lexer-file-tests-layout backtrace:

  signal(ert-test-failed (((should (have-expected-forward-lex (testdat
  ert-fail(((should (have-expected-forward-lex (testdata "src/layout.h
  (if (unwind-protect (setq value-42 (apply fn-40 args-41)) (setq form
  (let (form-description-44) (if (unwind-protect (setq value-42 (apply
  (let ((value-42 (quote ert-form-evaluation-aborted-43))) (let (form-
  (let* ((fn-40 (function have-expected-forward-lex)) (args-41 (condit
  (closure (t) nil (let* ((fn-40 (function have-expected-forward-lex))
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-lexer-file-tests-layout :
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-lexer-file-tests-layout condition:

    (ert-test-failed
     ((should
       (have-expected-forward-lex
	(testdata "src/layout.hs")))
      :form
      (have-expected-forward-lex "/home/eric/lib/emacs/haskell-tng/test/src/layout.hs")
      :value nil))

FTest haskell-tng-lexer-file-tests-medley backtrace:

  signal(ert-test-failed (((should (have-expected-forward-lex (testdat
  ert-fail(((should (have-expected-forward-lex (testdata "src/medley.h
  (if (unwind-protect (setq value-62 (apply fn-60 args-61)) (setq form
  (let (form-description-64) (if (unwind-protect (setq value-62 (apply
  (let ((value-62 (quote ert-form-evaluation-aborted-63))) (let (form-
  (let* ((fn-60 (function have-expected-forward-lex)) (args-61 (condit
  (closure (t) nil (let* ((fn-60 (function have-expected-forward-lex))
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name haskell-tng-lexer-file-tests-medley :
  ert-run-or-rerun-test(#s(ert--stats :selector (and t) :tests [#s(ert
  ert-run-tests((and t) (lambda (event-type &rest event-args) (cond ((
  ert-runner/run-tests-batch((and t))
  (let ((stats (ert-runner/run-tests-batch selector))) (kill-emacs (if
  ert-runner/run-tests-batch-and-exit((and t))
  (if ert-runner-verbose (ert-runner/run-tests-batch-and-exit ert-runn
  (let ((test-files (ert-runner--test-files tests)) (test-helper (f-ex
  ert-runner/run()
  apply(ert-runner/run nil)
  commander--handle-command(nil)
  commander-parse(nil)
  (if commander-parsing-done nil (commander-parse (or commander-args (
  eval-buffer(#<buffer  *load*> nil "/home/eric/lib/emacs/haskell-tng/
  load-with-code-conversion("/home/eric/lib/emacs/haskell-tng/.cask/26
  load("/home/eric/lib/emacs/haskell-tng/.cask/26.3/elpa/ert-runner-20
  command-line-1(("-scriptload" "/home/eric/lib/emacs/haskell-tng/.cas
  command-line()
  normal-top-level()

Test haskell-tng-lexer-file-tests-medley condition:

    (ert-test-failed
     ((should
       (have-expected-forward-lex
	(testdata "src/medley.hs")))
      :form
      (have-expected-forward-lex "/home/eric/lib/emacs/haskell-tng/test/src/medley.hs")
      :value nil))

F....

Ran 33 tests in 35.419 seconds
12 unexpected results:
   FAILED  haskell-tng-compile-errors-file-tests
   FAILED  haskell-tng-compile-hspec-file-tests
   FAILED  haskell-tng-compile-tasty-file-tests
   FAILED  haskell-tng-compile-warnings-file-tests
   FAILED  haskell-tng-font-lock-file-tests-indentation
   FAILED  haskell-tng-font-lock-file-tests-indentation1
   FAILED  haskell-tng-font-lock-file-tests-indentation2
   FAILED  haskell-tng-font-lock-file-tests-layout
   FAILED  haskell-tng-font-lock-file-tests-medley
   FAILED  haskell-tng-lexer-file-tests-indentation
   FAILED  haskell-tng-lexer-file-tests-layout
   FAILED  haskell-tng-lexer-file-tests-medley
eric@darkstar:/lib/emacs/haskell-tng$ 

J. Andersson's cask
B. Batsov's projectile
M. Goljer's smartparens
J. Távora's yasnippet