mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Fixed unittests.
This commit is contained in:
parent
fc5a0d914b
commit
9226a4fb7c
@ -121,9 +121,8 @@ class TestCaseDupeGuru:
|
||||
# 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
|
||||
assert not dgapp.result_table.rename_selected('foo') # no crash
|
||||
|
||||
class TestCaseDupeGuru_clean_empty_dirs:
|
||||
def pytest_funcarg__do_setup(self, request):
|
||||
@ -174,7 +173,8 @@ class TestCaseDupeGuruWithResults:
|
||||
self.dtree_gui = CallLogger()
|
||||
self.dtree = DirectoryTree(self.dtree_gui, self.app)
|
||||
self.rtable_gui = CallLogger()
|
||||
self.rtable = ResultTable(self.rtable_gui, self.app)
|
||||
self.rtable = self.app.result_table
|
||||
self.rtable.view = self.rtable_gui
|
||||
self.dpanel.connect()
|
||||
self.dtree.connect()
|
||||
self.rtable.connect()
|
||||
@ -200,7 +200,7 @@ class TestCaseDupeGuruWithResults:
|
||||
def test_GetObjects_after_sort(self, do_setup):
|
||||
objects = self.objects
|
||||
groups = self.groups[:] # we need an un-sorted reference
|
||||
self.rtable.sort(0, False) #0 = Filename
|
||||
self.rtable.sort('name', False)
|
||||
r = self.rtable[1]
|
||||
assert r._group is groups[1]
|
||||
assert r._dupe is objects[4]
|
||||
@ -233,7 +233,7 @@ class TestCaseDupeGuruWithResults:
|
||||
app = self.app
|
||||
objects = self.objects
|
||||
groups = self.groups[:] #To keep the old order in memory
|
||||
self.rtable.sort(0, False) #0 = Filename
|
||||
self.rtable.sort('name', False) #0
|
||||
#Now, the group order is supposed to be reversed
|
||||
self.rtable.select([1, 2, 3])
|
||||
eq_(len(app.selected_dupes), 3)
|
||||
@ -260,7 +260,7 @@ class TestCaseDupeGuruWithResults:
|
||||
app = self.app
|
||||
objects = self.objects
|
||||
self.rtable.power_marker = True
|
||||
self.rtable.sort(0, False) #0 = Filename
|
||||
self.rtable.sort('name', False)
|
||||
self.rtable.select([0, 1, 2])
|
||||
eq_(len(app.selected_dupes), 3)
|
||||
assert app.selected_dupes[0] is objects[4]
|
||||
@ -429,7 +429,8 @@ class TestCaseDupeGuru_renameSelected:
|
||||
self.p = p
|
||||
self.files = files
|
||||
self.rtable_gui = CallLogger()
|
||||
self.rtable = ResultTable(self.rtable_gui, self.app)
|
||||
self.rtable = self.app.result_table
|
||||
self.rtable.view = self.rtable_gui
|
||||
self.rtable.connect()
|
||||
|
||||
def test_simple(self, do_setup):
|
||||
|
@ -9,15 +9,16 @@
|
||||
from hscommon.testutil import TestApp as TestAppBase, eq_, with_app
|
||||
from hscommon.path import Path
|
||||
from hscommon.util import get_file_ext, format_size
|
||||
from hscommon.gui.column import Column
|
||||
from jobprogress.job import nulljob, JobCancelled
|
||||
|
||||
from .. import engine
|
||||
from .. import prioritize
|
||||
from ..engine import getwords
|
||||
from ..app import DupeGuru as DupeGuruBase, Column, cmp_value
|
||||
from ..app import DupeGuru as DupeGuruBase, cmp_value
|
||||
from ..gui.details_panel import DetailsPanel
|
||||
from ..gui.directory_tree import DirectoryTree
|
||||
from ..gui.result_table import ResultTable
|
||||
from ..gui.result_table import ResultTable as ResultTableBase
|
||||
from ..gui.prioritize_dialog import PrioritizeDialog
|
||||
|
||||
class DupeGuruView:
|
||||
@ -36,18 +37,22 @@ class DupeGuruView:
|
||||
pass
|
||||
|
||||
|
||||
class DupeGuru(DupeGuruBase):
|
||||
class ResultTable(ResultTableBase):
|
||||
COLUMNS = [
|
||||
Column('marked', ''),
|
||||
Column('name', 'Filename'),
|
||||
Column('folder_path', 'Directory'),
|
||||
Column('size', 'Size (KB)'),
|
||||
Column('extension', 'Kind'),
|
||||
]
|
||||
DELTA_COLUMNS = {'size', }
|
||||
|
||||
class DupeGuru(DupeGuruBase):
|
||||
METADATA_TO_READ = ['size']
|
||||
|
||||
def __init__(self):
|
||||
DupeGuruBase.__init__(self, DupeGuruView(), '/tmp')
|
||||
self.result_table = ResultTable(self)
|
||||
|
||||
def _get_display_info(self, dupe, group, delta):
|
||||
size = dupe.size
|
||||
@ -55,21 +60,21 @@ class DupeGuru(DupeGuruBase):
|
||||
if m and delta:
|
||||
r = group.ref
|
||||
size -= r.size
|
||||
return [
|
||||
dupe.name,
|
||||
str(dupe.folder_path),
|
||||
format_size(size, 0, 1, False),
|
||||
dupe.extension if hasattr(dupe, 'extension') else '---',
|
||||
]
|
||||
return {
|
||||
'name': dupe.name,
|
||||
'folder_path': str(dupe.folder_path),
|
||||
'size': format_size(size, 0, 1, False),
|
||||
'extension': dupe.extension if hasattr(dupe, 'extension') else '---',
|
||||
}
|
||||
|
||||
def _get_dupe_sort_key(self, dupe, get_group, key, delta):
|
||||
r = cmp_value(dupe, self.COLUMNS[key])
|
||||
if delta and (key in self.DELTA_COLUMNS):
|
||||
r -= cmp_value(get_group().ref, self.COLUMNS[key])
|
||||
r = cmp_value(dupe, key)
|
||||
if delta and (key in self.result_table.DELTA_COLUMNS):
|
||||
r -= cmp_value(get_group().ref, key)
|
||||
return r
|
||||
|
||||
def _get_group_sort_key(self, group, key):
|
||||
return cmp_value(group.ref, self.COLUMNS[key])
|
||||
return cmp_value(group.ref, key)
|
||||
|
||||
def _prioritization_categories(self):
|
||||
return prioritize.all_categories()
|
||||
@ -120,14 +125,20 @@ def GetTestGroups():
|
||||
|
||||
class TestApp(TestAppBase):
|
||||
def __init__(self):
|
||||
def link_gui(gui):
|
||||
gui.view = self.make_logger()
|
||||
if hasattr(gui, 'columns'): # tables
|
||||
gui.columns.view = self.make_logger()
|
||||
return gui
|
||||
|
||||
TestAppBase.__init__(self)
|
||||
make_gui = self.make_gui
|
||||
self.app = DupeGuru()
|
||||
# XXX After hscommon.testutil.TestApp has had its default parent changed to seomthing
|
||||
# customizable (with adjustments in moneyguru) we can get rid of 'parent='
|
||||
make_gui('rtable', ResultTable, parent=self.app)
|
||||
make_gui('dtree', DirectoryTree, parent=self.app)
|
||||
make_gui('dpanel', DetailsPanel, parent=self.app)
|
||||
make_gui('pdialog', PrioritizeDialog, parent=self.app)
|
||||
self.default_parent = self.app
|
||||
self.rtable = link_gui(self.app.result_table)
|
||||
make_gui('dtree', DirectoryTree)
|
||||
make_gui('dpanel', DetailsPanel)
|
||||
make_gui('pdialog', PrioritizeDialog)
|
||||
for elem in [self.rtable, self.dtree, self.dpanel]:
|
||||
elem.connect()
|
||||
|
||||
|
@ -54,7 +54,7 @@ def test_kind_reprioritization(app):
|
||||
app.pdialog.criteria_list.select([1]) # ext2
|
||||
app.pdialog.add_selected()
|
||||
app.pdialog.perform_reprioritization()
|
||||
eq_(app.rtable[0].data[0], 'foo2.ext2')
|
||||
eq_(app.rtable[0].data['name'], 'foo2.ext2')
|
||||
|
||||
@with_app(app_normal_results)
|
||||
def test_folder_subcrit(app):
|
||||
@ -67,7 +67,7 @@ def test_folder_reprioritization(app):
|
||||
app.pdialog.criteria_list.select([1]) # folder2
|
||||
app.pdialog.add_selected()
|
||||
app.pdialog.perform_reprioritization()
|
||||
eq_(app.rtable[0].data[0], 'foo2.ext2')
|
||||
eq_(app.rtable[0].data['name'], 'foo2.ext2')
|
||||
|
||||
@with_app(app_normal_results)
|
||||
def test_prilist_display(app):
|
||||
@ -99,7 +99,7 @@ def test_size_reprioritization(app):
|
||||
app.pdialog.criteria_list.select([0]) # highest
|
||||
app.pdialog.add_selected()
|
||||
app.pdialog.perform_reprioritization()
|
||||
eq_(app.rtable[0].data[0], 'foo2.ext2')
|
||||
eq_(app.rtable[0].data['name'], 'foo2.ext2')
|
||||
|
||||
@with_app(app_normal_results)
|
||||
def test_reorder_prioritizations(app):
|
||||
@ -137,7 +137,7 @@ def app_one_name_ends_with_number():
|
||||
def test_filename_reprioritization(app):
|
||||
app.add_pri_criterion("Filename", 0) # Ends with a number
|
||||
app.pdialog.perform_reprioritization()
|
||||
eq_(app.rtable[0].data[0], 'foo1.ext')
|
||||
eq_(app.rtable[0].data['name'], 'foo1.ext')
|
||||
|
||||
#---
|
||||
def app_with_subfolders():
|
||||
@ -166,8 +166,8 @@ def test_folder_crit_includes_subfolders(app):
|
||||
app.add_pri_criterion("Folder", 1) # foo
|
||||
app.pdialog.perform_reprioritization()
|
||||
# Both foo and foo/bar dupes will be prioritized
|
||||
eq_(app.rtable[0].data[0], 'foo2')
|
||||
eq_(app.rtable[2].data[0], 'foo4')
|
||||
eq_(app.rtable[0].data['name'], 'foo2')
|
||||
eq_(app.rtable[2].data['name'], 'foo4')
|
||||
|
||||
@with_app(app_with_subfolders)
|
||||
def test_display_something_on_empty_extensions(app):
|
||||
|
@ -119,16 +119,16 @@ class TestCaseResultsWithSomeGroups:
|
||||
def test_sort_groups(self):
|
||||
self.results.make_ref(self.objects[1]) #We want to make the 1024 sized object to go ref.
|
||||
g1,g2 = self.groups
|
||||
self.results.sort_groups(2) #2 is the key for size
|
||||
self.results.sort_groups('size')
|
||||
assert self.results.groups[0] is g2
|
||||
assert self.results.groups[1] is g1
|
||||
self.results.sort_groups(2,False)
|
||||
self.results.sort_groups('size', False)
|
||||
assert self.results.groups[0] is g1
|
||||
assert self.results.groups[1] is g2
|
||||
|
||||
def test_set_groups_when_sorted(self):
|
||||
self.results.make_ref(self.objects[1]) #We want to make the 1024 sized object to go ref.
|
||||
self.results.sort_groups(2)
|
||||
self.results.sort_groups('size')
|
||||
objects,matches,groups = GetTestGroups()
|
||||
g1,g2 = groups
|
||||
g1.switch_ref(objects[1])
|
||||
@ -159,9 +159,9 @@ class TestCaseResultsWithSomeGroups:
|
||||
o3.size = 3
|
||||
o4.size = 2
|
||||
o5.size = 1
|
||||
self.results.sort_dupes(2)
|
||||
self.results.sort_dupes('size')
|
||||
eq_([o5,o3,o2],self.results.dupes)
|
||||
self.results.sort_dupes(2,False)
|
||||
self.results.sort_dupes('size', False)
|
||||
eq_([o2,o3,o5],self.results.dupes)
|
||||
|
||||
def test_dupe_list_remember_sort(self):
|
||||
@ -171,7 +171,7 @@ class TestCaseResultsWithSomeGroups:
|
||||
o3.size = 3
|
||||
o4.size = 2
|
||||
o5.size = 1
|
||||
self.results.sort_dupes(2)
|
||||
self.results.sort_dupes('size')
|
||||
self.results.make_ref(o2)
|
||||
eq_([o5,o3,o1],self.results.dupes)
|
||||
|
||||
@ -182,14 +182,14 @@ class TestCaseResultsWithSomeGroups:
|
||||
o3.size = 3 #-7
|
||||
o4.size = 20
|
||||
o5.size = 1 #-19
|
||||
self.results.sort_dupes(2,delta=True)
|
||||
self.results.sort_dupes('size', delta=True)
|
||||
eq_([o5,o2,o3],self.results.dupes)
|
||||
|
||||
def test_sort_empty_list(self):
|
||||
#There was an infinite loop when sorting an empty list.
|
||||
app = DupeGuru()
|
||||
r = app.results
|
||||
r.sort_dupes(0)
|
||||
r.sort_dupes('name')
|
||||
eq_([],r.dupes)
|
||||
|
||||
def test_dupe_list_update_on_remove_duplicates(self):
|
||||
@ -720,13 +720,13 @@ class TestCaseResultsFilter:
|
||||
self.results.make_ref(self.objects[1]) # to have the 1024 b obkect as ref
|
||||
g1,g2 = self.groups
|
||||
self.results.apply_filter('a') # Matches both group
|
||||
self.results.sort_groups(2) #2 is the key for size
|
||||
self.results.sort_groups('size')
|
||||
assert self.results.groups[0] is g2
|
||||
assert self.results.groups[1] is g1
|
||||
self.results.apply_filter(None)
|
||||
assert self.results.groups[0] is g2
|
||||
assert self.results.groups[1] is g1
|
||||
self.results.sort_groups(2, False)
|
||||
self.results.sort_groups('size', False)
|
||||
self.results.apply_filter('a')
|
||||
assert self.results.groups[1] is g2
|
||||
assert self.results.groups[0] is g1
|
||||
|
Loading…
x
Reference in New Issue
Block a user