60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
# Any copyright is dedicated to the Public Domain.
|
|
# https://creativecommons.org/publicdomain/zero/1.0/
|
|
|
|
import os
|
|
import sys
|
|
|
|
import mozunit
|
|
from mozfile import which
|
|
|
|
here = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
def test_which(monkeypatch):
|
|
cwd = os.path.join(here, "files", "which")
|
|
monkeypatch.chdir(cwd)
|
|
|
|
if sys.platform == "win32":
|
|
import winreg
|
|
|
|
bindir = os.path.join(cwd, "win")
|
|
monkeypatch.setenv("PATH", bindir)
|
|
monkeypatch.setattr(winreg, "QueryValue", (lambda k, sk: None))
|
|
|
|
assert which("foo.exe").lower() == os.path.join(bindir, "foo.exe").lower()
|
|
assert which("foo").lower() == os.path.join(bindir, "foo.exe").lower()
|
|
assert (
|
|
which("foo", exts=[".FOO", ".BAR", "."]).lower()
|
|
== os.path.join(bindir, "foo").lower()
|
|
)
|
|
assert os.environ.get("PATHEXT") != [".FOO", ".BAR"]
|
|
assert which("foo.txt") is None
|
|
|
|
assert which("bar", exts=["."]).lower() == os.path.join(bindir, "bar").lower()
|
|
assert which("baz").lower() == os.path.join(cwd, "baz.exe").lower()
|
|
|
|
registered_dir = os.path.join(cwd, "registered")
|
|
quux = os.path.join(registered_dir, "quux.exe").lower()
|
|
|
|
def mock_registry(key, subkey):
|
|
assert subkey == (
|
|
r"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\quux.exe"
|
|
)
|
|
return quux
|
|
|
|
monkeypatch.setattr(winreg, "QueryValue", mock_registry)
|
|
assert which("quux").lower() == quux
|
|
assert which("quux.exe").lower() == quux
|
|
|
|
else:
|
|
bindir = os.path.join(cwd, "unix")
|
|
monkeypatch.setenv("PATH", bindir)
|
|
assert which("foo") == os.path.join(bindir, "foo")
|
|
assert which("baz") is None
|
|
assert which("baz", exts=[".EXE"]) is None
|
|
assert "PATHEXT" not in os.environ
|
|
assert which("file") is None
|
|
|
|
|
|
if __name__ == "__main__":
|
|
mozunit.main()
|