test_module_paths.py
114 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 os | ||||
import shutil | ||||
import sys | ||||
import tempfile | ||||
from os.path import join, abspath, split | ||||
from IPython.testing.tools import make_tempfile | ||||
import IPython.utils.module_paths as mp | ||||
Matthias Bussonnier
|
r21352 | import nose.tools as nt | ||
Jörgen Stenarson
|
r4937 | env = os.environ | ||
TEST_FILE_PATH = split(abspath(__file__))[0] | ||||
Matthias Bussonnier
|
r24838 | |||
TMP_TEST_DIR = 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... | ||||
os.makedirs(join(TMP_TEST_DIR, "xmod")) | ||||
os.makedirs(join(TMP_TEST_DIR, "nomod")) | ||||
make_empty_file(join(TMP_TEST_DIR, "xmod/__init__.py")) | ||||
make_empty_file(join(TMP_TEST_DIR, "xmod/sub.py")) | ||||
make_empty_file(join(TMP_TEST_DIR, "pack.py")) | ||||
make_empty_file(join(TMP_TEST_DIR, "packpyc.pyc")) | ||||
Thomas Kluyver
|
r7017 | sys.path = [TMP_TEST_DIR] | ||
Jörgen Stenarson
|
r4937 | |||
Matthias Bussonnier
|
r25082 | def teardown_module(): | ||
Jörgen Stenarson
|
r4937 | """Teardown testenvironment for the module: | ||
- Remove tempdir | ||||
Thomas Kluyver
|
r7017 | - 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. | ||||
""" | ||||
nt.assert_in('.',TMP_TEST_DIR) | ||||
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. | ||||
""" | ||||
Jörgen Stenarson
|
r4937 | modpath = join(TMP_TEST_DIR, "xmod", "__init__.py") | ||
Matthias Bussonnier
|
r21352 | nt.assert_equal(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. | ||||
""" | ||||
Jörgen Stenarson
|
r4937 | modpath = join(TMP_TEST_DIR, "xmod", "__init__.py") | ||
Matthias Bussonnier
|
r21352 | nt.assert_equal(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. | ||||
""" | ||||
Jörgen Stenarson
|
r4937 | modpath = join(TMP_TEST_DIR, "xmod", "sub.py") | ||
Matthias Bussonnier
|
r21352 | nt.assert_equal(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 | ||||
""" | ||||
Jörgen Stenarson
|
r4937 | modpath = join(TMP_TEST_DIR, "pack.py") | ||
Matthias Bussonnier
|
r21352 | nt.assert_equal(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) | ||||