##// END OF EJS Templates
Remove iptest and other Nose-dependent code
Remove iptest and other Nose-dependent code

File last commit:

r27042:360df2b6
r27042:360df2b6
Show More
test_path.py
502 lines | 15.7 KiB | text/x-python | PythonLexer
Brian Granger
Added tests for the new get_ipython_dir and get_security_dir ...
r1617 # encoding: utf-8
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 """Tests for IPython.utils.path.py"""
Brian Granger
Added tests for the new get_ipython_dir and get_security_dir ...
r1617
MinRK
test ensure_dir_exists
r16489 # Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
Robert Kern
BUG: Allow %magic argument filenames with spaces to be specified with quotes under win32.
r4688
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843 import os
import shutil
import sys
import tempfile
Matthias Bussonnier
Refactor test to get rid of deprecation....
r23706 import unittest
David Wolever
py3 doesn't have nested, py2.6 doesn't have multiple context managers
r11653 from contextlib import contextmanager
Srinivas Reddy Thatiparthy
remove python2 specific code
r23064 from unittest.mock import patch
Matthias Bussonnier
couple of unused import
r23575 from os.path import join, abspath
Srinivas Reddy Thatiparthy
remove dead people
r23092 from imp import reload
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843
Samuel Gaist
[utils][tests][path] Remove the use of nt...
r26923 import pytest
Brian Granger
Added tests for the new get_ipython_dir and get_security_dir ...
r1617
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843 import IPython
Min RK
update dependency imports...
r21253 from IPython import paths
Fernando Perez
Added new Tee class, that works much like Unix's 'tee' command....
r2436 from IPython.testing import decorators as dec
Thomas Kluyver
Use onlyif_unicode_paths in utils tests
r12166 from IPython.testing.decorators import (skip_if_not_win32, skip_win32,
Matthias Bussonnier
Cleanup unused imports.
r25335 onlyif_unicode_paths,
Nicholas Bollweg
add skip_win32_py38 decorator, skip another test
r25224 skip_win32_py38,)
Matthias Bussonnier
Cleanup unused imports.
r25335 from IPython.testing.tools import make_tempfile
Thomas Kluyver
Remove unused imports in IPython.utils
r11127 from IPython.utils import path
Takafumi Arakaki
Move globlist and its test under utils.path
r8014 from IPython.utils.tempdir import TemporaryDirectory
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843
Nicholas Bollweg
add skip_win32_py38 decorator, skip another test
r25224
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843 # Platform-dependent imports
Jorgen Stenarson
Changed tests to use decorator to setup, teardown environment
r1750 try:
Nicholas Bollweg
skip %HOME% 3.8 test on windows, update docs for get_home_dir
r25223 import winreg as wreg
Jorgen Stenarson
Changed tests to use decorator to setup, teardown environment
r1750 except ImportError:
Srinivas Reddy Thatiparthy
remove dead people
r23092 #Fake _winreg module on non-windows platforms
import types
wr_name = "winreg"
sys.modules[wr_name] = types.ModuleType(wr_name)
Thomas Kluyver
Update imports for Python 3...
r13354 try:
Srinivas Reddy Thatiparthy
remove dead people
r23092 import winreg as wreg
Thomas Kluyver
Update imports for Python 3...
r13354 except ImportError:
Srinivas Reddy Thatiparthy
remove dead people
r23092 import _winreg as wreg
Thomas Kluyver
Update imports for Python 3...
r13354 #Add entries that needs to be stubbed by the testing code
(wreg.OpenKey, wreg.QueryValueEx,) = (None, None)
Bernardo B. Marques
remove all trailling spaces
r4872
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843 #-----------------------------------------------------------------------------
# Globals
#-----------------------------------------------------------------------------
env = os.environ
TMP_TEST_DIR = tempfile.mkdtemp()
HOME_TEST_DIR = join(TMP_TEST_DIR, "home_test_dir")
Jorgen Stenarson
Some white space fixing, and comments
r1804 #
# Setup/teardown functions/decorators
Jorgen Stenarson
Moved skip decorator to testing and created similar ones for OSX and linux, create delete testdirs in module setup/teardown
r1803 #
Matthias Bussonnier
Use module level setup and teardown compatible both nose and pytest....
r25082 def setup_module():
Jorgen Stenarson
Add doc strings to all functions
r1805 """Setup testenvironment for the module:
Bernardo B. Marques
remove all trailling spaces
r4872
Matthias Bussonnier
reformat docstring in IPython utils
r26419 - Adds dummy home dir tree
Jorgen Stenarson
Add doc strings to all functions
r1805 """
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843 # Do not mask exceptions here. In particular, catching WindowsError is a
# problem because that exception is only defined on Windows...
Thomas Kluyver
Move tests for IPython.paths
r21041 os.makedirs(os.path.join(HOME_TEST_DIR, 'ipython'))
Jorgen Stenarson
Moved skip decorator to testing and created similar ones for OSX and linux, create delete testdirs in module setup/teardown
r1803
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505
Matthias Bussonnier
Use module level setup and teardown compatible both nose and pytest....
r25082 def teardown_module():
Jorgen Stenarson
Add doc strings to all functions
r1805 """Teardown testenvironment for the module:
Bernardo B. Marques
remove all trailling spaces
r4872
Matthias Bussonnier
reformat docstring in IPython utils
r26419 - Remove dummy home dir tree
Jorgen Stenarson
Add doc strings to all functions
r1805 """
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843 # 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)
Jorgen Stenarson
Moved skip decorator to testing and created similar ones for OSX and linux, create delete testdirs in module setup/teardown
r1803
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505
Jorgen Stenarson
Changed tests to use decorator to setup, teardown environment
r1750 def setup_environment():
Bernardo B. Marques
remove all trailling spaces
r4872 """Setup testenvironment for some functions that are tested
Jorgen Stenarson
Add doc strings to all functions
r1805 in this module. In particular this functions stores attributes
and other things that we need to stub in some test functions.
Bernardo B. Marques
remove all trailling spaces
r4872 This needs to be done on a function level and not module level because
Jorgen Stenarson
Add doc strings to all functions
r1805 each testfunction needs a pristine environment.
"""
Jorgen Stenarson
Changed tests to use decorator to setup, teardown environment
r1750 global oldstuff, platformstuff
MinRK
don't use XDG path on OS X...
r7086 oldstuff = (env.copy(), os.name, sys.platform, path.get_home_dir, IPython.__file__, os.getcwd())
Jorgen Stenarson
Changed tests to use decorator to setup, teardown environment
r1750
def teardown_environment():
MinRK
docstring typo
r11500 """Restore things that were remembered by the setup_environment function
Jorgen Stenarson
Add doc strings to all functions
r1805 """
MinRK
don't use XDG path on OS X...
r7086 (oldenv, os.name, sys.platform, path.get_home_dir, IPython.__file__, old_wd) = oldstuff
Robert Kern
BUG: Allow %magic argument filenames with spaces to be specified with quotes under win32.
r4688 os.chdir(old_wd)
MinRK
use tempdir if no usable ipython_dir is found...
r4475 reload(path)
Bernardo B. Marques
remove all trailling spaces
r4872
Thomas Kluyver
Fix tests in utils
r13373 for key in list(env):
Jorgen Stenarson
Changed tests to use decorator to setup, teardown environment
r1750 if key not in oldenv:
del env[key]
env.update(oldenv)
if hasattr(sys, 'frozen'):
del sys.frozen
Nikita Kniazev
Remove iptest and other Nose-dependent code
r27042
Jorgen Stenarson
Add doc strings to all functions
r1805 # Build decorator that uses the setup_environment/setup_environment
Nikita Kniazev
Remove iptest and other Nose-dependent code
r27042 @pytest.fixture
def environment():
setup_environment()
yield
teardown_environment()
with_environment = pytest.mark.usefixtures("environment")
Jorgen Stenarson
Changed tests to use decorator to setup, teardown environment
r1750
Jorgen Stenarson
skipping windows specific tests of get_home_dir on other platforms
r1820 @skip_if_not_win32
Fernando Perez
Added new Tee class, that works much like Unix's 'tee' command....
r2436 @with_environment
Jorgen Stenarson
Fix for py2exe when using uncompressed lib/
r1745 def test_get_home_dir_1():
Jorgen Stenarson
Added tests test_get_home_dir_3-test_get_home_dir_9...
r1746 """Testcase for py2exe logic, un-compressed lib
"""
MinRK
update tests for frozen dists
r11502 unfrozen = path.get_home_dir()
Jorgen Stenarson
Some reformatting of code
r1796 sys.frozen = True
Bernardo B. Marques
remove all trailling spaces
r4872
Jorgen Stenarson
Added tests test_get_home_dir_3-test_get_home_dir_9...
r1746 #fake filename for IPython.__init__
Jorgen Stenarson
Fixed errors in testcases specific to py2exe after Fernando's patch
r1855 IPython.__file__ = abspath(join(HOME_TEST_DIR, "Lib/IPython/__init__.py"))
Bernardo B. Marques
remove all trailling spaces
r4872
bgranger
Fixing broken tests on win32....
r2513 home_dir = path.get_home_dir()
Matthias Bussonnier
remove some nose from test_paths
r26719 assert home_dir == unfrozen
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505
Jorgen Stenarson
Test for presence before deleting keys from os.environ. Mark two tests...
r1812 @skip_if_not_win32
Fernando Perez
Added new Tee class, that works much like Unix's 'tee' command....
r2436 @with_environment
Jorgen Stenarson
Removing simple test cases for get_home_dir and get_ipython_dir
r1800 def test_get_home_dir_2():
Jorgen Stenarson
Added tests test_get_home_dir_3-test_get_home_dir_9...
r1746 """Testcase for py2exe logic, compressed lib
"""
MinRK
update tests for frozen dists
r11502 unfrozen = path.get_home_dir()
Jorgen Stenarson
Fixing pep-8 conformance issues
r1801 sys.frozen = True
Jorgen Stenarson
Added tests test_get_home_dir_3-test_get_home_dir_9...
r1746 #fake filename for IPython.__init__
Jorgen Stenarson
Fixed errors in testcases specific to py2exe after Fernando's patch
r1855 IPython.__file__ = abspath(join(HOME_TEST_DIR, "Library.zip/IPython/__init__.py")).lower()
Bernardo B. Marques
remove all trailling spaces
r4872
MinRK
allow IPython to run without writable home dir...
r5384 home_dir = path.get_home_dir(True)
Matthias Bussonnier
remove some nose from test_paths
r26719 assert home_dir == unfrozen
Jorgen Stenarson
Added tests test_get_home_dir_3-test_get_home_dir_9...
r1746
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505
Nicholas Bollweg
add skip_win32_py38 decorator, skip another test
r25224 @skip_win32_py38
Fernando Perez
Added new Tee class, that works much like Unix's 'tee' command....
r2436 @with_environment
Jorgen Stenarson
Removing simple test cases for get_home_dir and get_ipython_dir
r1800 def test_get_home_dir_3():
MinRK
defer to stdlib for path.get_home_dir()...
r5383 """get_home_dir() uses $HOME if set"""
Fernando Perez
Fixes for Jorgen's branch in tests to genutils....
r1843 env["HOME"] = HOME_TEST_DIR
MinRK
allow IPython to run without writable home dir...
r5384 home_dir = path.get_home_dir(True)
MinRK
get_home_dir expands symlinks, adjust test accordingly
r6123 # get_home_dir expands symlinks
Matthias Bussonnier
remove some nose from test_paths
r26719 assert home_dir == os.path.realpath(env["HOME"])
Jorgen Stenarson
Fix for py2exe when using uncompressed lib/
r1745
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505
Fernando Perez
Added new Tee class, that works much like Unix's 'tee' command....
r2436 @with_environment
Jorgen Stenarson
Removing simple test cases for get_home_dir and get_ipython_dir
r1800 def test_get_home_dir_4():
MinRK
defer to stdlib for path.get_home_dir()...
r5383 """get_home_dir() still works if $HOME is not set"""
Bernardo B. Marques
remove all trailling spaces
r4872
Jorgen Stenarson
Test for presence before deleting keys from os.environ. Mark two tests...
r1812 if 'HOME' in env: del env['HOME']
MinRK
don't check writability in test for get_home_dir when HOME is undefined...
r7669 # this should still succeed, but we don't care what the answer is
home = path.get_home_dir(False)
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505
Nicholas Bollweg
add skip_win32_py38 decorator, skip another test
r25224 @skip_win32_py38
Fernando Perez
Added new Tee class, that works much like Unix's 'tee' command....
r2436 @with_environment
Jorgen Stenarson
Removing simple test cases for get_home_dir and get_ipython_dir
r1800 def test_get_home_dir_5():
MinRK
defer to stdlib for path.get_home_dir()...
r5383 """raise HomeDirError if $HOME is specified, but not a writable dir"""
env['HOME'] = abspath(HOME_TEST_DIR+'garbage')
MinRK
restore My Documents fallback for get_home_dir on Windows
r5385 # set os.name = posix, to prevent My Documents fallback on Windows
os.name = 'posix'
Samuel Gaist
[utils][tests][path] Remove the use of nt...
r26923 pytest.raises(path.HomeDirError, path.get_home_dir, True)
Fernando Perez
Make last-ditch attempt to find $HOME when environment is broken....
r3373
bgranger
Fixing broken tests on win32....
r2513 # Should we stub wreg fully so we can run the test on all platforms?
@skip_if_not_win32
@with_environment
def test_get_home_dir_8():
"""Using registry hack for 'My Documents', os=='nt'
Bernardo B. Marques
remove all trailling spaces
r4872
bgranger
Fixing broken tests on win32....
r2513 HOMESHARE, HOMEDRIVE, HOMEPATH, USERPROFILE and others are missing.
Jorgen Stenarson
Added tests test_get_home_dir_3-test_get_home_dir_9...
r1746 """
Jorgen Stenarson
Some reformatting of code
r1796 os.name = 'nt'
Fernando Perez
Various fixes for test_genutils under win32, now all tests pass.
r2447 # Remove from stub environment all keys that may be set
for key in ['HOME', 'HOMESHARE', 'HOMEDRIVE', 'HOMEPATH', 'USERPROFILE']:
env.pop(key, None)
Jorgen Stenarson
Added tests test_get_home_dir_3-test_get_home_dir_9...
r1746
Thomas Kluyver
Properly mock winreg functions for test...
r18050 class key:
Matthias Bussonnier
correct patching ?
r25293 def __enter__(self):
pass
Thomas Kluyver
Properly mock winreg functions for test...
r18050 def Close(self):
pass
Matthias Bussonnier
correct patching ?
r25293 def __exit__(*args, **kwargs):
pass
Jorgen Stenarson
Added tests test_get_home_dir_3-test_get_home_dir_9...
r1746
Thomas Kluyver
Properly mock winreg functions for test...
r18050 with patch.object(wreg, 'OpenKey', return_value=key()), \
patch.object(wreg, 'QueryValueEx', return_value=[abspath(HOME_TEST_DIR)]):
home_dir = path.get_home_dir()
Matthias Bussonnier
remove some nose from test_paths
r26719 assert home_dir == abspath(HOME_TEST_DIR)
Jorgen Stenarson
Fix for py2exe when using uncompressed lib/
r1745
MinRK
Merge branch 'tilde-expand-fix'...
r3896 @with_environment
MinRK
don't use XDG path on OS X...
r7086 def test_get_xdg_dir_0():
"""test_get_xdg_dir_0, check xdg_dir"""
MinRK
use XDG_CONFIG_HOME if available...
r3347 reload(path)
MinRK
use tempdir if no usable ipython_dir is found...
r4475 path._writable_dir = lambda path: True
MinRK
use XDG_CONFIG_HOME if available...
r3347 path.get_home_dir = lambda : 'somewhere'
os.name = "posix"
MinRK
don't use XDG path on OS X...
r7086 sys.platform = "linux2"
MinRK
use XDG_CONFIG_HOME if available...
r3347 env.pop('IPYTHON_DIR', None)
env.pop('IPYTHONDIR', None)
env.pop('XDG_CONFIG_HOME', None)
Bernardo B. Marques
remove all trailling spaces
r4872
Matthias Bussonnier
remove some nose from test_paths
r26719 assert path.get_xdg_dir() == os.path.join("somewhere", ".config")
MinRK
use XDG_CONFIG_HOME if available...
r3347
@with_environment
def test_get_xdg_dir_1():
luzpaz
Misc. typo fixes...
r24084 """test_get_xdg_dir_1, check nonexistent xdg_dir"""
MinRK
use XDG_CONFIG_HOME if available...
r3347 reload(path)
path.get_home_dir = lambda : HOME_TEST_DIR
os.name = "posix"
MinRK
don't use XDG path on OS X...
r7086 sys.platform = "linux2"
MinRK
use XDG_CONFIG_HOME if available...
r3347 env.pop('IPYTHON_DIR', None)
env.pop('IPYTHONDIR', None)
env.pop('XDG_CONFIG_HOME', None)
Matthias Bussonnier
remove some nose from test_paths
r26719 assert path.get_xdg_dir() is None
MinRK
use XDG_CONFIG_HOME if available...
r3347
@with_environment
def test_get_xdg_dir_2():
"""test_get_xdg_dir_2, check xdg_dir default to ~/.config"""
reload(path)
path.get_home_dir = lambda : HOME_TEST_DIR
os.name = "posix"
MinRK
don't use XDG path on OS X...
r7086 sys.platform = "linux2"
MinRK
use XDG_CONFIG_HOME if available...
r3347 env.pop('IPYTHON_DIR', None)
env.pop('IPYTHONDIR', None)
env.pop('XDG_CONFIG_HOME', None)
cfgdir=os.path.join(path.get_home_dir(), '.config')
MinRK
don't use XDG path on OS X...
r7086 if not os.path.exists(cfgdir):
os.makedirs(cfgdir)
Bernardo B. Marques
remove all trailling spaces
r4872
Matthias Bussonnier
remove some nose from test_paths
r26719 assert path.get_xdg_dir() == cfgdir
Fernando Perez
Added small test for function that didn't have one. Little cleanups.
r1969
MinRK
don't use XDG path on OS X...
r7086 @with_environment
def test_get_xdg_dir_3():
"""test_get_xdg_dir_3, check xdg_dir not used on OS X"""
reload(path)
path.get_home_dir = lambda : HOME_TEST_DIR
os.name = "posix"
sys.platform = "darwin"
env.pop('IPYTHON_DIR', None)
env.pop('IPYTHONDIR', None)
env.pop('XDG_CONFIG_HOME', None)
cfgdir=os.path.join(path.get_home_dir(), '.config')
Samuel Gaist
[utils][tests][path] Remove the use of nt...
r26923 os.makedirs(cfgdir, exist_ok=True)
MinRK
don't use XDG path on OS X...
r7086
Matthias Bussonnier
remove some nose from test_paths
r26719 assert path.get_xdg_dir() is None
MinRK
don't use XDG path on OS X...
r7086
Fernando Perez
Added small test for function that didn't have one. Little cleanups.
r1969 def test_filefind():
"""Various tests for filefind"""
f = tempfile.NamedTemporaryFile()
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505 # print 'fname:',f.name
Min RK
update dependency imports...
r21253 alt_dirs = paths.get_ipython_dir()
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505 t = path.filefind(f.name, alt_dirs)
# print 'found:',t
Fernando Perez
Improve pylab support, find profiles in IPython's own directory....
r2357
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 @dec.skip_if_not_win32
def test_get_long_path_name_win32():
Jonathan Frederic
FIX test_get_long_path_name_win32 for Win7...
r12083 with TemporaryDirectory() as tmpdir:
Jonathan Frederic
Small fixes to make test work.
r12085
Nicholas Bollweg
skip %HOME% 3.8 test on windows, update docs for get_home_dir
r25223 # Make a long path. Expands the path of tmpdir prematurely as it may already have a long
watercrossing
Modifies test_get_long_path_name_winr32() to fix #4629
r13753 # path component, so ensure we include the long form of it
Srinivas Reddy Thatiparthy
remove unicode specifier
r23213 long_path = os.path.join(path.get_long_path_name(tmpdir), 'this is my long path name')
Jonathan Frederic
Small fixes to make test work.
r12085 os.makedirs(long_path)
Jonathan Frederic
FIX test_get_long_path_name_win32 for Win7...
r12083
Jonathan Frederic
Small fixes to make test work.
r12085 # Test to see if the short path evaluates correctly.
Srinivas Reddy Thatiparthy
remove unicode specifier
r23213 short_path = os.path.join(tmpdir, 'THISIS~1')
Jonathan Frederic
Small fixes to make test work.
r12085 evaluated_path = path.get_long_path_name(short_path)
Matthias Bussonnier
remove some nose from test_paths
r26719 assert evaluated_path.lower() == long_path.lower()
Fernando Perez
Added new Tee class, that works much like Unix's 'tee' command....
r2436
Brian Granger
Fixed broken test in :mod:`IPython.utils.tests.test_path`.
r2505
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 @dec.skip_win32
def test_get_long_path_name():
Matthias Bussonnier
remove some nose from test_paths
r26719 p = path.get_long_path_name("/usr/local")
assert p == "/usr/local"
Fernando Perez
Added new Tee class, that works much like Unix's 'tee' command....
r2436
Matthias Bussonnier
Use proper xunit format for some test....
r25109
class TestRaiseDeprecation(unittest.TestCase):
@dec.skip_win32 # can't create not-user-writable dir on win
@with_environment
def test_not_writable_ipdir(self):
tmpdir = tempfile.mkdtemp()
os.name = "posix"
env.pop('IPYTHON_DIR', None)
env.pop('IPYTHONDIR', None)
env.pop('XDG_CONFIG_HOME', None)
env['HOME'] = tmpdir
ipdir = os.path.join(tmpdir, '.ipython')
os.mkdir(ipdir, 0o555)
try:
open(os.path.join(ipdir, "_foo_"), 'w').close()
except IOError:
pass
else:
# I can still write to an unwritable dir,
# assume I'm root and skip the test
Nikita Kniazev
Remove iptest and other Nose-dependent code
r27042 pytest.skip("I can't create directories that I can't write to")
Matthias Bussonnier
Use proper xunit format for some test....
r25109 with self.assertWarnsRegex(UserWarning, 'is not a writable location'):
ipdir = paths.get_ipython_dir()
env.pop('IPYTHON_DIR', None)
Robert Kern
BUG: Allow %magic argument filenames with spaces to be specified with quotes under win32.
r4688
@with_environment
def test_get_py_filename():
os.chdir(TMP_TEST_DIR)
Matthias Bussonnier
remove some nose from test_paths
r26719 with make_tempfile("foo.py"):
assert path.get_py_filename("foo.py") == "foo.py"
assert path.get_py_filename("foo") == "foo.py"
with make_tempfile("foo"):
assert path.get_py_filename("foo") == "foo"
Samuel Gaist
[utils][tests][path] Remove the use of nt...
r26923 pytest.raises(IOError, path.get_py_filename, "foo.py")
pytest.raises(IOError, path.get_py_filename, "foo")
pytest.raises(IOError, path.get_py_filename, "foo.py")
Matthias Bussonnier
remove some nose from test_paths
r26719 true_fn = "foo with spaces.py"
Antony Lee
Finish getting rid of unquote_filename......
r22457 with make_tempfile(true_fn):
Matthias Bussonnier
remove some nose from test_paths
r26719 assert path.get_py_filename("foo with spaces") == true_fn
assert path.get_py_filename("foo with spaces.py") == true_fn
Samuel Gaist
[utils][tests][path] Remove the use of nt...
r26923 pytest.raises(IOError, path.get_py_filename, '"foo with spaces.py"')
pytest.raises(IOError, path.get_py_filename, "'foo with spaces.py'")
Thomas Kluyver
Use onlyif_unicode_paths in utils tests
r12166
@onlyif_unicode_paths
Fix for #875 Unicode Encoding Error
r6152 def test_unicode_in_filename():
Thomas Kluyver
Add description of test.
r6164 """When a file doesn't exist, the exception raised should be safe to call
str() on - i.e. in Python 2 it must only have ASCII characters.
Nicholas Bollweg
skip %HOME% 3.8 test on windows, update docs for get_home_dir
r25223
Thomas Kluyver
Add description of test.
r6164 https://github.com/ipython/ipython/issues/875
"""
Fix for #875 Unicode Encoding Error
r6152 try:
# these calls should not throw unicode encode exceptions
Matthias Bussonnier
Use proper xunit format for some test....
r25109 path.get_py_filename('fooéè.py')
Fix for #875 Unicode Encoding Error
r6152 except IOError as ex:
str(ex)
Takafumi Arakaki
Move globlist and its test under utils.path
r8014
Matthias Bussonnier
Refactor test to get rid of deprecation....
r23706 class TestShellGlob(unittest.TestCase):
Takafumi Arakaki
Move globlist and its test under utils.path
r8014
Takafumi Arakaki
Windows aware tests for shellglob
r8638 @classmethod
def setUpClass(cls):
Thomas Kluyver
Fix tests in utils
r13373 cls.filenames_start_with_a = ['a0', 'a1', 'a2']
cls.filenames_end_with_b = ['0b', '1b', '2b']
Takafumi Arakaki
Windows aware tests for shellglob
r8638 cls.filenames = cls.filenames_start_with_a + cls.filenames_end_with_b
cls.tempdir = TemporaryDirectory()
td = cls.tempdir.name
Takafumi Arakaki
Move globlist and its test under utils.path
r8014
Takafumi Arakaki
Windows aware tests for shellglob
r8638 with cls.in_tempdir():
Takafumi Arakaki
Move globlist and its test under utils.path
r8014 # Create empty files
Takafumi Arakaki
Windows aware tests for shellglob
r8638 for fname in cls.filenames:
Takafumi Arakaki
Move globlist and its test under utils.path
r8014 open(os.path.join(td, fname), 'w').close()
Takafumi Arakaki
Windows aware tests for shellglob
r8638 @classmethod
def tearDownClass(cls):
cls.tempdir.cleanup()
@classmethod
@contextmanager
def in_tempdir(cls):
Srinivas Reddy Thatiparthy
rename py3compat.getcwd() -> os.getcwd()
r23045 save = os.getcwd()
Takafumi Arakaki
Wrap yield of @contextmanager with try-finally block
r8640 try:
os.chdir(cls.tempdir.name)
yield
finally:
os.chdir(save)
Takafumi Arakaki
Windows aware tests for shellglob
r8638
def check_match(self, patterns, matches):
with self.in_tempdir():
# glob returns unordered list. that's why sorted is required.
Matthias Bussonnier
remove some nose from test_paths
r26719 assert sorted(path.shellglob(patterns)) == sorted(matches)
Takafumi Arakaki
Windows aware tests for shellglob
r8638
def common_cases(self):
return [
(['*'], self.filenames),
(['a*'], self.filenames_start_with_a),
(['*c'], ['*c']),
(['*', 'a*', '*b', '*c'], self.filenames
+ self.filenames_start_with_a
+ self.filenames_end_with_b
+ ['*c']),
(['a[012]'], self.filenames_start_with_a),
]
@skip_win32
def test_match_posix(self):
for (patterns, matches) in self.common_cases() + [
([r'\*'], ['*']),
([r'a\*', 'a*'], ['a*'] + self.filenames_start_with_a),
([r'a\[012]'], ['a[012]']),
]:
yield (self.check_match, patterns, matches)
@skip_if_not_win32
def test_match_windows(self):
for (patterns, matches) in self.common_cases() + [
# In windows, backslash is interpreted as path
# separator. Therefore, you can't escape glob
# using it.
([r'a\*', 'a*'], [r'a\*'] + self.filenames_start_with_a),
([r'a\[012]'], [r'a\[012]']),
]:
yield (self.check_match, patterns, matches)
Takafumi Arakaki
Unescape failed glob patterns in shellglob
r8119
Matthias Bussonnier
remove some nose from test_paths
r26719 # TODO : pytest.mark.parametrise once nose is gone.
Takafumi Arakaki
Unescape failed glob patterns in shellglob
r8119 def test_unescape_glob():
Matthias Bussonnier
remove some nose from test_paths
r26719 assert path.unescape_glob(r"\*\[\!\]\?") == "*[!]?"
assert path.unescape_glob(r"\\*") == r"\*"
assert path.unescape_glob(r"\\\*") == r"\*"
assert path.unescape_glob(r"\\a") == r"\a"
assert path.unescape_glob(r"\a") == r"\a"
David Wolever
Add link_or_copy to IPython.utils.path
r11647
Thomas Kluyver
Skip unicode test in C locale...
r23892 @onlyif_unicode_paths
MinRK
test ensure_dir_exists
r16489 def test_ensure_dir_exists():
with TemporaryDirectory() as td:
Srinivas Reddy Thatiparthy
remove unicode specifier
r23213 d = os.path.join(td, '∂ir')
MinRK
test ensure_dir_exists
r16489 path.ensure_dir_exists(d) # create it
John Kirkham
Revert "IPython/utils/tests/test_path.py: Only use `encode` for system functions that cannot handle unicode."...
r21733 assert os.path.isdir(d)
MinRK
test ensure_dir_exists
r16489 path.ensure_dir_exists(d) # no-op
Srinivas Reddy Thatiparthy
remove unicode specifier
r23213 f = os.path.join(td, 'Æ’ile')
John Kirkham
Revert "IPython/utils/tests/test_path.py: Only use `encode` for system functions that cannot handle unicode."...
r21733 open(f, 'w').close() # touch
Samuel Gaist
[utils][tests][path] Remove the use of nt...
r26923 with pytest.raises(IOError):
MinRK
test ensure_dir_exists
r16489 path.ensure_dir_exists(f)
Matthias Bussonnier
Use proper xunit format for some test....
r25109 class TestLinkOrCopy(unittest.TestCase):
David Wolever
Add link_or_copy to IPython.utils.path
r11647 def setUp(self):
self.tempdir = TemporaryDirectory()
self.src = self.dst("src")
with open(self.src, "w") as f:
f.write("Hello, world!")
def tearDown(self):
self.tempdir.cleanup()
def dst(self, *args):
return os.path.join(self.tempdir.name, *args)
def assert_inode_not_equal(self, a, b):
Matthias Bussonnier
remove some nose from test_paths
r26719 assert (
os.stat(a).st_ino != os.stat(b).st_ino
), "%r and %r do reference the same indoes" % (a, b)
David Wolever
Add link_or_copy to IPython.utils.path
r11647
def assert_inode_equal(self, a, b):
Matthias Bussonnier
remove some nose from test_paths
r26719 assert (
os.stat(a).st_ino == os.stat(b).st_ino
), "%r and %r do not reference the same indoes" % (a, b)
David Wolever
Add link_or_copy to IPython.utils.path
r11647
David Wolever
Fix a couple typos
r11650 def assert_content_equal(self, a, b):
David Wolever
py3 doesn't have nested, py2.6 doesn't have multiple context managers
r11653 with open(a) as a_f:
with open(b) as b_f:
Matthias Bussonnier
remove some nose from test_paths
r26719 assert a_f.read() == b_f.read()
David Wolever
Add link_or_copy to IPython.utils.path
r11647
@skip_win32
def test_link_successful(self):
dst = self.dst("target")
path.link_or_copy(self.src, dst)
self.assert_inode_equal(self.src, dst)
@skip_win32
def test_link_into_dir(self):
dst = self.dst("some_dir")
os.mkdir(dst)
path.link_or_copy(self.src, dst)
expected_dst = self.dst("some_dir", os.path.basename(self.src))
self.assert_inode_equal(self.src, expected_dst)
@skip_win32
def test_target_exists(self):
dst = self.dst("target")
open(dst, "w").close()
path.link_or_copy(self.src, dst)
self.assert_inode_equal(self.src, dst)
@skip_win32
def test_no_link(self):
real_link = os.link
try:
del os.link
dst = self.dst("target")
path.link_or_copy(self.src, dst)
David Wolever
Fix a couple typos
r11650 self.assert_content_equal(self.src, dst)
David Wolever
Add link_or_copy to IPython.utils.path
r11647 self.assert_inode_not_equal(self.src, dst)
finally:
os.link = real_link
@skip_if_not_win32
def test_windows(self):
dst = self.dst("target")
path.link_or_copy(self.src, dst)
David Wolever
Fix a couple typos
r11650 self.assert_content_equal(self.src, dst)
Thomas Kluyver
Don't link file again if it's already a correct hard link...
r20038
def test_link_twice(self):
# Linking the same file twice shouldn't leave duplicates around.
# See https://github.com/ipython/ipython/issues/6450
dst = self.dst('target')
path.link_or_copy(self.src, dst)
path.link_or_copy(self.src, dst)
self.assert_inode_equal(self.src, dst)
Matthias Bussonnier
remove some nose from test_paths
r26719 assert sorted(os.listdir(self.tempdir.name)) == ["src", "target"]