-
-
Notifications
You must be signed in to change notification settings - Fork 32.5k
bpo-25872: Add unit tests for linecache and threading #25913
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
5143e74
fc1f92d
fc4df5d
a977922
759de2b
5666a1d
4513859
8376d21
708e348
f021de2
a396fad
833c9b9
bcc20ab
ba62b83
420a638
2c8269b
8efe040
240eb9a
f66a050
78897e7
ac550ef
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -238,47 +238,48 @@ def raise_memoryerror(*args, **kwargs): | |
self.assertEqual(lines3, []) | ||
self.assertEqual(linecache.getlines(FILENAME), lines) | ||
|
||
def test_oserror(self): | ||
def _oserror_helper(): | ||
linecache.clearcache() | ||
be_deleted_file = os_helper.TESTFN + '.1' | ||
be_modified_file = os_helper.TESTFN + '.2' | ||
unchange_file = os_helper.TESTFN + '.3' | ||
self.addCleanup(os_helper.unlink, be_deleted_file) | ||
self.addCleanup(os_helper.unlink, be_modified_file) | ||
self.addCleanup(os_helper.unlink, unchange_file) | ||
with open(be_deleted_file, 'w', encoding='utf-8') as source: | ||
source.write('print("will be deleted")') | ||
with open(be_modified_file, 'w', encoding='utf-8') as source: | ||
source.write('print("will be modified")') | ||
with open(unchange_file, 'w', encoding='utf-8') as source: | ||
source.write('print("unchange")') | ||
|
||
_ = linecache.getlines(be_deleted_file) | ||
_ = linecache.getlines(be_modified_file) | ||
_ = linecache.getlines(unchange_file) | ||
self.assertEqual(3, len(linecache.cache.keys())) | ||
|
||
os.remove(be_deleted_file) | ||
with open(be_modified_file, 'w', encoding='utf-8') as source: | ||
source.write('print("was modified")') | ||
return (be_deleted_file, be_modified_file, unchange_file) | ||
|
||
deleted_file, modified_file, unchange_file = _oserror_helper() | ||
_ = linecache.checkcache(deleted_file) | ||
self.assertEqual(2, len(linecache.cache.keys())) | ||
_ = linecache.checkcache(modified_file) | ||
self.assertEqual(1, len(linecache.cache.keys())) | ||
_ = linecache.checkcache(unchange_file) | ||
self.assertEqual(1, len(linecache.cache.keys())) | ||
|
||
deleted_file, modified_file, unchange_file = _oserror_helper() | ||
_ = linecache.updatecache(deleted_file) | ||
self.assertEqual(2, len(linecache.cache.keys())) | ||
_ = linecache.updatecache(modified_file) | ||
self.assertEqual(2, len(linecache.cache.keys())) | ||
_ = linecache.updatecache(unchange_file) | ||
self.assertEqual(2, len(linecache.cache.keys())) | ||
|
||
class LineCacheInvalidationTests(unittest.TestCase): | ||
def setUp(self): | ||
super().setUp() | ||
linecache.clearcache() | ||
self.deleted_file = os_helper.TESTFN + '.1' | ||
self.modified_file = os_helper.TESTFN + '.2' | ||
self.unchange_file = os_helper.TESTFN + '.3' | ||
self.addCleanup(os_helper.unlink, self.deleted_file) | ||
self.addCleanup(os_helper.unlink, self.modified_file) | ||
self.addCleanup(os_helper.unlink, self.unchange_file) | ||
with open(self.deleted_file, 'w', encoding='utf-8') as source: | ||
source.write('print("will be deleted")') | ||
with open(self.modified_file, 'w', encoding='utf-8') as source: | ||
source.write('print("will be modified")') | ||
with open(self.unchange_file, 'w', encoding='utf-8') as source: | ||
source.write('print("unchange")') | ||
|
||
linecache.getlines(self.deleted_file) | ||
linecache.getlines(self.modified_file) | ||
linecache.getlines(self.unchange_file) | ||
|
||
os.remove(self.deleted_file) | ||
with open(self.modified_file, 'w', encoding='utf-8') as source: | ||
source.write('print("was modified")') | ||
|
||
def test_checkcache_with_oserror(self): | ||
self.assertEqual(3, len(linecache.cache.keys())) | ||
linecache.checkcache(self.deleted_file) | ||
self.assertTrue(2 == len(linecache.cache.keys()) and | ||
self.deleted_file not in linecache.cache.keys()) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Break this up into assertEqual and assertNotIn. See the assert methods here: https://docs.python.org/3/library/unittest.html That way we get better error messages in the output when the assertion fails. |
||
|
||
def test_checkcache_with_not_match_size_or_timestamp(self): | ||
uniocto marked this conversation as resolved.
Show resolved
Hide resolved
|
||
self.assertEqual(3, len(linecache.cache.keys())) | ||
linecache.checkcache(self.modified_file) | ||
self.assertTrue(2 == len(linecache.cache.keys()) and | ||
self.modified_file not in linecache.cache.keys()) | ||
|
||
def test_checkcache_with_no_parameters(self): | ||
self.assertEqual(3, len(linecache.cache.keys())) | ||
linecache.checkcache() | ||
self.assertTrue([self.unchange_file] == list(linecache.cache.keys())) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. assertEqual |
||
|
||
|
||
if __name__ == "__main__": | ||
|
Uh oh!
There was an error while loading. Please reload this page.