예제 #1
0
class TestMergeTask(unittest.TestCase):
    def setUp(self):
        self.task = MergeDirTask(get_sample_task_base(), "", "")

    def test_list_local_items(self):
        """ list_local_items lists local items, renaming case-INsensitively duplicate ones and applying ignore list."""
        files = {
            "dir1.xxx": True,
            "Dir1.xxx": True,  # Case conflict with 'dir1'.
            "dir2": True,
            "file1": False,
            ".file1.!od": False,
        }
        m = mock.Mock(return_value=None)
        os.listdir = lambda path: sorted(files.keys())
        os.path.isdir = lambda path: files[path.replace(self.task.local_path + "/", "", 1)]
        os.rename = m
        all_local_items = self.task._list_local_items()
        self.assertSetEqual({"Dir1.xxx", "dir1 1 (case conflict).xxx", "dir2", "file1"}, all_local_items)
        m.assert_called_once_with(
            self.task.drive.config.local_root + "/" + "dir1.xxx",
            self.task.drive.config.local_root + "/" + "dir1 1 (case conflict).xxx",
        )

    def test_list_local_items_error(self):
        """ If a file has naming conflict and fails, ignore it. """
        files = ["foo", "Foo"]
        os.listdir = lambda p: files
        os.path.isdir = lambda p: False
        m = mock.Mock(side_effect=OSError())
        os.rename = m
        all_local_items = self.task._list_local_items()
        self.assertSetEqual({"foo"}, all_local_items)
예제 #2
0
def add_initial_tasks():
    all_drives = drive_store.get_all_drives()
    for key, drive in all_drives.items():
        # root_item = drive.get_root_dir(list_children=False)
        # print(root_item._data)
        base = TaskBase(None)
        base.drive = drive
        base.items_store = item_store_mgr.get_item_storage(drive)
        base.task_pool = task_store
        task = MergeDirTask(base, '', '')
        if not task_store.has_pending_task(task.local_path):
            task_store.add_task(task)
예제 #3
0
class TestMergeTask(unittest.TestCase):
    def setUp(self):
        self.task = MergeDirTask(get_sample_task_base(), '', '')

    def test_list_local_items(self):
        """ list_local_items lists local items, renaming case-INsensitively duplicate ones and applying ignore list."""
        files = {
            'dir1.xxx': True,
            'Dir1.xxx': True,  # Case conflict with 'dir1'.
            'dir2': True,
            'file1': False,
            '.file1.!od': False
        }
        m = mock.Mock(return_value=None)
        os.listdir = lambda path: sorted(files.keys())
        os.path.isdir = lambda path: files[path.replace(
            self.task.local_path + '/', '', 1)]
        os.rename = m
        all_local_items = self.task._list_local_items()
        self.assertSetEqual(
            {'Dir1.xxx', 'dir1 1 (case conflict).xxx', 'dir2', 'file1'},
            all_local_items)
        m.assert_called_once_with(
            self.task.drive.config.local_root + '/' + 'dir1.xxx',
            self.task.drive.config.local_root + '/' +
            'dir1 1 (case conflict).xxx')

    def test_list_local_items_error(self):
        """ If a file has naming conflict and fails, ignore it. """
        files = ['foo', 'Foo']
        os.listdir = lambda p: files
        os.path.isdir = lambda p: False
        m = mock.Mock(side_effect=OSError())
        os.rename = m
        all_local_items = self.task._list_local_items()
        self.assertSetEqual({'foo'}, all_local_items)
예제 #4
0
 def setUp(self):
     self.task = MergeDirTask(get_sample_task_base(), '', '')
예제 #5
0
 def setUp(self):
     self.task = MergeDirTask(get_sample_task_base(), "", "")