Skip to content

Commit 4ebe4fa

Browse files
committed
Add tests for appdirs._get_win_folder variant
1 parent ecec9f0 commit 4ebe4fa

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

tests/unit/test_appdirs.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
import posixpath
44
import sys
5+
import types
56

67
import pretend
78

@@ -300,3 +301,78 @@ def test_user_config_dir_linux_home_slash(self, monkeypatch):
300301
monkeypatch.setattr(sys, "platform", "linux2")
301302

302303
assert appdirs.user_config_dir("pip") == "/.config/pip"
304+
305+
306+
class TestGetWinFolder:
307+
308+
def test_win_folder_ctypes(self, monkeypatch):
309+
if sys.platform != 'win32':
310+
return
311+
312+
@pretend.call_recorder
313+
def _get_win_folder_from_registry(csidl_name):
314+
return "return-value-from-registry"
315+
316+
@pretend.call_recorder
317+
def _get_win_folder_with_ctypes(csidl_name):
318+
return "return-value-from-ctypes"
319+
320+
monkeypatch.setitem(sys.modules, 'ctypes', types.ModuleType('ctypes'))
321+
monkeypatch.setattr(
322+
appdirs,
323+
"_get_win_folder_from_registry",
324+
_get_win_folder_from_registry,
325+
raising=False,
326+
)
327+
monkeypatch.setattr(
328+
appdirs,
329+
"_get_win_folder_with_ctypes",
330+
_get_win_folder_with_ctypes,
331+
raising=False,
332+
)
333+
334+
assert (
335+
appdirs._get_win_folder("place-holder") ==
336+
"return-value-from-ctypes"
337+
)
338+
assert (
339+
_get_win_folder_with_ctypes.calls ==
340+
[pretend.call("place-holder")]
341+
)
342+
assert _get_win_folder_from_registry.calls == []
343+
344+
def test_win_folder_registry(self, monkeypatch):
345+
if sys.platform != 'win32':
346+
return
347+
348+
@pretend.call_recorder
349+
def _get_win_folder_from_registry(csidl_name):
350+
return "return-value-from-registry"
351+
352+
@pretend.call_recorder
353+
def _get_win_folder_with_ctypes(csidl_name):
354+
return "return-value-from-ctypes"
355+
356+
monkeypatch.setitem(sys.modules, 'ctypes', None)
357+
monkeypatch.setattr(
358+
appdirs,
359+
"_get_win_folder_from_registry",
360+
_get_win_folder_from_registry,
361+
raising=False,
362+
)
363+
monkeypatch.setattr(
364+
appdirs,
365+
"_get_win_folder_with_ctypes",
366+
_get_win_folder_with_ctypes,
367+
raising=False,
368+
)
369+
370+
assert (
371+
appdirs._get_win_folder("place-holder") ==
372+
"return-value-from-registry"
373+
)
374+
assert _get_win_folder_with_ctypes.calls == []
375+
assert (
376+
_get_win_folder_from_registry.calls ==
377+
[pretend.call("place-holder")]
378+
)

0 commit comments

Comments
 (0)