mirror of
				https://github.com/arsenetar/dupeguru.git
				synced 2025-09-11 17:58:17 +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