Author carljm
Recipients carljm
Date 2021-03-19.21:21:09
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
In general it seems the CPython test suite takes care to skip instead of failing networked tests when the network is unavailable (c.f. `support.transient_internet` test helper).

In this case of the 5 FTP tests in `test_urllib2net` (that is, `test_ftp`, `test_ftp_basic`, `test_ftp_default_timeout`, `test_ftp_no_timeout`, and `test_ftp_timeout`), even though they use `support_transient_internet`, they still fail if the network is unavailable.

The reason is that they make calls which end up raising an exception in the form `URLError("ftp error: OSError(101, 'Network is unreachable')"` -- the original OSError is flattened into the exception string message, but is otherwise not in the exception args. This means that `transient_network` does not detect it as a suppressable exception.

It seems like many uses of `URLError` in urllib pass the original `OSError` directly to `URLError.__init__()`, which means it ends up in `args` and the unwrapping code in `transient_internet` is able to find the original `OSError`. But the ftp code instead directly interpolates the `OSError` into a new message string.
Date User Action Args
2021-03-19 21:21:09carljmsetrecipients: + carljm
2021-03-19 21:21:09carljmsetmessageid: <>
2021-03-19 21:21:09carljmlinkissue43564 messages
2021-03-19 21:21:09carljmcreate