Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EUnit Test only run once - Unicode handling #73

Open
jwedel opened this issue Nov 1, 2013 · 0 comments
Open

EUnit Test only run once - Unicode handling #73

jwedel opened this issue Nov 1, 2013 · 0 comments

Comments

@jwedel
Copy link

jwedel commented Nov 1, 2013

Hi,

I just had a problem, where I could run the EUnit tests only once, and actually, the output was not complete:

Starting tests (SublimErl v0.5.1).
Running test "device_consumer_test:all_tests_test_/0" for target module  "device_consumer_test.erl".

/Users/janwedel/Development/erlang/erlactive$ /Users/janwedel/Development/erlang/rebar/rebar eunit suites=device_consumer_test tests=all_tests_test_ apps=erlactive skip_deps=true

==> erlactive (eunit)

Only quitting sublime and restarting it was recovering the issue but as soon as I ran the tests again, it was stuck again. At first I thought the test itself was stuck in a dead lock, but there was no beam.smp process. Then I checked the source code ([https://github.com/ostinelli/SublimErl/blob/master/sublimerl_tests_integration.py]) and did the following trick within the Sublime console:

>>> from sublimerl_core import SUBLIMERL
>>> SUBLIMERL.test_in_progress = False

Then I was able to rerun the tests, but with the same result.

While have the Sublime console open, I saw the following exception:

Exception in thread Thread-26:
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()

  File "./sublimerl_tests_integration.py", line 221, in run
  File "./sublimerl_tests_integration.py", line 250, in eunit_test
  File "./sublimerl_tests_integration.py", line 260, in compile_eunit_run_suite
  File "./sublimerl_core.py", line 315, in execute_os_command
  File "./sublimerl_tests_integration.py", line 76, in log
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 49: ordinal  not in range(128)

Then I used CMD-B to build a file that I had last edited before the problem occurred, and I got the following from the python console:

device_producer.erl:3: can't find include lib "amqp_client/include/amqp_client.hrl"
[Decode error - output not utf-8]
device_producer.erl:10: function init/1 undefined

Then I compiled it from the command line:

1> c(device_producer).
device_producer.erl:3: can't find include lib "amqp_client/include/amqp_client.hrl"
device_producer.erl:28: syntax error before: Â
device_producer.erl:10: function init/1 undefined

Ok, at least I knew in which line I had to look. Actually, I copied some text from the web (yeah, not a good idea) and it was not an A with some accent, at least not visible in sublime. It was displayed as if it was a space character, but when selecting it, it did not show the grey dot. So I erased it and it at least did compile again.

Then again, setting test_in_progress to False, ran the complete tests without a problem.

Long story short, there should be some proper handling for utf-8 character or at least removing them. Plus, if the test runner crashes (as it did), it should be possible to run them again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant