in reply to Testing a library that accesses an Oracle Database

G'day docdurdee,

The "DYLD_LIBRARY_PATH" (from $ENV{DYLD_LIBRARY_PATH}) looks wrong. Should that be "LD_LIBRARY_PATH" (i.e. no leading "DY")?

See also: "DBD::Oracle - Oracle Environment Variables".

— Ken

Replies are listed 'Best First'.
Re^2: Testing a library that accesses an Oracle Database
by docdurdee (Scribe) on Sep 22, 2016 at 14:54 UTC
    The DYLD_LIBRARY_PATH is OS X related. I tried setting LD_LIBRARY_PATH, but that doesn't work.

      Fair enough. I'm also using Mac OS X (10.10.3) but, as I don't have local access to Oracle, I'm unable to run any tests for you. Here's a few more thoughts and suggestions.

      Using backticks (as shown in your update) will not be helpful. The command within the backticks will be executed in a new process environment which will be discarded (and the old process environment restored) when completed. E.g.

      $ XXX=unset perl -E 'say "$$: XXX=$ENV{XXX}"; print `export XXX=xxx; e +cho \$\$: XXX=\$XXX`; say "$$: XXX=$ENV{XXX}"' 3494: XXX=unset 3495: XXX=xxx 3494: XXX=unset

      Also from your update, if setting $ENV{whatever} in a BEGIN block has no apparent effect, then that BEGIN block is possibly being reached too late. Try putting that BEGIN block earlier in the code. Remember, BEGIN blocks are executed in FIFO order, and use statements are

      ... exactly equivalent to

      BEGIN { require Module; Module->import( LIST ); }

      Consider writing env.t (or similar) with lines like:

      ok $ENV{whatever} eq $whatever_expected_value, ...

      Try setting environment values on the command line (like I did with XXX=unset above) prior to running your tests. I'm not suggesting this as a solution, but it may provide some useful feedback. You can set multiple values, e.g.

      DYLD_LIBRARY_PATH=... ORACLE_HOME=... make test

      Check if Dist::Zilla is performing actions based on what it considers to be tainted data (see perlsec). This could affect your environment.

      I'll also front-page this thread to try to get you a bit more coverage.

      — Ken

        Thank you, Ken! Working through your suggestions will certainly help clear up my understanding.
      Actually, either the LD_LIBRARY_PATH or DYLD_LIBRARY_PATH will work as long as they are actually set in the environment. Thanks! Following Corion's suggestion, I was able to get it to work with the restart parameter. See my response to Corion's comment for details.