mirror of
https://github.com/microsoft/debugpy.git
synced 2025-12-23 08:48:12 +00:00
Migrate to pytests from tests\ptvsd (#1024)
* Migrate parse args tests * Remove old parse args tests * Run only pytests * Migrate internals filter tests * Remove old internal filter tests * Migrate pathutils tests * Remove old pathutils tests * Revert "Run only pytests" This reverts commit eaed6de3c64e102a540b751b06d774dab0930427. * Remove old _local.py tests
This commit is contained in:
parent
bd03d3a523
commit
cc5d57a192
7 changed files with 517 additions and 891 deletions
41
pytests/test_internals_filter.py
Normal file
41
pytests/test_internals_filter.py
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import os
|
||||
import pytest
|
||||
import ptvsd.untangle
|
||||
|
||||
from ptvsd.wrapper import InternalsFilter
|
||||
from ptvsd.wrapper import dont_trace_ptvsd_files
|
||||
|
||||
INTERNAL_DIR = os.path.dirname(os.path.abspath(ptvsd.untangle.__file__))
|
||||
@pytest.mark.parametrize('path', [
|
||||
os.path.abspath(ptvsd.untangle.__file__),
|
||||
# File used by VS/VSC to launch ptvsd
|
||||
os.path.join('somepath', 'ptvsd_launcher.py'),
|
||||
# Any file under ptvsd
|
||||
os.path.join(INTERNAL_DIR, 'somefile.py'),
|
||||
])
|
||||
def test_internal_paths(path):
|
||||
int_filter = InternalsFilter()
|
||||
assert int_filter.is_internal_path(path)
|
||||
|
||||
@pytest.mark.parametrize('path', [
|
||||
__file__,
|
||||
os.path.join('somepath', 'somefile.py'),
|
||||
])
|
||||
def test_user_file_paths(path):
|
||||
int_filter = InternalsFilter()
|
||||
assert not int_filter.is_internal_path(path)
|
||||
|
||||
@pytest.mark.parametrize('path, val', [
|
||||
(os.path.join(INTERNAL_DIR, 'wrapper.py'), True),
|
||||
(os.path.join(INTERNAL_DIR, 'abcd', 'ptvsd', 'wrapper.py'), True),
|
||||
(os.path.join(INTERNAL_DIR, 'ptvsd', 'wrapper.py'), True),
|
||||
(os.path.join(INTERNAL_DIR, 'abcd', 'wrapper.py'), True),
|
||||
(os.path.join('usr', 'abcd', 'ptvsd', 'wrapper.py'), False),
|
||||
(os.path.join('C:', 'ptvsd', 'wrapper1.py'), False),
|
||||
(os.path.join('C:', 'abcd', 'ptvsd', 'ptvsd.py'), False),
|
||||
(os.path.join('usr', 'ptvsd', 'w.py'), False),
|
||||
(os.path.join('ptvsd', 'w.py'), False),
|
||||
(os.path.join('usr', 'abcd', 'ptvsd', 'tangle.py'), False),
|
||||
])
|
||||
def test_ptvsd_paths(path, val):
|
||||
assert val == dont_trace_ptvsd_files(path)
|
||||
382
pytests/test_parse_args.py
Normal file
382
pytests/test_parse_args.py
Normal file
|
|
@ -0,0 +1,382 @@
|
|||
import pytest
|
||||
from ptvsd.socket import Address
|
||||
from ptvsd.__main__ import parse_args
|
||||
|
||||
EXPECTED_EXTRA = ['--']
|
||||
|
||||
def test_host_required():
|
||||
with pytest.raises(SystemExit):
|
||||
parse_args([
|
||||
'eggs',
|
||||
'--port', '8888',
|
||||
'-m', 'spam',
|
||||
])
|
||||
|
||||
def test_module_server():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', '10.0.1.1',
|
||||
'--port', '8888',
|
||||
'-m', 'spam',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'module',
|
||||
'name': 'spam',
|
||||
'address': Address.as_server('10.0.1.1', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_module_nodebug():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'-m', 'spam',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'module',
|
||||
'name': 'spam',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_script():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_script_server():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', '10.0.1.1',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('10.0.1.1', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_script_nodebug():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_remote():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--client',
|
||||
'--host', '1.2.3.4',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('1.2.3.4', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_remote_localhost():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_remote_nodebug():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', '1.2.3.4',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('1.2.3.4', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_remote_single_session():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--single-session',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': True,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_local_single_session():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--single-session',
|
||||
'--host', '1.2.3.4',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('1.2.3.4', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': True,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_remote_wait():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--client',
|
||||
'--host', '1.2.3.4',
|
||||
'--port', '8888',
|
||||
'--wait',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('1.2.3.4', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': True,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_extra():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--DEBUG',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'--vm_type', '???',
|
||||
'spam.py',
|
||||
'--xyz', '123',
|
||||
'abc',
|
||||
'--cmd-line',
|
||||
'--',
|
||||
'foo',
|
||||
'--server',
|
||||
'--bar'
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == [
|
||||
'--DEBUG',
|
||||
'--vm_type', '???',
|
||||
'--', # Expected pydevd defaults separator
|
||||
'--xyz', '123',
|
||||
'abc',
|
||||
'--cmd-line',
|
||||
'foo',
|
||||
'--server',
|
||||
'--bar',
|
||||
]
|
||||
|
||||
def test_extra_nodebug():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--DEBUG',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'--vm_type', '???',
|
||||
'spam.py',
|
||||
'--xyz', '123',
|
||||
'abc',
|
||||
'--cmd-line',
|
||||
'--',
|
||||
'foo',
|
||||
'--server',
|
||||
'--bar'
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == [
|
||||
'--DEBUG',
|
||||
'--vm_type', '???',
|
||||
'--', # Expected pydevd defaults separator
|
||||
'--xyz', '123',
|
||||
'abc',
|
||||
'--cmd-line',
|
||||
'foo',
|
||||
'--server',
|
||||
'--bar',
|
||||
]
|
||||
|
||||
def test_empty_host():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', '',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == EXPECTED_EXTRA
|
||||
|
||||
def test_unsupported_arg():
|
||||
with pytest.raises(SystemExit):
|
||||
parse_args([
|
||||
'eggs',
|
||||
'--port', '8888',
|
||||
'--xyz', '123',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
def test_pseudo_backward_compatibility():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'--module',
|
||||
'--file', 'spam',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam',
|
||||
'address': Address.as_server('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == ['--module'] + EXPECTED_EXTRA
|
||||
|
||||
def test_pseudo_backward_compatibility_nodebug():
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'--module',
|
||||
'--file', 'spam',
|
||||
])
|
||||
|
||||
assert vars(args) == {
|
||||
'kind': 'script',
|
||||
'name': 'spam',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
}
|
||||
assert extra == ['--module'] + EXPECTED_EXTRA
|
||||
94
pytests/test_pathutils.py
Normal file
94
pytests/test_pathutils.py
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
import os
|
||||
import os.path
|
||||
import platform
|
||||
import pytest
|
||||
from ptvsd.pathutils import PathUnNormcase
|
||||
|
||||
|
||||
def _find_file(filename):
|
||||
filename = os.path.normcase(os.path.normpath(filename))
|
||||
drive = os.path.splitdrive(filename)[0]
|
||||
found = []
|
||||
while True:
|
||||
dirname, basename = os.path.split(filename)
|
||||
for name in os.listdir(dirname or '.'):
|
||||
if os.path.normcase(name) == basename:
|
||||
found.insert(0, name)
|
||||
break
|
||||
else:
|
||||
raise Exception('oops: {}'.format(dirname))
|
||||
|
||||
if not dirname or dirname == drive or dirname == drive + os.path.sep:
|
||||
return dirname.upper() + os.path.sep.join(found)
|
||||
filename = dirname
|
||||
|
||||
|
||||
FILENAME = __file__
|
||||
ACTUAL = _find_file(FILENAME)
|
||||
|
||||
|
||||
def test_invalid_path_names():
|
||||
tool = PathUnNormcase()
|
||||
file_path = 'x:/this is an/invalid/file/invalid_file_.csv'
|
||||
result = tool.un_normcase(file_path)
|
||||
assert result == file_path
|
||||
|
||||
|
||||
def test_empty_path_names():
|
||||
tool = PathUnNormcase()
|
||||
file_path = ''
|
||||
result = tool.un_normcase(file_path)
|
||||
assert result == file_path
|
||||
|
||||
|
||||
def test_valid_names():
|
||||
tool = PathUnNormcase()
|
||||
result = tool.un_normcase(FILENAME)
|
||||
assert result == FILENAME
|
||||
|
||||
|
||||
def test_path_names_normcased():
|
||||
tool = PathUnNormcase()
|
||||
tool.enable()
|
||||
result = tool.un_normcase(
|
||||
os.path.normcase(FILENAME))
|
||||
assert result == ACTUAL
|
||||
|
||||
|
||||
@pytest.mark.skipif(platform.system() != 'Windows', reason='Windows OS specific test')
|
||||
def test_path_names_uppercase_disabled():
|
||||
tool = PathUnNormcase()
|
||||
expected = FILENAME.upper()
|
||||
result = tool.un_normcase(expected)
|
||||
|
||||
# Since path tool is disabled we should get the same
|
||||
# path back
|
||||
assert result == expected
|
||||
|
||||
|
||||
@pytest.mark.skipif(platform.system() != 'Windows', reason='Windows OS specific test')
|
||||
def test_path_names_uppercase_enabled():
|
||||
tool = PathUnNormcase()
|
||||
tool.enable()
|
||||
result = tool.un_normcase(FILENAME.upper())
|
||||
assert result == ACTUAL
|
||||
|
||||
|
||||
@pytest.mark.skipif(platform.system() != 'Windows', reason='Windows OS specific test')
|
||||
def test_path_names_lowercase_disabled():
|
||||
tool = PathUnNormcase()
|
||||
expected = FILENAME.lower()
|
||||
result = tool.un_normcase(expected)
|
||||
|
||||
# Since path tool is disabled we should get the same
|
||||
# path back
|
||||
assert result == expected
|
||||
|
||||
|
||||
@pytest.mark.skipif(platform.system() != 'Windows', reason='Windows OS specific test')
|
||||
def test_path_names_lowercase_enabled():
|
||||
tool = PathUnNormcase()
|
||||
tool.enable()
|
||||
result = tool.un_normcase(FILENAME.lower())
|
||||
|
||||
assert result == ACTUAL
|
||||
|
|
@ -1,388 +0,0 @@
|
|||
import unittest
|
||||
|
||||
from ptvsd.socket import Address
|
||||
from ptvsd.__main__ import parse_args
|
||||
from tests.helpers._io import captured_stdio
|
||||
|
||||
|
||||
class ParseArgsTests(unittest.TestCase):
|
||||
|
||||
EXPECTED_EXTRA = ['--']
|
||||
|
||||
def test_host_required(self):
|
||||
with self.assertRaises(SystemExit):
|
||||
parse_args([
|
||||
'eggs',
|
||||
'--port', '8888',
|
||||
'-m', 'spam',
|
||||
])
|
||||
|
||||
def test_module_server(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', '10.0.1.1',
|
||||
'--port', '8888',
|
||||
'-m', 'spam',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'module',
|
||||
'name': 'spam',
|
||||
'address': Address.as_server('10.0.1.1', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_module_nodebug(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'-m', 'spam',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'module',
|
||||
'name': 'spam',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_script(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_script_server(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', '10.0.1.1',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('10.0.1.1', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_script_nodebug(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_remote(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--client',
|
||||
'--host', '1.2.3.4',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('1.2.3.4', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_remote_localhost(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_remote_nodebug(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', '1.2.3.4',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('1.2.3.4', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_remote_single_session(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--single-session',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': True,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_local_single_session(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--single-session',
|
||||
'--host', '1.2.3.4',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('1.2.3.4', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': True,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_remote_wait(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--client',
|
||||
'--host', '1.2.3.4',
|
||||
'--port', '8888',
|
||||
'--wait',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('1.2.3.4', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': True,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_extra(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--DEBUG',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'--vm_type', '???',
|
||||
'spam.py',
|
||||
'--xyz', '123',
|
||||
'abc',
|
||||
'--cmd-line',
|
||||
'--',
|
||||
'foo',
|
||||
'--server',
|
||||
'--bar'
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, [
|
||||
'--DEBUG',
|
||||
'--vm_type', '???',
|
||||
'--', # Expected pydevd defaults separator
|
||||
'--xyz', '123',
|
||||
'abc',
|
||||
'--cmd-line',
|
||||
'foo',
|
||||
'--server',
|
||||
'--bar',
|
||||
])
|
||||
|
||||
def test_extra_nodebug(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--DEBUG',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'--vm_type', '???',
|
||||
'spam.py',
|
||||
'--xyz', '123',
|
||||
'abc',
|
||||
'--cmd-line',
|
||||
'--',
|
||||
'foo',
|
||||
'--server',
|
||||
'--bar'
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, [
|
||||
'--DEBUG',
|
||||
'--vm_type', '???',
|
||||
'--', # Expected pydevd defaults separator
|
||||
'--xyz', '123',
|
||||
'abc',
|
||||
'--cmd-line',
|
||||
'foo',
|
||||
'--server',
|
||||
'--bar',
|
||||
])
|
||||
|
||||
def test_empty_host(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', '',
|
||||
'--port', '8888',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam.py',
|
||||
'address': Address.as_server('', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, self.EXPECTED_EXTRA)
|
||||
|
||||
def test_unsupported_arg(self):
|
||||
with self.assertRaises(SystemExit):
|
||||
with captured_stdio():
|
||||
parse_args([
|
||||
'eggs',
|
||||
'--port', '8888',
|
||||
'--xyz', '123',
|
||||
'spam.py',
|
||||
])
|
||||
|
||||
def test_pseudo_backward_compatibility(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'--module',
|
||||
'--file', 'spam',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam',
|
||||
'address': Address.as_server('localhost', 8888),
|
||||
'nodebug': False,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, ['--module'] + self.EXPECTED_EXTRA)
|
||||
|
||||
def test_pseudo_backward_compatibility_nodebug(self):
|
||||
args, extra = parse_args([
|
||||
'eggs',
|
||||
'--nodebug',
|
||||
'--client',
|
||||
'--host', 'localhost',
|
||||
'--port', '8888',
|
||||
'--module',
|
||||
'--file', 'spam',
|
||||
])
|
||||
|
||||
self.assertEqual(vars(args), {
|
||||
'kind': 'script',
|
||||
'name': 'spam',
|
||||
'address': Address.as_client('localhost', 8888),
|
||||
'nodebug': True,
|
||||
'single_session': False,
|
||||
'wait': False,
|
||||
'multiprocess': False,
|
||||
})
|
||||
self.assertEqual(extra, ['--module'] + self.EXPECTED_EXTRA)
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
import os
|
||||
import unittest
|
||||
import ptvsd.untangle
|
||||
|
||||
from ptvsd.wrapper import InternalsFilter
|
||||
from ptvsd.wrapper import dont_trace_ptvsd_files
|
||||
|
||||
|
||||
class InternalsFilterTests(unittest.TestCase):
|
||||
def test_internal_paths(self):
|
||||
int_filter = InternalsFilter()
|
||||
internal_dir = os.path.dirname(
|
||||
os.path.abspath(ptvsd.untangle.__file__)
|
||||
)
|
||||
internal_files = [
|
||||
os.path.abspath(ptvsd.untangle.__file__),
|
||||
# File used by VS Only
|
||||
os.path.join('somepath', 'ptvsd_launcher.py'),
|
||||
# Any file under ptvsd
|
||||
os.path.join(internal_dir, 'somefile.py'),
|
||||
]
|
||||
for fp in internal_files:
|
||||
self.assertTrue(int_filter.is_internal_path(fp))
|
||||
|
||||
def test_user_file_paths(self):
|
||||
int_filter = InternalsFilter()
|
||||
files = [
|
||||
__file__,
|
||||
os.path.join('somepath', 'somefile.py'),
|
||||
]
|
||||
for fp in files:
|
||||
self.assertFalse(int_filter.is_internal_path(fp))
|
||||
|
||||
|
||||
class PtvsdFileTraceFilter(unittest.TestCase):
|
||||
def test_basic(self):
|
||||
internal_dir = os.path.dirname(
|
||||
os.path.abspath(ptvsd.untangle.__file__))
|
||||
|
||||
test_paths = {
|
||||
os.path.join(internal_dir, 'wrapper.py'): True,
|
||||
os.path.join(internal_dir, 'abcd', 'ptvsd', 'wrapper.py'): True,
|
||||
os.path.join(internal_dir, 'ptvsd', 'wrapper.py'): True,
|
||||
os.path.join(internal_dir, 'abcd', 'wrapper.py'): True,
|
||||
os.path.join('usr', 'abcd', 'ptvsd', 'wrapper.py'): False,
|
||||
os.path.join('C:', 'ptvsd', 'wrapper1.py'): False,
|
||||
os.path.join('C:', 'abcd', 'ptvsd', 'ptvsd.py'): False,
|
||||
os.path.join('usr', 'ptvsd', 'w.py'): False,
|
||||
os.path.join('ptvsd', 'w.py'): False,
|
||||
os.path.join('usr', 'abcd', 'ptvsd', 'tangle.py'): False,
|
||||
}
|
||||
|
||||
for path, val in test_paths.items():
|
||||
self.assertTrue(val == dont_trace_ptvsd_files(path),
|
||||
msg='Path : %s\nActual: %s' % (path,
|
||||
internal_dir))
|
||||
|
|
@ -1,349 +0,0 @@
|
|||
import sys
|
||||
import unittest
|
||||
|
||||
from _pydevd_bundle import pydevd_comm
|
||||
|
||||
import ptvsd.pydevd_hooks
|
||||
from ptvsd.socket import Address
|
||||
from ptvsd._local import run_module, run_file, run_main
|
||||
from tests.helpers.argshelper import _get_args
|
||||
|
||||
|
||||
class FakePyDevd(object):
|
||||
|
||||
def __init__(self, __file__, handle_main):
|
||||
self.__file__ = __file__
|
||||
self.handle_main = handle_main
|
||||
|
||||
@property
|
||||
def __name__(self):
|
||||
return object.__repr__(self)
|
||||
|
||||
def main(self):
|
||||
self.handle_main()
|
||||
|
||||
|
||||
class RunBase(object):
|
||||
|
||||
def setUp(self):
|
||||
super(RunBase, self).setUp()
|
||||
self.argv = None
|
||||
self.addr = None
|
||||
self.kwargs = None
|
||||
|
||||
def _run(self, argv, addr, **kwargs):
|
||||
self.argv = argv
|
||||
self.addr = addr
|
||||
self.kwargs = kwargs
|
||||
|
||||
def _no_debug_runner(self, addr, filename, is_module, *extras, **kwargs):
|
||||
self.addr = addr
|
||||
self.argv = sys.argv
|
||||
self.filename = filename
|
||||
self.is_module = is_module
|
||||
self.args = extras
|
||||
self.kwargs = kwargs
|
||||
|
||||
|
||||
class RunModuleTests(RunBase, unittest.TestCase):
|
||||
|
||||
def test_local(self):
|
||||
addr = (None, 8888)
|
||||
run_module(addr, 'spam', _run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args('--module', '--file', 'spam:'))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_server(self):
|
||||
addr = Address.as_server('10.0.1.1', 8888)
|
||||
run_module(addr, 'spam', _run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args('--module', '--file', 'spam:'))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_remote(self):
|
||||
addr = ('1.2.3.4', 8888)
|
||||
run_module(addr, 'spam', _run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args('--module', '--file', 'spam:',
|
||||
ptvsd_extras=['--client', '1.2.3.4']))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_client(*addr))
|
||||
self.assertEqual(self.kwargs, {
|
||||
'singlesession': True,
|
||||
})
|
||||
|
||||
def test_remote_localhost(self):
|
||||
addr = Address.as_client(None, 8888)
|
||||
run_module(addr, 'spam', _run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args(
|
||||
'--module', '--file', 'spam:',
|
||||
ptvsd_extras=['--client', 'localhost']))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_client(*addr))
|
||||
self.assertEqual(self.kwargs, {
|
||||
'singlesession': True,
|
||||
})
|
||||
|
||||
def test_extra(self):
|
||||
addr = (None, 8888)
|
||||
run_module(addr, 'spam', '--vm_type', 'xyz', '--', '--DEBUG',
|
||||
_run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args(
|
||||
'--module', '--file', 'spam:', '--DEBUG',
|
||||
ptvsd_extras=['--vm_type', 'xyz']))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_executable(self):
|
||||
addr = (None, 8888)
|
||||
run_module(addr, 'spam', _run=self._run)
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args(
|
||||
'--module', '--file', 'spam:',
|
||||
prog=sys.argv[0]))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
|
||||
class RunScriptTests(RunBase, unittest.TestCase):
|
||||
|
||||
def test_local(self):
|
||||
addr = (None, 8888)
|
||||
run_file(addr, 'spam.py', _run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args('--file', 'spam.py'))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_server(self):
|
||||
addr = Address.as_server('10.0.1.1', 8888)
|
||||
run_file(addr, 'spam.py', _run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args('--file', 'spam.py'))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_remote(self):
|
||||
addr = ('1.2.3.4', 8888)
|
||||
run_file(addr, 'spam.py', _run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args(
|
||||
'--file', 'spam.py',
|
||||
ptvsd_extras=['--client', '1.2.3.4']))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_client(*addr))
|
||||
self.assertEqual(self.kwargs, {
|
||||
'singlesession': True,
|
||||
})
|
||||
|
||||
def test_remote_localhost(self):
|
||||
addr = Address.as_client(None, 8888)
|
||||
run_file(addr, 'spam.py', _run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args(
|
||||
'--file', 'spam.py',
|
||||
ptvsd_extras=['--client', 'localhost']))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_client(*addr))
|
||||
self.assertEqual(self.kwargs, {
|
||||
'singlesession': True,
|
||||
})
|
||||
|
||||
def test_extra(self):
|
||||
addr = (None, 8888)
|
||||
run_file(addr, 'spam.py', '--vm_type', 'xyz', '--', '--DEBUG',
|
||||
_run=self._run, _prog='eggs')
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args(
|
||||
'--file', 'spam.py', '--DEBUG',
|
||||
ptvsd_extras=['--vm_type', 'xyz']))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_executable(self):
|
||||
addr = (None, 8888)
|
||||
run_file(addr, 'spam.py', _run=self._run)
|
||||
|
||||
self.assertEqual(self.argv,
|
||||
_get_args('--file', 'spam.py', prog=sys.argv[0]))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
|
||||
class IntegratedRunTests(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(IntegratedRunTests, self).setUp()
|
||||
self.___main__ = sys.modules['__main__']
|
||||
self._argv = sys.argv
|
||||
self._start_server = pydevd_comm.start_server
|
||||
self._start_client = pydevd_comm.start_client
|
||||
|
||||
self.pydevd = None
|
||||
self.addr = None
|
||||
self.kwargs = None
|
||||
self.maincalls = 0
|
||||
self.mainexc = None
|
||||
self.exitcode = -1
|
||||
|
||||
def tearDown(self):
|
||||
sys.argv[:] = self._argv
|
||||
sys.modules['__main__'] = self.___main__
|
||||
sys.modules.pop('__main___orig', None)
|
||||
pydevd_comm.start_server = self._start_server
|
||||
pydevd_comm.start_client = self._start_client
|
||||
# We shouldn't need to restore __main__.start_*.
|
||||
super(IntegratedRunTests, self).tearDown()
|
||||
|
||||
def _install(self, pydevd, addr, **kwargs):
|
||||
self.pydevd = pydevd
|
||||
self.addr = addr
|
||||
self.kwargs = kwargs
|
||||
return self
|
||||
|
||||
def _main(self):
|
||||
self.maincalls += 1
|
||||
if self.mainexc is not None:
|
||||
raise self.mainexc
|
||||
|
||||
def test_run(self):
|
||||
pydevd = FakePyDevd('pydevd/pydevd.py', self._main)
|
||||
addr = (None, 8888)
|
||||
run_file(addr, 'spam.py', _pydevd=pydevd, _install=self._install)
|
||||
|
||||
self.assertEqual(self.pydevd, pydevd)
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
self.assertEqual(self.maincalls, 1)
|
||||
self.assertEqual(sys.argv,
|
||||
_get_args('--file', 'spam.py', prog=sys.argv[0]))
|
||||
self.assertEqual(self.exitcode, -1)
|
||||
|
||||
def test_failure(self):
|
||||
self.mainexc = RuntimeError('boom!')
|
||||
pydevd = FakePyDevd('pydevd/pydevd.py', self._main)
|
||||
addr = (None, 8888)
|
||||
with self.assertRaises(RuntimeError) as cm:
|
||||
run_file(addr, 'spam.py', _pydevd=pydevd, _install=self._install)
|
||||
exc = cm.exception
|
||||
|
||||
self.assertEqual(self.pydevd, pydevd)
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
self.assertEqual(self.maincalls, 1)
|
||||
self.assertEqual(sys.argv,
|
||||
_get_args('--file', 'spam.py', prog=sys.argv[0]))
|
||||
self.assertEqual(self.exitcode, -1) # TODO: Is this right?
|
||||
self.assertIs(exc, self.mainexc)
|
||||
|
||||
def test_exit(self):
|
||||
self.mainexc = SystemExit(1)
|
||||
pydevd = FakePyDevd('pydevd/pydevd.py', self._main)
|
||||
addr = (None, 8888)
|
||||
with self.assertRaises(SystemExit):
|
||||
run_file(addr, 'spam.py', _pydevd=pydevd, _install=self._install)
|
||||
|
||||
self.assertEqual(self.pydevd, pydevd)
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertEqual(self.kwargs, {})
|
||||
self.assertEqual(self.maincalls, 1)
|
||||
self.assertEqual(sys.argv,
|
||||
_get_args('--file', 'spam.py', prog=sys.argv[0]))
|
||||
self.assertEqual(self.exitcode, 1)
|
||||
|
||||
def test_installed(self):
|
||||
pydevd = FakePyDevd('pydevd/pydevd.py', self._main)
|
||||
addr = (None, 8888)
|
||||
run_file(addr, 'spam.py', _pydevd=pydevd)
|
||||
|
||||
__main__ = sys.modules['__main__']
|
||||
expected_server = ptvsd.pydevd_hooks.start_server
|
||||
expected_client = ptvsd.pydevd_hooks.start_client
|
||||
for mod in (pydevd_comm, pydevd, __main__):
|
||||
start_server = getattr(mod, 'start_server')
|
||||
if hasattr(start_server, 'orig'):
|
||||
start_server = start_server.orig
|
||||
start_client = getattr(mod, 'start_client')
|
||||
if hasattr(start_client, 'orig'):
|
||||
start_client = start_client.orig
|
||||
|
||||
self.assertIs(start_server, expected_server,
|
||||
'(module {})'.format(mod.__name__))
|
||||
self.assertIs(start_client, expected_client,
|
||||
'(module {})'.format(mod.__name__))
|
||||
|
||||
|
||||
class NoDebugRunTests(RunBase, unittest.TestCase):
|
||||
def test_nodebug_script_args(self):
|
||||
addr = (None, 8888)
|
||||
args = ('--one', '--two', '--three')
|
||||
run_main(addr, 'spam.py', 'script', *args,
|
||||
_runner=self._no_debug_runner)
|
||||
|
||||
self.assertEqual(self.argv, ['spam.py'] + list(args))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertFalse(self.is_module)
|
||||
self.assertEqual(self.args, args)
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_nodebug_script_no_args(self):
|
||||
addr = Address.as_server('10.0.1.1', 8888)
|
||||
run_main(addr, 'spam.py', 'script',
|
||||
_runner=self._no_debug_runner)
|
||||
|
||||
self.assertEqual(self.argv, ['spam.py'])
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertFalse(self.is_module)
|
||||
self.assertEqual(self.args, ())
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_nodebug_module_args(self):
|
||||
addr = (None, 8888)
|
||||
args = ('--one', '--two', '--three')
|
||||
run_main(addr, 'spam.py', 'module', *args,
|
||||
_runner=self._no_debug_runner)
|
||||
|
||||
self.assertEqual(self.argv, ['spam.py'] + list(args))
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertTrue(self.is_module)
|
||||
self.assertEqual(self.args, args)
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
||||
def test_nodebug_module_no_args(self):
|
||||
addr = Address.as_server('10.0.1.1', 8888)
|
||||
run_main(addr, 'spam.py', 'module',
|
||||
_runner=self._no_debug_runner)
|
||||
|
||||
self.assertEqual(self.argv, ['spam.py'])
|
||||
|
||||
self.assertEqual(self.addr, Address.as_server(*addr))
|
||||
self.assertTrue(self.is_module)
|
||||
self.assertEqual(self.args, ())
|
||||
self.assertEqual(self.kwargs, {})
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
import os
|
||||
import os.path
|
||||
import platform
|
||||
import unittest
|
||||
|
||||
from ptvsd.pathutils import PathUnNormcase
|
||||
|
||||
|
||||
def _find_file(filename):
|
||||
filename = os.path.normcase(os.path.normpath(filename))
|
||||
drive = os.path.splitdrive(filename)[0]
|
||||
found = []
|
||||
while True:
|
||||
dirname, basename = os.path.split(filename)
|
||||
for name in os.listdir(dirname or '.'):
|
||||
if os.path.normcase(name) == basename:
|
||||
found.insert(0, name)
|
||||
break
|
||||
else:
|
||||
raise Exception('oops: {}'.format(dirname))
|
||||
|
||||
if not dirname or dirname == drive or dirname == drive + os.path.sep:
|
||||
return dirname.upper() + os.path.sep.join(found)
|
||||
filename = dirname
|
||||
|
||||
|
||||
FILENAME = __file__
|
||||
ACTUAL = _find_file(FILENAME)
|
||||
|
||||
|
||||
class PathUtilTests(unittest.TestCase):
|
||||
def test_invalid_path_names(self):
|
||||
tool = PathUnNormcase()
|
||||
file_path = 'x:/this is an/invalid/file/invalid_file_.csv'
|
||||
result = tool.un_normcase(file_path)
|
||||
|
||||
self.assertEqual(result, file_path)
|
||||
|
||||
def test_empty_path_names(self):
|
||||
tool = PathUnNormcase()
|
||||
file_path = ''
|
||||
result = tool.un_normcase(file_path)
|
||||
|
||||
self.assertEqual(result, file_path)
|
||||
|
||||
def test_valid_names(self):
|
||||
tool = PathUnNormcase()
|
||||
result = tool.un_normcase(FILENAME)
|
||||
|
||||
self.assertEqual(result, FILENAME)
|
||||
|
||||
def test_path_names_normcased(self):
|
||||
tool = PathUnNormcase()
|
||||
tool.enable()
|
||||
result = tool.un_normcase(
|
||||
os.path.normcase(FILENAME))
|
||||
|
||||
self.assertEqual(result, ACTUAL)
|
||||
|
||||
@unittest.skipIf(platform.system() != 'Windows',
|
||||
"Windows OS specific test")
|
||||
def test_path_names_uppercase_disabled(self):
|
||||
tool = PathUnNormcase()
|
||||
expected = FILENAME.upper()
|
||||
result = tool.un_normcase(expected)
|
||||
|
||||
# Since path tool is disabled we should get the same
|
||||
# path back
|
||||
self.assertEqual(result, expected)
|
||||
|
||||
@unittest.skipIf(platform.system() != 'Windows',
|
||||
"Windows OS specific test")
|
||||
def test_path_names_uppercase_enabled(self):
|
||||
tool = PathUnNormcase()
|
||||
tool.enable()
|
||||
result = tool.un_normcase(FILENAME.upper())
|
||||
|
||||
self.assertEqual(result, ACTUAL)
|
||||
|
||||
@unittest.skipIf(platform.system() != 'Windows',
|
||||
"Windows OS specific test")
|
||||
def test_path_names_lowercase_disabled(self):
|
||||
tool = PathUnNormcase()
|
||||
expected = FILENAME.lower()
|
||||
result = tool.un_normcase(expected)
|
||||
|
||||
# Since path tool is disabled we should get the same
|
||||
# path back
|
||||
self.assertEqual(result, expected)
|
||||
|
||||
@unittest.skipIf(platform.system() != 'Windows',
|
||||
"Windows OS specific test")
|
||||
def test_path_names_lowercase_enabled(self):
|
||||
tool = PathUnNormcase()
|
||||
tool.enable()
|
||||
result = tool.un_normcase(FILENAME.lower())
|
||||
|
||||
self.assertEqual(result, ACTUAL)
|
||||
Loading…
Add table
Add a link
Reference in a new issue