[#140 state:fixed] Fixed a crash on dupe renaming.

This commit is contained in:
Virgil Dupras 2011-04-13 16:23:22 +02:00
parent f33f30eabf
commit f28ffc680a
2 changed files with 11 additions and 0 deletions

View File

@ -102,6 +102,10 @@ class ResultTable(GUIObject, GUITable):
def rename_selected(self, newname):
row = self.selected_row
if row is None:
# There's all kinds of way the current row can be swept off during rename. When it
# happens, selected_row will be None.
return False
row._data = None
row._data_delta = None
return self.app.rename_selected(newname)

View File

@ -136,6 +136,13 @@ class TestCaseDupeGuru:
app.start_scanning()
eq_(len(app.results.groups), 0)
def test_rename_when_nothing_is_selected(self):
# It's possible that rename operation has its selected row swept off from under it, thus
# making the selected row None. Don't crash when it happens.
dgapp = DupeGuru()
rtable = ResultTable(CallLogger(), dgapp)
# selected_row is None because there's no result.
assert not rtable.rename_selected('foo') # no crash
class TestCaseDupeGuru_clean_empty_dirs:
def pytest_funcarg__do_setup(self, request):