https://bz.apache.org/SpamAssassin/show_bug.cgi?id=8067

            Bug ID: 8067
           Summary: Test failures on older perls on Windows when PATH
                    contains a directory that does not exist
           Product: Spamassassin
           Version: 4.0.0
          Hardware: PC
                OS: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Regression Tests
          Assignee: dev@spamassassin.apache.org
          Reporter: sid...@sidney.com
  Target Milestone: Undefined

Steps to reproduce:

On Windows using Strawberry Perl 5.22 or older, add a non-existent directory to
PATH, then run the SpamAssassin tests. They all fail with a "No such file or
directory" error thrown from t/SATest.pm line 80.

Analysis:

In Strawberry perl 5.22 and older, Cwd::realpath($path) throws a "No such file
or directory" error when $path is not a file or directory that exists. In perl
5.24 and later, this would return undef. In tests on other platforms I have
only seen it return a string of the non-existent path instead of undef or an
error. The perldoc for the realpath function seems to me to be ambiguous about
which behavior is correct.

The only place we currently call Cwd::realpath is in t/SATest.pm in code that
only runs under Windows to clean PATH. The effect of this behavior is that with
Strawberry Perl 5.22 and older, if the PATH environment contains a directory
that does not exist, all tests fail when SATest.pm gets the error.

Since in both places where Cwd::realpath is called, the code then checks if the
result is a directory that exists and discards the result if it does not, a
simple fix is to do the check if the path is an existing directory before the
call to Cwd::realpath.

Since this only effects tests, it can be committed during RTC without a vote.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to