Merged revisions 72319-72320,72467,72661,72675-72679,72703,72708,72710,72712,72801-72802,72820,72822,72824,72826-72828,72830 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r72319 | georg.brandl | 2009-05-05 10:28:49 +0200 (Di, 05 Mai 2009) | 1 line
#1309567: fix linecache behavior of stripping subdirectories from paths when looking for relative filename matches. Also add a linecache test suite.
........
r72320 | georg.brandl | 2009-05-05 10:30:28 +0200 (Di, 05 Mai 2009) | 1 line
Add a news entry for r72319.
........
r72467 | georg.brandl | 2009-05-08 14:17:34 +0200 (Fr, 08 Mai 2009) | 1 line
Fix name.
........
r72661 | georg.brandl | 2009-05-15 10:03:03 +0200 (Fr, 15 Mai 2009) | 1 line
Fix example output for doctest-like demos.
........
r72675 | georg.brandl | 2009-05-16 13:13:21 +0200 (Sa, 16 Mai 2009) | 1 line
#6034: clarify __reversed__ doc.
........
r72676 | georg.brandl | 2009-05-16 13:14:46 +0200 (Sa, 16 Mai 2009) | 1 line
#6025: fix signature of parse().
........
r72677 | georg.brandl | 2009-05-16 13:18:55 +0200 (Sa, 16 Mai 2009) | 1 line
#6009: undocument default argument of Option as deprecated.
........
r72678 | georg.brandl | 2009-05-16 13:21:29 +0200 (Sa, 16 Mai 2009) | 1 line
#2856: document 2.x os.listdir() behavior for undecodable filenames.
........
r72679 | georg.brandl | 2009-05-16 13:24:41 +0200 (Sa, 16 Mai 2009) | 1 line
Fix about and bugs pages to match real workflow.
........
r72703 | georg.brandl | 2009-05-17 10:10:27 +0200 (So, 17 Mai 2009) | 1 line
part of #4144: fix exception message in console session.
........
r72708 | georg.brandl | 2009-05-17 10:24:29 +0200 (So, 17 Mai 2009) | 1 line
#6017: better document behavior of dictiterators when the dict is changed.
........
r72710 | georg.brandl | 2009-05-17 10:36:04 +0200 (So, 17 Mai 2009) | 1 line
#5942: Copy over flag table from dbm.rst which is clearer.
........
r72712 | georg.brandl | 2009-05-17 10:55:00 +0200 (So, 17 Mai 2009) | 1 line
#5935: mention that BROWSER is looked for in PATH.
........
r72801 | georg.brandl | 2009-05-20 20:31:14 +0200 (Mi, 20 Mai 2009) | 1 line
#6055: refer to "sqlite3" consistently.
........
r72802 | georg.brandl | 2009-05-20 20:35:27 +0200 (Mi, 20 Mai 2009) | 1 line
#6051: refer to email examples for better way to construct email messages.
........
r72820 | georg.brandl | 2009-05-22 09:23:32 +0200 (Fr, 22 Mai 2009) | 1 line
Use raise X(y).
........
r72822 | georg.brandl | 2009-05-22 11:33:25 +0200 (Fr, 22 Mai 2009) | 1 line
#6084: fix example.
........
r72824 | georg.brandl | 2009-05-22 11:43:17 +0200 (Fr, 22 Mai 2009) | 1 line
Fix references to file-related functions and methods (os.* vs file.*).
........
r72826 | georg.brandl | 2009-05-22 11:49:42 +0200 (Fr, 22 Mai 2009) | 1 line
Fix confusing wording.
........
r72827 | georg.brandl | 2009-05-22 11:50:30 +0200 (Fr, 22 Mai 2009) | 1 line
s/use/call/
........
r72828 | georg.brandl | 2009-05-22 11:58:48 +0200 (Fr, 22 Mai 2009) | 1 line
Correction in softspace behavior description.
........
r72830 | georg.brandl | 2009-05-22 12:40:00 +0200 (Fr, 22 Mai 2009) | 1 line
#6086: fix spelling and use a better exception to catch.
........
2009-05-26 06:04:23 -03:00
|
|
|
""" Tests for the linecache module """
|
|
|
|
|
|
|
|
import linecache
|
|
|
|
import unittest
|
|
|
|
import os.path
|
|
|
|
from test import test_support as support
|
|
|
|
|
|
|
|
|
|
|
|
FILENAME = linecache.__file__
|
|
|
|
INVALID_NAME = '!@$)(!@#_1'
|
|
|
|
EMPTY = ''
|
|
|
|
TESTS = 'cjkencodings_test inspect_fodder inspect_fodder2 mapping_tests'
|
|
|
|
TESTS = TESTS.split()
|
|
|
|
TEST_PATH = os.path.dirname(support.__file__)
|
|
|
|
MODULES = "linecache unittest".split()
|
|
|
|
MODULE_PATH = os.path.dirname(FILENAME)
|
|
|
|
|
|
|
|
SOURCE_1 = '''
|
|
|
|
" Docstring "
|
|
|
|
|
|
|
|
def function():
|
|
|
|
return result
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
SOURCE_2 = '''
|
|
|
|
def f():
|
|
|
|
return 1 + 1
|
|
|
|
|
|
|
|
a = f()
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
class LineCacheTests(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_getline(self):
|
|
|
|
getline = linecache.getline
|
|
|
|
|
|
|
|
# Bad values for line number should return an empty string
|
|
|
|
self.assertEquals(getline(FILENAME, 2**15), EMPTY)
|
|
|
|
self.assertEquals(getline(FILENAME, -1), EMPTY)
|
|
|
|
|
|
|
|
# Float values currently raise TypeError, should it?
|
|
|
|
self.assertRaises(TypeError, getline, FILENAME, 1.1)
|
|
|
|
|
|
|
|
# Bad filenames should return an empty string
|
|
|
|
self.assertEquals(getline(EMPTY, 1), EMPTY)
|
|
|
|
self.assertEquals(getline(INVALID_NAME, 1), EMPTY)
|
|
|
|
|
|
|
|
# Check whether lines correspond to those from file iteration
|
|
|
|
for entry in TESTS:
|
|
|
|
filename = os.path.join(TEST_PATH, entry) + '.py'
|
|
|
|
for index, line in enumerate(open(filename)):
|
|
|
|
self.assertEquals(line, getline(filename, index + 1))
|
|
|
|
|
|
|
|
# Check module loading
|
|
|
|
for entry in MODULES:
|
|
|
|
filename = os.path.join(MODULE_PATH, entry) + '.py'
|
|
|
|
for index, line in enumerate(open(filename)):
|
|
|
|
self.assertEquals(line, getline(filename, index + 1))
|
|
|
|
|
|
|
|
# Check that bogus data isn't returned (issue #1309567)
|
|
|
|
empty = linecache.getlines('a/b/c/__init__.py')
|
|
|
|
self.assertEquals(empty, [])
|
|
|
|
|
|
|
|
def test_clearcache(self):
|
|
|
|
cached = []
|
|
|
|
for entry in TESTS:
|
|
|
|
filename = os.path.join(TEST_PATH, entry) + '.py'
|
|
|
|
cached.append(filename)
|
|
|
|
linecache.getline(filename, 1)
|
|
|
|
|
|
|
|
# Are all files cached?
|
|
|
|
cached_empty = [fn for fn in cached if fn not in linecache.cache]
|
|
|
|
self.assertEquals(cached_empty, [])
|
|
|
|
|
|
|
|
# Can we clear the cache?
|
|
|
|
linecache.clearcache()
|
|
|
|
cached_empty = [fn for fn in cached if fn in linecache.cache]
|
|
|
|
self.assertEquals(cached_empty, [])
|
|
|
|
|
|
|
|
def test_checkcache(self):
|
|
|
|
getline = linecache.getline
|
|
|
|
try:
|
|
|
|
# Create a source file and cache its contents
|
2009-12-03 20:01:31 -04:00
|
|
|
source_name = support.TESTFN + '.py'
|
|
|
|
with open(source_name, 'w') as source:
|
|
|
|
source.write(SOURCE_1)
|
|
|
|
source.close()
|
|
|
|
getline(source_name, 1)
|
|
|
|
|
|
|
|
# Keep a copy of the old contents
|
|
|
|
source_list = []
|
|
|
|
source = open(source_name)
|
|
|
|
for index, line in enumerate(source):
|
|
|
|
self.assertEquals(line, getline(source_name, index + 1))
|
|
|
|
source_list.append(line)
|
|
|
|
source.close()
|
Merged revisions 72319-72320,72467,72661,72675-72679,72703,72708,72710,72712,72801-72802,72820,72822,72824,72826-72828,72830 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r72319 | georg.brandl | 2009-05-05 10:28:49 +0200 (Di, 05 Mai 2009) | 1 line
#1309567: fix linecache behavior of stripping subdirectories from paths when looking for relative filename matches. Also add a linecache test suite.
........
r72320 | georg.brandl | 2009-05-05 10:30:28 +0200 (Di, 05 Mai 2009) | 1 line
Add a news entry for r72319.
........
r72467 | georg.brandl | 2009-05-08 14:17:34 +0200 (Fr, 08 Mai 2009) | 1 line
Fix name.
........
r72661 | georg.brandl | 2009-05-15 10:03:03 +0200 (Fr, 15 Mai 2009) | 1 line
Fix example output for doctest-like demos.
........
r72675 | georg.brandl | 2009-05-16 13:13:21 +0200 (Sa, 16 Mai 2009) | 1 line
#6034: clarify __reversed__ doc.
........
r72676 | georg.brandl | 2009-05-16 13:14:46 +0200 (Sa, 16 Mai 2009) | 1 line
#6025: fix signature of parse().
........
r72677 | georg.brandl | 2009-05-16 13:18:55 +0200 (Sa, 16 Mai 2009) | 1 line
#6009: undocument default argument of Option as deprecated.
........
r72678 | georg.brandl | 2009-05-16 13:21:29 +0200 (Sa, 16 Mai 2009) | 1 line
#2856: document 2.x os.listdir() behavior for undecodable filenames.
........
r72679 | georg.brandl | 2009-05-16 13:24:41 +0200 (Sa, 16 Mai 2009) | 1 line
Fix about and bugs pages to match real workflow.
........
r72703 | georg.brandl | 2009-05-17 10:10:27 +0200 (So, 17 Mai 2009) | 1 line
part of #4144: fix exception message in console session.
........
r72708 | georg.brandl | 2009-05-17 10:24:29 +0200 (So, 17 Mai 2009) | 1 line
#6017: better document behavior of dictiterators when the dict is changed.
........
r72710 | georg.brandl | 2009-05-17 10:36:04 +0200 (So, 17 Mai 2009) | 1 line
#5942: Copy over flag table from dbm.rst which is clearer.
........
r72712 | georg.brandl | 2009-05-17 10:55:00 +0200 (So, 17 Mai 2009) | 1 line
#5935: mention that BROWSER is looked for in PATH.
........
r72801 | georg.brandl | 2009-05-20 20:31:14 +0200 (Mi, 20 Mai 2009) | 1 line
#6055: refer to "sqlite3" consistently.
........
r72802 | georg.brandl | 2009-05-20 20:35:27 +0200 (Mi, 20 Mai 2009) | 1 line
#6051: refer to email examples for better way to construct email messages.
........
r72820 | georg.brandl | 2009-05-22 09:23:32 +0200 (Fr, 22 Mai 2009) | 1 line
Use raise X(y).
........
r72822 | georg.brandl | 2009-05-22 11:33:25 +0200 (Fr, 22 Mai 2009) | 1 line
#6084: fix example.
........
r72824 | georg.brandl | 2009-05-22 11:43:17 +0200 (Fr, 22 Mai 2009) | 1 line
Fix references to file-related functions and methods (os.* vs file.*).
........
r72826 | georg.brandl | 2009-05-22 11:49:42 +0200 (Fr, 22 Mai 2009) | 1 line
Fix confusing wording.
........
r72827 | georg.brandl | 2009-05-22 11:50:30 +0200 (Fr, 22 Mai 2009) | 1 line
s/use/call/
........
r72828 | georg.brandl | 2009-05-22 11:58:48 +0200 (Fr, 22 Mai 2009) | 1 line
Correction in softspace behavior description.
........
r72830 | georg.brandl | 2009-05-22 12:40:00 +0200 (Fr, 22 Mai 2009) | 1 line
#6086: fix spelling and use a better exception to catch.
........
2009-05-26 06:04:23 -03:00
|
|
|
|
2009-12-03 20:01:31 -04:00
|
|
|
source = open(source_name, 'w')
|
|
|
|
source.write(SOURCE_2)
|
Merged revisions 72319-72320,72467,72661,72675-72679,72703,72708,72710,72712,72801-72802,72820,72822,72824,72826-72828,72830 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r72319 | georg.brandl | 2009-05-05 10:28:49 +0200 (Di, 05 Mai 2009) | 1 line
#1309567: fix linecache behavior of stripping subdirectories from paths when looking for relative filename matches. Also add a linecache test suite.
........
r72320 | georg.brandl | 2009-05-05 10:30:28 +0200 (Di, 05 Mai 2009) | 1 line
Add a news entry for r72319.
........
r72467 | georg.brandl | 2009-05-08 14:17:34 +0200 (Fr, 08 Mai 2009) | 1 line
Fix name.
........
r72661 | georg.brandl | 2009-05-15 10:03:03 +0200 (Fr, 15 Mai 2009) | 1 line
Fix example output for doctest-like demos.
........
r72675 | georg.brandl | 2009-05-16 13:13:21 +0200 (Sa, 16 Mai 2009) | 1 line
#6034: clarify __reversed__ doc.
........
r72676 | georg.brandl | 2009-05-16 13:14:46 +0200 (Sa, 16 Mai 2009) | 1 line
#6025: fix signature of parse().
........
r72677 | georg.brandl | 2009-05-16 13:18:55 +0200 (Sa, 16 Mai 2009) | 1 line
#6009: undocument default argument of Option as deprecated.
........
r72678 | georg.brandl | 2009-05-16 13:21:29 +0200 (Sa, 16 Mai 2009) | 1 line
#2856: document 2.x os.listdir() behavior for undecodable filenames.
........
r72679 | georg.brandl | 2009-05-16 13:24:41 +0200 (Sa, 16 Mai 2009) | 1 line
Fix about and bugs pages to match real workflow.
........
r72703 | georg.brandl | 2009-05-17 10:10:27 +0200 (So, 17 Mai 2009) | 1 line
part of #4144: fix exception message in console session.
........
r72708 | georg.brandl | 2009-05-17 10:24:29 +0200 (So, 17 Mai 2009) | 1 line
#6017: better document behavior of dictiterators when the dict is changed.
........
r72710 | georg.brandl | 2009-05-17 10:36:04 +0200 (So, 17 Mai 2009) | 1 line
#5942: Copy over flag table from dbm.rst which is clearer.
........
r72712 | georg.brandl | 2009-05-17 10:55:00 +0200 (So, 17 Mai 2009) | 1 line
#5935: mention that BROWSER is looked for in PATH.
........
r72801 | georg.brandl | 2009-05-20 20:31:14 +0200 (Mi, 20 Mai 2009) | 1 line
#6055: refer to "sqlite3" consistently.
........
r72802 | georg.brandl | 2009-05-20 20:35:27 +0200 (Mi, 20 Mai 2009) | 1 line
#6051: refer to email examples for better way to construct email messages.
........
r72820 | georg.brandl | 2009-05-22 09:23:32 +0200 (Fr, 22 Mai 2009) | 1 line
Use raise X(y).
........
r72822 | georg.brandl | 2009-05-22 11:33:25 +0200 (Fr, 22 Mai 2009) | 1 line
#6084: fix example.
........
r72824 | georg.brandl | 2009-05-22 11:43:17 +0200 (Fr, 22 Mai 2009) | 1 line
Fix references to file-related functions and methods (os.* vs file.*).
........
r72826 | georg.brandl | 2009-05-22 11:49:42 +0200 (Fr, 22 Mai 2009) | 1 line
Fix confusing wording.
........
r72827 | georg.brandl | 2009-05-22 11:50:30 +0200 (Fr, 22 Mai 2009) | 1 line
s/use/call/
........
r72828 | georg.brandl | 2009-05-22 11:58:48 +0200 (Fr, 22 Mai 2009) | 1 line
Correction in softspace behavior description.
........
r72830 | georg.brandl | 2009-05-22 12:40:00 +0200 (Fr, 22 Mai 2009) | 1 line
#6086: fix spelling and use a better exception to catch.
........
2009-05-26 06:04:23 -03:00
|
|
|
source.close()
|
2009-12-03 20:01:31 -04:00
|
|
|
|
|
|
|
# Try to update a bogus cache entry
|
|
|
|
linecache.checkcache('dummy')
|
|
|
|
|
|
|
|
# Check that the cache matches the old contents
|
|
|
|
for index, line in enumerate(source_list):
|
|
|
|
self.assertEquals(line, getline(source_name, index + 1))
|
|
|
|
|
|
|
|
# Update the cache and check whether it matches the new source file
|
|
|
|
linecache.checkcache(source_name)
|
|
|
|
source = open(source_name)
|
|
|
|
for index, line in enumerate(source):
|
|
|
|
self.assertEquals(line, getline(source_name, index + 1))
|
|
|
|
source_list.append(line)
|
|
|
|
|
|
|
|
finally:
|
|
|
|
support.unlink(source_name)
|
Merged revisions 72319-72320,72467,72661,72675-72679,72703,72708,72710,72712,72801-72802,72820,72822,72824,72826-72828,72830 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r72319 | georg.brandl | 2009-05-05 10:28:49 +0200 (Di, 05 Mai 2009) | 1 line
#1309567: fix linecache behavior of stripping subdirectories from paths when looking for relative filename matches. Also add a linecache test suite.
........
r72320 | georg.brandl | 2009-05-05 10:30:28 +0200 (Di, 05 Mai 2009) | 1 line
Add a news entry for r72319.
........
r72467 | georg.brandl | 2009-05-08 14:17:34 +0200 (Fr, 08 Mai 2009) | 1 line
Fix name.
........
r72661 | georg.brandl | 2009-05-15 10:03:03 +0200 (Fr, 15 Mai 2009) | 1 line
Fix example output for doctest-like demos.
........
r72675 | georg.brandl | 2009-05-16 13:13:21 +0200 (Sa, 16 Mai 2009) | 1 line
#6034: clarify __reversed__ doc.
........
r72676 | georg.brandl | 2009-05-16 13:14:46 +0200 (Sa, 16 Mai 2009) | 1 line
#6025: fix signature of parse().
........
r72677 | georg.brandl | 2009-05-16 13:18:55 +0200 (Sa, 16 Mai 2009) | 1 line
#6009: undocument default argument of Option as deprecated.
........
r72678 | georg.brandl | 2009-05-16 13:21:29 +0200 (Sa, 16 Mai 2009) | 1 line
#2856: document 2.x os.listdir() behavior for undecodable filenames.
........
r72679 | georg.brandl | 2009-05-16 13:24:41 +0200 (Sa, 16 Mai 2009) | 1 line
Fix about and bugs pages to match real workflow.
........
r72703 | georg.brandl | 2009-05-17 10:10:27 +0200 (So, 17 Mai 2009) | 1 line
part of #4144: fix exception message in console session.
........
r72708 | georg.brandl | 2009-05-17 10:24:29 +0200 (So, 17 Mai 2009) | 1 line
#6017: better document behavior of dictiterators when the dict is changed.
........
r72710 | georg.brandl | 2009-05-17 10:36:04 +0200 (So, 17 Mai 2009) | 1 line
#5942: Copy over flag table from dbm.rst which is clearer.
........
r72712 | georg.brandl | 2009-05-17 10:55:00 +0200 (So, 17 Mai 2009) | 1 line
#5935: mention that BROWSER is looked for in PATH.
........
r72801 | georg.brandl | 2009-05-20 20:31:14 +0200 (Mi, 20 Mai 2009) | 1 line
#6055: refer to "sqlite3" consistently.
........
r72802 | georg.brandl | 2009-05-20 20:35:27 +0200 (Mi, 20 Mai 2009) | 1 line
#6051: refer to email examples for better way to construct email messages.
........
r72820 | georg.brandl | 2009-05-22 09:23:32 +0200 (Fr, 22 Mai 2009) | 1 line
Use raise X(y).
........
r72822 | georg.brandl | 2009-05-22 11:33:25 +0200 (Fr, 22 Mai 2009) | 1 line
#6084: fix example.
........
r72824 | georg.brandl | 2009-05-22 11:43:17 +0200 (Fr, 22 Mai 2009) | 1 line
Fix references to file-related functions and methods (os.* vs file.*).
........
r72826 | georg.brandl | 2009-05-22 11:49:42 +0200 (Fr, 22 Mai 2009) | 1 line
Fix confusing wording.
........
r72827 | georg.brandl | 2009-05-22 11:50:30 +0200 (Fr, 22 Mai 2009) | 1 line
s/use/call/
........
r72828 | georg.brandl | 2009-05-22 11:58:48 +0200 (Fr, 22 Mai 2009) | 1 line
Correction in softspace behavior description.
........
r72830 | georg.brandl | 2009-05-22 12:40:00 +0200 (Fr, 22 Mai 2009) | 1 line
#6086: fix spelling and use a better exception to catch.
........
2009-05-26 06:04:23 -03:00
|
|
|
|
|
|
|
def test_main():
|
|
|
|
support.run_unittest(LineCacheTests)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
test_main()
|