<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Code paths, most likely. Print the value of code:get_path() just
      before the error and see if it contains "/path/to/childe/ebin".</p>
    <p>IIRC, it is _not_ enough for the code path to contain "./ebin",
      even if this would point to the correct directory. The name of the
      application must be literally present in the directory name in the
      code path in order for code:priv_dir to find the application.</p>
    <p>Regards,<br>
      Magnus<br>
    </p>
    <div class="moz-cite-prefix">On 20/02/2019 10:59, Hugo Mills wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:20190220105932.GE317@carfax.org.uk">
      <pre class="moz-quote-pre" wrap="">   Ping? Anyone got any ideas at all how to go about diagnosing this?

   Hugo.

On Sun, Feb 17, 2019 at 06:47:56PM +0000, Hugo Mills wrote:
</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">   I've been trying to set up a basic CI system for a few projects.
The problem is, I'm consistently getting test failures when running
tests through the CI, where those tests pass perfectly well on a
manual run.

   The test failure is:

=== Ended at 2019-02-17 15:36:20
=== Location: [{filename,join,446},
              {stdlib_SUITE,run_suite,37},
              {test_server,ts_tc,1545},
              {test_server,run_test_case_eval1,1063},
              {test_server,run_test_case_eval,995}]
=== Reason: no function clause matching 
                 filename:join({error,bad_name},"stdlib") (filename.erl, line 446)
  in function  stdlib_SUITE:run_suite/3 (test/stdlib_SUITE.erl, line 37)
  in call from test_server:ts_tc/3 (test_server.erl, line 1545)
  in call from test_server:run_test_case_eval1/6 (test_server.erl, line 1063)
  in call from test_server:run_test_case_eval/9 (test_server.erl, line 995)


which comes from this line of code in my CT text fixture:

    BaseContext =
        #{"$module_path"
             => [filename:join(code:priv_dir(childe), "stdlib")],
          "$data_path"
             => [?config(data_dir, Conf)]},

   I can run this on my main dev machines ("make ct" -- I'm using
erlang.mk) quite happily, and it passes the test. I can run it
manually on the CI worker machine and it passes the test. If I run it
through a CI system, it fails with the above error.

   There's clearly _something_ odd about the environment that the CI
system is running in, but I'm damned if I can tell what it is. It's
not specific to the CI system, either: I've seen this with Buildbot,
yesterday, and now GoCD today.

   Why would code:priv_dir/1 be failing in the CI when it's working in
an interactive shell?

   My dev machines are running 21.2.2 from Debian; the CI is running
21.2.5 from Erlang Solutions, but that's not the issue, because I can
do a manual run on the CI box, and it works.

   Thanks for any ideas,
   Hugo.

</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
    </blockquote>
  </body>
</html>