Ensure relpath is executed on paths in the same drive (#7335)
authorAdrien Ferrand <adferrand@users.noreply.github.com>
Fri, 23 Aug 2019 19:53:31 +0000 (21:53 +0200)
committerBrad Warren <bmw@users.noreply.github.com>
Fri, 23 Aug 2019 19:53:30 +0000 (12:53 -0700)
commit0324d1740e987922673593607f2aabc195253d6e
treec48927a8b1b490a49f25b0496b73d8af18f28fa0
parent74e6736c79ac76dd34cda2f7bfdc3021efe2fb5e
Ensure relpath is executed on paths in the same drive (#7335)

On Windows you can have several drives (`C:`, `D:`, ...), that is the roughly (really roughly) equivalent of mount points, since each drive is usually associated to a specific physical partition.

So you can have paths like `C:\one\path`, `D:\another\path`.

In parallel, `os.path.relpath(path, start='.')` calculates the relative path between the given `path` and a `start` path (current directory if not provided). In recent versions of Python, `os.path.relpath` will fail if `path` and `start` are not on the same drive, because a relative path between two paths like `C:\one\path`, `D:\another\path` is not possible.

In saw unit tests failing because of this in two locations. This occurs when the certbot codebase that is tested is on a given drive (like `D:`) while the default temporary directory used by `tempfile` is on another drive (most of the time located in `C:` drive).

This PR fixes that.
certbot-nginx/certbot_nginx/tests/parser_test.py
certbot/tests/cli_test.py