undercover-el / undercover.el

A test coverage library for Emacs
MIT License
86 stars 14 forks source link

wrong type argument: symbolp with lexical-binding on. #25

Closed Fuco1 closed 4 years ago

Fuco1 commented 7 years ago

After I've enabled lexical binding in smartparens, I get this odd error seemingly randomly when I run the tests. I does not always fail on the same test.

Wrong type argument: symbolp, (let ((before-index 0) (after-index 41)) (unwind-protect action (if (boundp (quote edebug-freq-count)) (progn (aset edebug-freq-count after-index (+ 1 (aref edebug-freq-count after-index))) (undercover--align-counts-between-stop-points before-index after-index)))))

You can see the log here: https://travis-ci.org/Fuco1/smartparens/jobs/210077796

sviridov commented 7 years ago

Thanks for the report, will take a look

sviridov commented 7 years ago

So, what I found so far.

It does not always fail on the same test.

It actually fails on same tests for me (I tried it locally in master branch with TRAVIS=true cask exec ert-runner --reporter ert+duration).

It fails right after sp-test-command-sp-up-sexp. And looks like next tests will be from smartparens-delayed-hook-test.el (based on test runs without TRAVIS=true). When I tried to remove smartparens-delayed-hook-test.el test runner was able to finish few more tests and then failed on smartparens-elixir-test.el.

List of test exucuted before smartparens-delayed-hook-test.el:

   passed    1/234  ( 0.17s)  sp-test--python-get-expression-which-is-string-inside-string
   passed    2/234  ( 0.08s)  sp-test--python-get-stringlike-expression-inside-string
   passed    3/234  ( 0.04s)  sp-test--python-get-stringlike-or-textmode-expression-inside-string
   passed    4/234  ( 0.16s)  sp-test--python-get-thing-which-is-string-inside-string
   passed    5/234  ( 0.00s)  sp-test-add-global-pair
   passed    6/234  ( 0.00s)  sp-test-add-global-pair-with-a-when-condition
   passed    7/234  ( 0.00s)  sp-test-buffer-modified-sp-skip-closing-pair
   passed    8/234  ( 2.61s)  sp-test-c++-slurp-include-semicolon
   passed    9/234  ( 0.06s)  sp-test-char-is-escaped-p
   passed   10/234  ( 2.33s)  sp-test-clojure-slurp-with-prefix
   passed   11/234  ( 1.64s)  sp-test-clojure-wrap-with-prefix
   passed   12/234  ( 0.32s)  sp-test-command-backward-delete-char
   passed   13/234  ( 1.38s)  sp-test-command-sp-backward-barf-sexp
   passed   14/234  ( 0.32s)  sp-test-command-sp-backward-delete-char
   passed   15/234  ( 0.15s)  sp-test-command-sp-backward-down-sexp
   passed   16/234  ( 7.73s)  sp-test-command-sp-backward-sexp
   passed   17/234  ( 1.49s)  sp-test-command-sp-backward-slurp-sexp
   passed   18/234  ( 0.38s)  sp-test-command-sp-beginning-of-sexp
   passed   19/234  ( 10.71s)  sp-test-command-sp-comment
   passed   20/234  ( 0.18s)  sp-test-command-sp-down-sexp
   passed   21/234  ( 0.36s)  sp-test-command-sp-end-of-sexp
   passed   22/234  ( 3.28s)  sp-test-command-sp-forward-barf-sexp
   passed   23/234  ( 7.99s)  sp-test-command-sp-forward-sexp
   passed   24/234  ( 2.48s)  sp-test-command-sp-forward-slurp-sexp
   passed   25/234  ( 1.87s)  sp-test-command-sp-join-sexp
   passed   26/234  ( 2.04s)  sp-test-command-sp-kill-sexp
   passed   27/234  ( 0.45s)  sp-test-command-sp-kill-symbol
   passed   28/234  ( 1.78s)  sp-test-command-sp-kill-whole-line
   passed   29/234  ( 0.31s)  sp-test-command-sp-kill-word
   passed   30/234  ( 0.10s)  sp-test-command-sp-mark-sexp
   passed   31/234  ( 0.11s)  sp-test-command-sp-mark-sexp-extend-existing-region
   FAILED   32/234  ( 0.21s)  sp-test-command-sp-mark-sexp-invalid
   passed   35/234  ( 0.02s)  sp-test-command-sp-rewrap-sexp-invalid-pair
   passed   36/234  ( 0.11s)  sp-test-command-sp-select-next-thing-empty-buffer
   passed   37/234  ( 0.12s)  sp-test-command-sp-select-previous-thing-empty-buffer
   passed   38/234  ( 4.93s)  sp-test-command-sp-splice-sexp
   passed   39/234  ( 3.65s)  sp-test-command-sp-splice-sexp-killing-around
   passed   40/234  ( 7.04s)  sp-test-command-sp-splice-sexp-killing-backward
   passed   41/234  ( 1.43s)  sp-test-command-sp-split-sexp
   passed   42/234  ( 2.07s)  sp-test-command-sp-up-sexp

@Fuco1, maybe you will have an idea which code is shared between smartparens-delayed-hook-test.el and smartparens-elixir-test.el but not used in tests above? It will help a lot to locate a problem.

And yes, it should be something related to https://github.com/Fuco1/smartparens/commit/ae1c49c2975531874b2e8a6e4eccf3a1ad0bc682...

Fuco1 commented 7 years ago

All right, I'll look into that Thanks for the analysis so far!

CyberShadow commented 4 years ago

Hi @Fuco1,

I wanted to have a look at this, but could not reproduce the problem.

When I clone https://github.com/Fuco1/smartparens and run cask install --dev and cask exec ert-runner, I get 5 test failures (sp-test-crystal-slurp-backward / -forward, sp-test-elixir-do-block-insertion-in-string, and sp-test-ess-raise-sexp / -slurp-forward). Then, when I uncomment the lines to activate undercover and re-run the tests, I get the same 5 test failures.

As this issue is quite old and I don't see a way to get to a reproducible test case from here right now, I'm going to close this; but, if you do still have a way to reproduce this problem, please leave a comment and we can reopen and look into it. Thanks!

Fuco1 commented 4 years ago

No worries, I'll re-enable undercover and see what happens.