mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
[#3] py: added Dupeguru.get_*_node_paths()
--HG-- extra : convert_revision : svn%3Ac306627e-7827-47d3-bdf0-9a457c9553a1/trunk%4065
This commit is contained in:
parent
a3da162ea2
commit
d30591fd39
@ -13,8 +13,9 @@ import logging
|
|||||||
import os.path as op
|
import os.path as op
|
||||||
|
|
||||||
import hsfs as fs
|
import hsfs as fs
|
||||||
from hsutil.cocoa import install_exception_hook
|
|
||||||
from hsutil import io, cocoa, job
|
from hsutil import io, cocoa, job
|
||||||
|
from hsutil.cocoa import install_exception_hook
|
||||||
|
from hsutil.misc import stripnone
|
||||||
from hsutil.reg import RegistrationRequired
|
from hsutil.reg import RegistrationRequired
|
||||||
|
|
||||||
import export, app, data
|
import export, app, data
|
||||||
@ -179,6 +180,32 @@ class DupeGuru(app.DupeGuru):
|
|||||||
except app.AllFilesAreRefError:
|
except app.AllFilesAreRefError:
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
def selected_result_node_paths(self):
|
||||||
|
def get_path(dupe):
|
||||||
|
try:
|
||||||
|
group = self.results.get_group_of_duplicate(dupe)
|
||||||
|
groupindex = self.results.groups.index(group)
|
||||||
|
if dupe is group.ref:
|
||||||
|
return [groupindex]
|
||||||
|
dupeindex = group.dupes.index(dupe)
|
||||||
|
return [groupindex, dupeindex]
|
||||||
|
except ValueError: # dupe not in there
|
||||||
|
return None
|
||||||
|
|
||||||
|
dupes = self.selected_dupes
|
||||||
|
return stripnone(get_path(dupe) for dupe in dupes)
|
||||||
|
|
||||||
|
def selected_powermarker_node_paths(self):
|
||||||
|
def get_path(dupe):
|
||||||
|
try:
|
||||||
|
dupeindex = self.results.dupes.index(dupe)
|
||||||
|
return [dupeindex]
|
||||||
|
except ValueError: # dupe not in there
|
||||||
|
return None
|
||||||
|
|
||||||
|
dupes = self.selected_dupes
|
||||||
|
return stripnone(get_path(dupe) for dupe in dupes)
|
||||||
|
|
||||||
def SelectResultNodePaths(self,node_paths):
|
def SelectResultNodePaths(self,node_paths):
|
||||||
def extract_dupe(t):
|
def extract_dupe(t):
|
||||||
g,d = t
|
g,d = t
|
||||||
|
@ -7,17 +7,19 @@
|
|||||||
import tempfile
|
import tempfile
|
||||||
import shutil
|
import shutil
|
||||||
import logging
|
import logging
|
||||||
|
import os.path as op
|
||||||
|
|
||||||
|
from nose.tools import eq_
|
||||||
|
|
||||||
from hsutil.path import Path
|
from hsutil.path import Path
|
||||||
from hsutil.testcase import TestCase
|
from hsutil.testcase import TestCase
|
||||||
from hsutil.decorators import log_calls
|
from hsutil.decorators import log_calls
|
||||||
import hsfs.phys
|
import hsfs.phys
|
||||||
import os.path as op
|
|
||||||
|
|
||||||
from .results_test import GetTestGroups
|
from .results_test import GetTestGroups
|
||||||
from .. import engine, data
|
from .. import engine, data
|
||||||
try:
|
try:
|
||||||
from ..app_cocoa import DupeGuru as DupeGuruBase, DGDirectory
|
from ..app_cocoa import DupeGuru as DupeGuruBase
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from nose.plugins.skip import SkipTest
|
from nose.plugins.skip import SkipTest
|
||||||
raise SkipTest("These tests can only be run on OS X")
|
raise SkipTest("These tests can only be run on OS X")
|
||||||
@ -70,6 +72,24 @@ class TCDupeGuru(TestCase):
|
|||||||
self.assertEqual((None,None),app.GetObjects([]))
|
self.assertEqual((None,None),app.GetObjects([]))
|
||||||
self.assertEqual((None,None),app.GetObjects([1,2]))
|
self.assertEqual((None,None),app.GetObjects([1,2]))
|
||||||
|
|
||||||
|
def test_selected_result_node_paths(self):
|
||||||
|
# app.selected_dupes is correctly converted into node paths
|
||||||
|
app = self.app
|
||||||
|
objects = self.objects
|
||||||
|
paths = [[0, 0], [0, 1], [1]]
|
||||||
|
app.SelectResultNodePaths(paths)
|
||||||
|
eq_(app.selected_result_node_paths(), paths)
|
||||||
|
|
||||||
|
def test_selected_result_node_paths_after_deletion(self):
|
||||||
|
# cases where the selected dupes aren't there are correctly handled
|
||||||
|
app = self.app
|
||||||
|
objects = self.objects
|
||||||
|
paths = [[0, 0], [0, 1], [1]]
|
||||||
|
app.SelectResultNodePaths(paths)
|
||||||
|
app.RemoveSelected()
|
||||||
|
# The first 2 dupes have been removed. The 3rd one is a ref. it stays there, in first pos.
|
||||||
|
eq_(app.selected_result_node_paths(), [[0]]) # no exception
|
||||||
|
|
||||||
def test_selectResultNodePaths(self):
|
def test_selectResultNodePaths(self):
|
||||||
app = self.app
|
app = self.app
|
||||||
objects = self.objects
|
objects = self.objects
|
||||||
@ -108,6 +128,23 @@ class TCDupeGuru(TestCase):
|
|||||||
app.SelectResultNodePaths([[0,0],[0,1],[1],[1,1],[2]])
|
app.SelectResultNodePaths([[0,0],[0,1],[1],[1,1],[2]])
|
||||||
self.assertEqual(3,len(app.selected_dupes))
|
self.assertEqual(3,len(app.selected_dupes))
|
||||||
|
|
||||||
|
def test_selected_powermarker_node_paths(self):
|
||||||
|
# app.selected_dupes is correctly converted into paths
|
||||||
|
app = self.app
|
||||||
|
objects = self.objects
|
||||||
|
paths = r2np([0, 1, 2])
|
||||||
|
app.SelectPowerMarkerNodePaths(paths)
|
||||||
|
eq_(app.selected_powermarker_node_paths(), paths)
|
||||||
|
|
||||||
|
def test_selected_powermarker_node_paths_after_deletion(self):
|
||||||
|
# cases where the selected dupes aren't there are correctly handled
|
||||||
|
app = self.app
|
||||||
|
objects = self.objects
|
||||||
|
paths = r2np([0, 1, 2])
|
||||||
|
app.SelectPowerMarkerNodePaths(paths)
|
||||||
|
app.RemoveSelected()
|
||||||
|
eq_(app.selected_powermarker_node_paths(), []) # no exception
|
||||||
|
|
||||||
def test_selectPowerMarkerRows(self):
|
def test_selectPowerMarkerRows(self):
|
||||||
app = self.app
|
app = self.app
|
||||||
objects = self.objects
|
objects = self.objects
|
||||||
@ -249,9 +286,6 @@ class TCDupeGuru(TestCase):
|
|||||||
app.SelectPowerMarkerNodePaths(r2np([2])) #The dupe of the second, 2 sized group
|
app.SelectPowerMarkerNodePaths(r2np([2])) #The dupe of the second, 2 sized group
|
||||||
app.AddSelectedToIgnoreList()
|
app.AddSelectedToIgnoreList()
|
||||||
|
|
||||||
def test_dirclass(self):
|
|
||||||
self.assert_(self.app.directories.dirclass is DGDirectory)
|
|
||||||
|
|
||||||
|
|
||||||
class TCDupeGuru_renameSelected(TestCase):
|
class TCDupeGuru_renameSelected(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user