[Python-Dev] More joy with test_strptime

Tim Peters tim.peters at gmail.com
Mon Jul 12 05:02:50 CEST 2004


FWIW, this is a minimal failing set of tests to run:

test___all__
test_site
test_strptime

Remove either of the first two, and test_strptime passes here.  Leave
them both in, and test_strptime fails here, and whether or not .pyc
files are deleted first.

If I put "return" as the first line of test_site.py's test_addpackage
and test_addsitedir, the problem goes away.  I don't know why, but
believe that then no instance of class PthFile ever gets created.

I don't know whether it's relevant, but PthFile.cleanup's code like:

        try:
            os.remove(self.file_path)
        except OSError:
            pass

is almost never a correct thing to do, because it hides errors if the
code is confused.  If the intent is to ensure that the file doesn't
exist, much better is

    if os.path.exists(self.file_path):
        os.remove(self.file_path)

Then that raises an error if the code incorrectly (on Windows!) tries
to delete a file that's still open.  But I don't think that's
happening here.

If I change PthFile.__init__'s

        self.imported = "time"

to

        self.imported = "socket"

the problem also goes away.  Ditto if I change it to

        self.imported = "re"

etc.  So now I'm suspecting that the tricks in PthFile are managing to
create a second instance of the time module not related to the
instance of the time module test_strptime is monkey-patching with its

            time.tzname = (tz_name, tz_name)
            time.daylight = 1

tricks.  But if so, I'm at a loss to explain why this would only
happen on Windows.  *Is* it the case that test_strptime is only
failing on Windows?


More information about the Python-Dev mailing list