ferd / rebar3_proper

Run PropEr test suites with rebar3
BSD 3-Clause "New" or "Revised" License
38 stars 22 forks source link

{error, bad_name} when invoking code:priv_dir() #12

Closed pulltab closed 7 years ago

pulltab commented 7 years ago
rebar 3.3.2 on Erlang/OTP 18 Erts 7.2.1

When I invoke rebar3 as test proper, I am experiencing the following error:

$ rebar3 as test proper
===> Verifying dependencies...
===> Compiling hermes_config
===> Compiling hermes_stat
===> Compiling hermes_common
===> Compiling hermes_backend_redis
===> Compiling hermes_web
===> Compiling hermes
===> Testing prop_hermes_backend_redis_channel:prop_filter_scores_size_drop()
.x.x.x....x....x.x..xx.x.....x..xx.....x.x..x....x.x.x...x.x.xx..xxx.x....x..x..x..xx.xx.x..x...x.xx.xxx.x..x..x..xx....xx..xx.xxx.xxxx.x.xxx..x..xxxxxx.xxxx..xxx.xx..x.xxxxx.x.x.xx..x....x.x.xx.x..xxxx.xx....xxx...x..x..x.x.x.xx...xxx.xxxx.xxx.xxx.x..x..x..xxx...xx...xxx..x...x.x.x..xxx.xx.xx.xx.x..x....x....x..x.x.xx.xx.xxxx....x.x...xxx...xx......x...xx...x.x.xx..x.xxx..xxx.x.xxxx.xx.xxx.xxxx..x.x.x..x.xxxx.xx..x..xx.x.....xxxx.x.xxx.xxx..x...xxxx...xxxx.xx.....x..xx..x..x.x.xxxx..x..xx.x.x..x..x..xx.....x.xx.....x.xx.x.x..xx.xxx..xx.xx..xx.xx..xxxx...x..xxx....x.xxxxx.x....x...x.xx..xx...xxxx.x.x.x..x.xxx....xx..x.xx..xx...x.x.xx.xx.x....xxx....xx.xx.xx.x.....x..x..xx.xx.x...xx.x.xxxx.x..xx...x.......x.x.x.x....xxx...xxx.x.x..x..x...xxxx..xx.xxx..x..xxxxxx...x...xx.xx..x....x..x.x.xx...x.xx...x....xx...x..xx..x.x..x.x.xxxxxx..x.x..x....xx..xx.x....x.xxx.x.xx...x.xxxxxxx...xx.xxxxxxxxx.....xx...x..x..xxxxxxx.x.....xx...xx...xx.xxx...x.xxxxx.x...xx.......x.xx.x.xx...x..x..xx..x....xxxxxxxxx...xxxx..xx.xx.x...x...x..xxx..x.x.x..xx.xx..x....x..xx.xxx.xxx..xx...xx.xxxx.xx.x.xx..xxx.x..x.xx.xx.xxx...xxxx.x.x...xx....xxxx..x.xx.x.x.xx.x...xxx.x..xxxx.x.x.xxx.xxx.xx...x...x..xxx.x.xxxxxx......x.xx.xxxxx.x..x.xx.....xxx.x.x......xx....x.x.x.....xx...xxxxx.x.xxxx.x.xxx..x.xx.xxxx..xxxxx.x....x....xxx.x....xxxxx.xxxx.x.xxx...xx...x..x.xxx...x.x...xxxx.x.x...xxxxx.xxx.x.....xx..xx.xx......x.x..xx.x..xx.x.x.x..x.x...x.xx.x.x..x.xx.x.x....xx....xxxxx..x........xxxx..xxx.x.xx.xx..x.x...xx.x....xxxx..xx.x...xxx..xxx.x..x....x..xx..x.x.x...x.x..x..xxxxxxxx.xx.xxx.x.x..x.xx.....xx.xx.x...xxx....x...x..x.x..x..xx...x..xxx.x...x.xx...x.xx.x....x.xxxxxx.xxx..x.x..x.x.xx.xx..xxxxxx.x..xx.....x...x...xx.xxx.xx.......x.xx.x..xxxxxx..x..xx.xxxx.x.xxxxx..x.xx.xxxx.x..xxxxxx.x..xxx..x..x..x.xx..x..x.x.xxx.x.x.x.x...x.x.x....xx.xxxx.....xxxx...x....xxx.....xx.x...xx..xx...x.xx.xxxxx..xxx..x.....xxxxxx...........x.x..xxxx..x...xxx...x.x..xxx.x.x.xxxxxx.x.xx....
OK: Passed 1000 test(s).
===> Testing prop_hermes_backend_redis_channel:prop_rank_for_topic_strictly_monotonic()
!
Failed: After 1 test(s).
An exception was raised: error:{case_clause,{error,{hermes_backend_redis,{bad_return,{{hermes_backend_redis_app,start,[normal,[]]},{'EXIT',{bad_name,[{hermes_backend_redis_app,priv_dir,0,[{file,[47,85,115,101,114,115,47,106,111,104,110,47,103,105,116,47,104,101,114,109,101,115,47,95,98,117,105,108,100,47,116,101,115,116,47,108,105,98,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,47,115,114,99,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,95,97,112,112,46,101,114,108]},{line,16}]},{hermes_backend_redis_app,read_lua,1,[{file,[47,85,115,101,114,115,47,106,111,104,110,47,103,105,116,47,104,101,114,109,101,115,47,95,98,117,105,108,100,47,116,101,115,116,47,108,105,98,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,47,115,114,99,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,95,97,112,112,46,101,114,108]},{line,23}]},{hermes_backend_redis_app,'-upload_lua_scripts/0-lc$^0/1-0-',1,[{file,[47,85,115,101,114,115,47,106,111,104,110,47,103,105,116,47,104,101,114,109,101,115,47,95,98,117,105,108,100,47,116,101,115,116,47,108,105,98,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,47,115,114,99,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,95,97,112,112,46,101,114,108]},{line,35}]},{hermes_backend_redis_app,upload_lua_scripts,0,[{file,[47,85,115,101,114,115,47,106,111,104,110,47,103,105,116,47,104,101,114,109,101,115,47,95,98,117,105,108,100,47,116,101,115,116,47,108,105,98,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,47,115,114,99,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,95,97,112,112,46,101,114,108]},{line,35}]},{hermes_backend_redis_app,start,2,[{file,[47,85,115,101,114,115,47,106,111,104,110,47,103,105,116,47,104,101,114,109,101,115,47,95,98,117,105,108,100,47,116,101,115,116,47,108,105,98,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,47,115,114,99,47,104,101,114,109,101,115,95,98,97,99,107,101,110,100,95,114,101,100,105,115,95,97,112,112,46,101,114,108]},{line,45}]},{application_master,start_it_old,4,[{file,[97,112,112,108,105,99,97,116,105,111,110,95,109,97,115,116,101,114,46,101,114,108]},{line,273}]}]}}}}}}}.
Stacktrace: [{prop_hermes_backend_redis_channel,setup,0,
                 [{file,
                      "/Users/john/git/hermes/apps/hermes_backend_redis/test/prop_hermes_backend_redis_channel.erl"},
                  {line,199}]},
             {prop_hermes_backend_redis_channel,
                 '-prop_rank_for_topic_strictly_monotonic/0-fun-2-',1,
                 [{file,
                      "/Users/john/git/hermes/apps/hermes_backend_redis/test/prop_hermes_backend_redis_channel.erl"},
                  {line,50}]}].
[]

Shrinking (0 time(s))
[]

The priv dir for my application hermes_backend_redis is failing to be found despite it being present:

 ls _build/test/lib/hermes_backend_redis/priv
post_message.lua    read_messages.lua

Furthermore, if I enter the shell as test I can retrieve priv_dir as expected:

1> code:priv_dir(hermes_backend_redis).
"/Users/john/git/hermes/_build/test/lib/hermes_backend_redis/priv"
2> code:get_path().
["/Users/john/git/hermes/_build/test/lib/hermes/ebin",
 "/Users/john/git/hermes/_build/test/lib/hermes_web/ebin",
 "/Users/john/git/hermes/_build/test/lib/hermes_backend_redis/test",
 "/Users/john/git/hermes/_build/test/lib/hermes_backend_redis/ebin",
 "/Users/john/git/hermes/_build/test/lib/hermes_common/ebin",
 "/Users/john/git/hermes/_build/test/lib/hermes_stat/ebin",
 "/Users/john/git/hermes/_build/test/lib/hermes_config/ebin",
 "/Users/john/git/hermes/_build/test/lib/gun/ebin",
 "/Users/john/git/hermes/_build/test/lib/hackney/ebin",
 "/Users/john/git/hermes/_build/test/lib/proper/ebin",
 "/Users/john/git/hermes/_build/default/lib/elli/ebin",
 "/Users/john/git/hermes/_build/default/lib/elli_websocket/ebin",
 "/Users/john/git/hermes/_build/default/lib/eredis/ebin",
 "/Users/john/git/hermes/_build/default/lib/jiffy/ebin",
 "/Users/john/git/hermes/_build/default/lib/lager/ebin",
 "/Users/john/git/hermes/_build/default/lib/poolboy/ebin",
 "/Users/john/git/hermes/_build/default/lib/recon/ebin",
 "/Users/john/git/hermes/_build/default/lib/statsderl/ebin",
 "/Users/john/git/hermes/_build/default/lib/uuid/ebin",
 "/Users/john/git/hermes/_build/default/lib/vmstats/ebin",
 "/Users/john/git/hermes/_build/test/lib/certifi/ebin",
 "/Users/john/git/hermes/_build/test/lib/cowlib/ebin",
 "/Users/john/git/hermes/_build/test/lib/idna/ebin",
 "/Users/john/git/hermes/_build/test/lib/metrics/ebin",
 "/Users/john/git/hermes/_build/test/lib/mimerl/ebin",
 "/Users/john/git/hermes/_build/test/lib/ranch/ebin",
 "/Users/john/git/hermes/_build/test/lib/ssl_verify_fun/ebin",
 "/Users/john/git/hermes/_build/default/lib/goldrush/ebin",
 [...]|...]
pulltab commented 7 years ago

I should note that the hermes_backend_redis application is being started directly from the test via application:ensure_all_started in the proper test definition.

ferd commented 7 years ago

I tried to reproduce this but was not able to, at least with the app at the top level. Based on:

priv_dir() ->
    case code:priv_dir(hermes_backend_redis) of
        {error, Reason} ->
            lager:error("Failed to find priv dir!"),
            error(Reason);
        Priv ->
            Priv
    end.

that you had shown me on slack, there's no reason why this wouldn't work (no error in the app name) now and I was doing a similar thing.

I'm guessing your project is private, but is there any reproducible case you could provide for me to play with?

pulltab commented 7 years ago

Thanks for looking into this @ferd. Sorry for the late response.

The repo is private, but I am working on getting you temp access.

pulltab commented 7 years ago

@ferd You have been given read-only access, let me know if you have any issues accessing the repository.

I will send you a DM with the URL just in case it was lost in the noise.