コード例 #1
0
ファイル: resources.py プロジェクト: phlax/pootle
def test_fs_state_tracked(fs_path_qs, dummyfs):
    (qfilter, pootle_path, fs_path) = fs_path_qs
    plugin = dummyfs
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    tracked = FSProjectStateResources(plugin, pootle_path=pootle_path, fs_path=fs_path).tracked
    assert list(tracked.order_by("pk")) == list(qs.order_by("pk"))
コード例 #2
0
ファイル: resources.py プロジェクト: r-o-b-b-i-e/pootle
def test_fs_state_resources(project0_fs_resources):
    project = project0_fs_resources
    plugin = DummyPlugin(project)
    state_resources = FSProjectStateResources(plugin)
    assert state_resources.resources is plugin.resources
    # resources are cached on state and plugin
    plugin.reload()
    assert state_resources.resources is not plugin.resources
    state_resources.reload()
    assert state_resources.resources is plugin.resources
コード例 #3
0
ファイル: resources.py プロジェクト: AshishNamdev/pootle
def test_fs_state_resources(project0_fs_resources):
    project = project0_fs_resources
    plugin = DummyPlugin(project)
    state_resources = FSProjectStateResources(plugin)
    assert state_resources.resources is plugin.resources
    # resources are cached on state and plugin
    plugin.reload()
    assert state_resources.resources is not plugin.resources
    state_resources.reload()
    assert state_resources.resources is plugin.resources
コード例 #4
0
ファイル: resources.py プロジェクト: phlax/pootle
def test_fs_state_unsynced(fs_path_qs, dummyfs):
    (qfilter, pootle_path, fs_path) = fs_path_qs
    plugin = dummyfs
    resources = FSProjectStateResources(plugin)
    resources.tracked.update(last_sync_hash=None, last_sync_revision=None)
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    unsynced = FSProjectStateResources(plugin, pootle_path=pootle_path, fs_path=fs_path).unsynced
    assert list(unsynced.order_by("pk")) == list(qs.order_by("pk"))
コード例 #5
0
ファイル: resources.py プロジェクト: r-o-b-b-i-e/pootle
def test_fs_state_tracked(fs_path_qs, dummyfs):
    (qfilter, pootle_path, fs_path) = fs_path_qs
    plugin = dummyfs
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    tracked = FSProjectStateResources(plugin,
                                      pootle_path=pootle_path,
                                      fs_path=fs_path).tracked
    assert (list(tracked.order_by("pk")) == list(qs.order_by("pk")))
コード例 #6
0
ファイル: resources.py プロジェクト: r-o-b-b-i-e/pootle
def test_fs_state_tracked_paths(fs_path_qs, dummyfs):
    (qfilter, pootle_path, fs_path) = fs_path_qs
    plugin = dummyfs
    resources = FSProjectStateResources(plugin)
    resources.tracked.update(last_sync_hash=None, last_sync_revision=None)
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    resources = FSProjectStateResources(plugin)
    assert (sorted(resources.tracked.values_list(
        "path", "pootle_path")) == sorted(resources.tracked_paths.items()))
コード例 #7
0
ファイル: resources.py プロジェクト: RevelSystems/cat-pootle
def test_fs_state_tracked_paths(fs_path_queries):
    plugin, (qfilter, pootle_path, fs_path) = fs_path_queries
    resources = FSProjectStateResources(plugin)
    for trackable in resources.trackable_stores:
        add_store_fs(*trackable)
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    resources = FSProjectStateResources(plugin)
    assert (sorted(resources.tracked.values_list(
        "path", "pootle_path")) == sorted(resources.tracked_paths.items()))
コード例 #8
0
ファイル: resources.py プロジェクト: r-o-b-b-i-e/pootle
def test_fs_state_unsynced(fs_path_qs, dummyfs):
    (qfilter, pootle_path, fs_path) = fs_path_qs
    plugin = dummyfs
    resources = FSProjectStateResources(plugin)
    resources.tracked.update(last_sync_hash=None, last_sync_revision=None)
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    unsynced = FSProjectStateResources(plugin,
                                       pootle_path=pootle_path,
                                       fs_path=fs_path).unsynced
    assert (list(unsynced.order_by("pk")) == list(qs.order_by("pk")))
コード例 #9
0
ファイル: resources.py プロジェクト: RevelSystems/cat-pootle
def test_fs_state_tracked(fs_path_queries):
    plugin, (qfilter, pootle_path, fs_path) = fs_path_queries
    resources = FSProjectStateResources(plugin)
    for trackable in resources.trackable_stores:
        add_store_fs(*trackable)
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    tracked = FSProjectStateResources(plugin,
                                      pootle_path=pootle_path,
                                      fs_path=fs_path).tracked
    assert (list(tracked.order_by("pk")) == list(qs.order_by("pk")))
コード例 #10
0
ファイル: resources.py プロジェクト: r-o-b-b-i-e/pootle
def test_fs_state_trackable_tracked(dummyfs, no_complex_po_):
    plugin = dummyfs
    resources = FSProjectStateResources(plugin)
    store_fs = resources.tracked[0]
    store = store_fs.store
    store_fs.delete()
    trackable = resources.trackable_stores
    store = plugin.resources.stores.get(pootle_path=store.pootle_path)
    assert len(trackable) == 1
    assert trackable[0][0] == store
    assert (trackable[0][1] == plugin.get_fs_path(store.pootle_path))
コード例 #11
0
ファイル: resources.py プロジェクト: RevelSystems/cat-pootle
def test_fs_state_trackable_store_paths(fs_path_queries):
    plugin, (qfilter, pootle_path, fs_path) = fs_path_queries
    qs = Store.objects.filter(translation_project__project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    resources = FSProjectStateResources(plugin)
    assert (sorted((store.pootle_path, fs_path)
                   for store, fs_path in resources.trackable_stores) == sorted(
                       resources.trackable_store_paths.items()))
コード例 #12
0
ファイル: resources.py プロジェクト: r-o-b-b-i-e/pootle
def test_fs_state_pootle_changed(fs_path_qs, dummyfs):
    (qfilter, pootle_path, fs_path) = fs_path_qs
    plugin = dummyfs
    resources = FSProjectStateResources(plugin)
    assert list(
        FSProjectStateResources(plugin,
                                pootle_path=pootle_path,
                                fs_path=fs_path).pootle_changed) == []
    for store_fs in plugin.resources.tracked:
        store_fs.last_sync_revision = store_fs.last_sync_revision - 1
        store_fs.save()
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    resources = FSProjectStateResources(plugin,
                                        pootle_path=pootle_path,
                                        fs_path=fs_path)
    assert (sorted(resources.pootle_changed.values_list(
        "pk", flat=True)) == sorted(qs.values_list("pk", flat=True)))
コード例 #13
0
ファイル: resources.py プロジェクト: RevelSystems/cat-pootle
def test_fs_state_trackable_tracked(project0_dummy_plugin):
    plugin = project0_dummy_plugin
    project = plugin.project
    stores = Store.objects.filter(translation_project__project=project)
    store = stores[0]
    # the Store is not trackable if its got a StoreFS
    add_store_fs(store, plugin.get_fs_path(store.pootle_path))
    trackable = FSProjectStateResources(plugin).trackable_stores
    qs = stores.exclude(pootle_path=store.pootle_path)
    assert (sorted(trackable, key=lambda item: item[0].pk) == [
        (s, plugin.get_fs_path(s.pootle_path)) for s in list(qs.order_by("pk"))
    ])
コード例 #14
0
ファイル: resources.py プロジェクト: RevelSystems/cat-pootle
def test_fs_state_trackable(fs_path_queries):
    plugin, (qfilter, pootle_path, fs_path) = fs_path_queries
    qs = Store.objects.filter(translation_project__project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    trackable = FSProjectStateResources(plugin,
                                        pootle_path=pootle_path,
                                        fs_path=fs_path).trackable_stores
    assert (sorted(trackable, key=lambda item: item[0].pk) == [
        (store, plugin.get_fs_path(store.pootle_path))
        for store in list(qs.order_by("pk"))
    ])
コード例 #15
0
ファイル: resources.py プロジェクト: RevelSystems/cat-pootle
def test_fs_state_pootle_changed(fs_path_queries):
    plugin, (qfilter, pootle_path, fs_path) = fs_path_queries
    resources = FSProjectStateResources(plugin)
    for trackable in resources.trackable_stores:
        add_store_fs(*trackable, synced=True)
    assert list(
        FSProjectStateResources(plugin,
                                pootle_path=pootle_path,
                                fs_path=fs_path).pootle_changed) == []
    stores = Store.objects.filter(translation_project__project=plugin.project)
    for store in stores.all():
        unit = store.units.first()
        unit.target = "%s FOO!" % store.name
        unit.save()
    qs = StoreFS.objects.filter(project=plugin.project)
    if qfilter is False:
        qs = qs.none()
    elif qfilter:
        qs = qs.filter(qfilter)
    resources = FSProjectStateResources(plugin,
                                        pootle_path=pootle_path,
                                        fs_path=fs_path)
    assert (sorted(resources.pootle_changed.values_list(
        "pk", flat=True)) == sorted(qs.values_list("pk", flat=True)))
コード例 #16
0
ファイル: resources.py プロジェクト: RevelSystems/cat-pootle
def test_fs_state_unsynced_staged(project0_dummy_plugin):
    plugin = project0_dummy_plugin
    resources = FSProjectStateResources(plugin)
    store_fs = add_store_fs(*resources.trackable_stores[0])
    assert resources.unsynced.count() == 1
    # unsynced does not include any that are staged rm/merge
    store_fs.staged_for_merge = True
    store_fs.save()
    assert resources.unsynced.count() == 0
    store_fs.staged_for_merge = False
    store_fs.staged_for_removal = True
    store_fs.save()
    assert resources.unsynced.count() == 0
    store_fs.staged_for_removal = False
    store_fs.save()
    assert resources.unsynced.count() == 1
コード例 #17
0
ファイル: resources.py プロジェクト: RevelSystems/cat-pootle
def test_fs_state_found_file_matches(fs_path_queries):
    plugin, (qfilter, pootle_path, fs_path) = fs_path_queries
    resources = FSProjectStateResources(plugin,
                                        pootle_path=pootle_path,
                                        fs_path=fs_path)
    stores = resources.resources.stores
    found_files = []
    for pp in stores.values_list("pootle_path", flat=True):
        fp = plugin.get_fs_path(pp)
        if fs_path and not fnmatch(fp, fs_path):
            continue
        if pootle_path and not fnmatch(pp, pootle_path):
            continue
        found_files.append((pp, fp))
    assert (sorted(resources.found_file_matches) == sorted(found_files))
    assert (resources.found_file_paths == [
        x[1] for x in resources.found_file_matches
    ])
コード例 #18
0
ファイル: resources.py プロジェクト: r-o-b-b-i-e/pootle
def test_fs_state_synced_staged(dummyfs):
    plugin = dummyfs
    resources = FSProjectStateResources(plugin)
    store_fs = resources.tracked[0]
    resources.tracked.exclude(pk=store_fs.pk).update(last_sync_hash=None,
                                                     last_sync_revision=None)
    assert resources.synced.count() == 1
    # synced does not include any that are staged rm/merge
    store_fs.staged_for_merge = True
    store_fs.save()
    assert resources.synced.count() == 0
    store_fs.staged_for_merge = False
    store_fs.staged_for_removal = True
    store_fs.save()
    assert resources.synced.count() == 0
    store_fs.staged_for_removal = False
    store_fs.save()
    assert resources.synced.count() == 1