test_module_paths.py
111 lines
| 3.3 KiB
| text/x-python
|
PythonLexer
Jörgen Stenarson
|
r4937 | # encoding: utf-8 | ||
Thomas Kluyver
|
r11127 | """Tests for IPython.utils.module_paths.py""" | ||
Jörgen Stenarson
|
r4937 | |||
#----------------------------------------------------------------------------- | ||||
Matthias BUSSONNIER
|
r5390 | # Copyright (C) 2008-2011 The IPython Development Team | ||
Jörgen Stenarson
|
r4937 | # | ||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
import shutil | ||||
import sys | ||||
import tempfile | ||||
dswij
|
r26140 | from pathlib import Path | ||
Jörgen Stenarson
|
r4937 | |||
from IPython.testing.tools import make_tempfile | ||||
import IPython.utils.module_paths as mp | ||||
Matthias Bussonnier
|
r21352 | import nose.tools as nt | ||
dswij
|
r26140 | TEST_FILE_PATH = Path(__file__).resolve().parent | ||
Matthias Bussonnier
|
r24838 | |||
dswij
|
r26140 | TMP_TEST_DIR = Path(tempfile.mkdtemp(suffix="with.dot")) | ||
Jörgen Stenarson
|
r4937 | # | ||
# Setup/teardown functions/decorators | ||||
# | ||||
old_syspath = sys.path | ||||
def make_empty_file(fname): | ||||
Mickaël Schoentgen
|
r24897 | open(fname, 'w').close() | ||
Jörgen Stenarson
|
r4937 | |||
Matthias Bussonnier
|
r25082 | def setup_module(): | ||
Jörgen Stenarson
|
r4937 | """Setup testenvironment for the module: | ||
""" | ||||
# Do not mask exceptions here. In particular, catching WindowsError is a | ||||
# problem because that exception is only defined on Windows... | ||||
dswij
|
r26140 | Path(TMP_TEST_DIR / "xmod").mkdir(parents=True) | ||
Path(TMP_TEST_DIR / "nomod").mkdir(parents=True) | ||||
make_empty_file(TMP_TEST_DIR / "xmod/__init__.py") | ||||
make_empty_file(TMP_TEST_DIR / "xmod/sub.py") | ||||
make_empty_file(TMP_TEST_DIR / "pack.py") | ||||
make_empty_file(TMP_TEST_DIR / "packpyc.pyc") | ||||
sys.path = [str(TMP_TEST_DIR)] | ||||
Jörgen Stenarson
|
r4937 | |||
Matthias Bussonnier
|
r25082 | def teardown_module(): | ||
Jörgen Stenarson
|
r4937 | """Teardown testenvironment for the module: | ||
Matthias Bussonnier
|
r26419 | - Remove tempdir | ||
- restore sys.path | ||||
Jörgen Stenarson
|
r4937 | """ | ||
# Note: we remove the parent test dir, which is the root of all test | ||||
# subdirs we may have created. Use shutil instead of os.removedirs, so | ||||
# that non-empty directories are all recursively removed. | ||||
shutil.rmtree(TMP_TEST_DIR) | ||||
Thomas Kluyver
|
r7017 | sys.path = old_syspath | ||
Jörgen Stenarson
|
r4937 | |||
Matthias Bussonnier
|
r24838 | def test_tempdir(): | ||
""" | ||||
Ensure the test are done with a temporary file that have a dot somewhere. | ||||
""" | ||||
dswij
|
r26140 | nt.assert_in(".", str(TMP_TEST_DIR)) | ||
Matthias Bussonnier
|
r24838 | |||
Jörgen Stenarson
|
r4937 | def test_find_mod_1(): | ||
Alyssa Whitwell
|
r24460 | """ | ||
Search for a directory's file path. | ||||
Expected output: a path to that directory's __init__.py file. | ||||
""" | ||||
dswij
|
r26140 | modpath = TMP_TEST_DIR / "xmod" / "__init__.py" | ||
nt.assert_equal(Path(mp.find_mod("xmod")), modpath) | ||||
Jörgen Stenarson
|
r4937 | |||
def test_find_mod_2(): | ||||
Alyssa Whitwell
|
r24460 | """ | ||
Search for a directory's file path. | ||||
Expected output: a path to that directory's __init__.py file. | ||||
TODO: Confirm why this is a duplicate test. | ||||
""" | ||||
dswij
|
r26140 | modpath = TMP_TEST_DIR / "xmod" / "__init__.py" | ||
nt.assert_equal(Path(mp.find_mod("xmod")), modpath) | ||||
Jörgen Stenarson
|
r4937 | |||
def test_find_mod_3(): | ||||
Alyssa Whitwell
|
r24460 | """ | ||
Search for a directory + a filename without its .py extension | ||||
Expected output: full path with .py extension. | ||||
""" | ||||
dswij
|
r26140 | modpath = TMP_TEST_DIR / "xmod" / "sub.py" | ||
nt.assert_equal(Path(mp.find_mod("xmod.sub")), modpath) | ||||
Jörgen Stenarson
|
r4937 | |||
def test_find_mod_4(): | ||||
Alyssa Whitwell
|
r24460 | """ | ||
Search for a filename without its .py extension | ||||
Expected output: full path with .py extension | ||||
""" | ||||
dswij
|
r26140 | modpath = TMP_TEST_DIR / "pack.py" | ||
nt.assert_equal(Path(mp.find_mod("pack")), modpath) | ||||
Jörgen Stenarson
|
r4937 | |||
def test_find_mod_5(): | ||||
Alyssa Whitwell
|
r24460 | """ | ||
Search for a filename with a .pyc extension | ||||
Expected output: TODO: do we exclude or include .pyc files? | ||||
""" | ||||
nt.assert_equal(mp.find_mod("packpyc"), None) | ||||