Example #1
0
def test_finder_regex(finder_regexes):
    dir_path = os.sep.join(['', 'some', 'path'])
    translation_mapping = os.path.join(dir_path, finder_regexes)
    finder = TranslationFileFinder(translation_mapping)
    path = translation_mapping
    for k, v in TranslationFileFinder.path_mapping:
        path = path.replace(k, v)
    path = os.path.splitext(path)
    path = "%s%s" % (path[0], finder._ext_re())
    assert finder.regex.pattern == "%s$" % path
Example #2
0
def test_finder_regex(finder_regexes):
    dir_path = os.sep.join(['', 'some', 'path'])
    translation_mapping = os.path.join(dir_path, finder_regexes)
    finder = TranslationFileFinder(translation_mapping)
    path = translation_mapping
    for k, v in TranslationFileFinder.path_mapping:
        path = path.replace(k, v)
    path = os.path.splitext(path)
    path = "%s%s" % (path[0], finder._ext_re())
    assert finder.regex.pattern == "%s$" % path
Example #3
0
def test_finder_match_reverse():
    finder = TranslationFileFinder("/path/to/<language_code>.<ext>")
    assert finder.reverse_match("foo") == "/path/to/foo.po"

    finder = TranslationFileFinder("/path/to/<language_code>/<filename>.<ext>")
    assert finder.reverse_match("foo") == "/path/to/foo/foo.po"

    finder = TranslationFileFinder("/path/to/<language_code>/<filename>.<ext>")
    assert finder.reverse_match("foo", filename="bar") == "/path/to/foo/bar.po"
Example #4
0
def test_finder_cache_key():
    finder = TranslationFileFinder("/path/to/<dir_path>/<language_code>.<ext>",
                                   exclude_languages=["foo", "bar"])
    assert not finder.fs_hash
    assert not finder.cache_key
    assert finder.ns == "pootle.fs.finder"
    assert finder.sw_version == PootleFSConfig.version
    finder = TranslationFileFinder("/path/to/<dir_path>/<language_code>.<ext>",
                                   exclude_languages=["foo", "bar"],
                                   fs_hash="XYZ")
    assert finder.fs_hash == "XYZ"
    assert (finder.cache_key == ("%s.%s.%s" % (finder.fs_hash, "::".join(
        finder.exclude_languages), hash(finder.regex.pattern))))
Example #5
0
def test_finder_exclude_langs():
    finder = TranslationFileFinder(
        "/path/to/<dir_path>/<language_code>.<ext>",
        exclude_languages=["foo", "bar"])
    assert not finder.match("/path/to/foo.po")
    assert not finder.match("/path/to/bar.po")
    match = finder.match("/path/to/baz.po")
    assert match[0] == "/path/to/baz.po"
    assert match[1]["language_code"] == "baz"

    assert not finder.reverse_match(language_code="foo")
    assert not finder.reverse_match(language_code="bar")
    assert (
        finder.reverse_match(language_code="baz")
        == "/path/to/baz.po")
Example #6
0
def test_finder_file_root(finder_root_paths):
    dir_path = os.sep.join(['', 'some', 'path'])
    path, expected = finder_root_paths
    assert (TranslationFileFinder(os.path.join(
        dir_path,
        path)).file_root == (expected and os.path.join(dir_path, expected)
                             or dir_path))
Example #7
0
def test_finder_file_root(finder_root_paths):
    dir_path = "/some/path"
    path, expected = finder_root_paths
    assert (TranslationFileFinder(os.path.join(
        dir_path,
        path)).file_root == (expected and os.path.join(dir_path, expected)
                             or dir_path))
Example #8
0
def test_finder_match_reverse_directory():
    finder = TranslationFileFinder("/path/to/<language_code>.<ext>")
    assert finder.reverse_match("foo", dir_path="bar") is None

    finder = TranslationFileFinder("/path/to/<dir_path>/<language_code>.<ext>")
    assert finder.reverse_match("foo") == "/path/to/foo.po"
    assert finder.reverse_match("foo", dir_path="bar") == "/path/to/bar/foo.po"
    assert finder.reverse_match(
        "foo", dir_path="some/other") == "/path/to/some/other/foo.po"
Example #9
0
def test_finder_match_stores():
    TRANSLATION_PATH = "/path/to/<dir_path>/<language_code>/<filename>.<ext>"
    finder = TranslationFileFinder(TRANSLATION_PATH)
    stores = Store.objects.all()
    for store in stores:
        kwargs = resolve(store.pootle_path).kwargs
        kwargs["filename"] = os.path.splitext(kwargs["filename"])[0]
        del kwargs["project_code"]
        expected = TRANSLATION_PATH
        for k, v in kwargs.items():
            expected = expected.replace("<%s>" % k, v)
        # clean up if no dir_path
        expected = expected.replace("//", "/")
        expected = expected.replace("<ext>", str(store.filetype.extension))
        assert finder.reverse_match(**kwargs) == expected
        matched = finder.match(expected)
        for k, v in kwargs.items():
            assert matched[1][k] == v.strip("/")
Example #10
0
def test_finder_match_stores():
    TRANSLATION_PATH = "/path/to/<dir_path>/<language_code>/<filename>.<ext>"
    finder = TranslationFileFinder(TRANSLATION_PATH)
    stores = Store.objects.all()
    for store in stores:
        kwargs = resolve(store.pootle_path).kwargs
        kwargs["filename"] = os.path.splitext(kwargs["filename"])[0]
        del kwargs["project_code"]
        expected = TRANSLATION_PATH
        for k, v in kwargs.items():
            expected = expected.replace("<%s>" % k, v)
        # clean up if no dir_path
        expected = expected.replace("//", "/")
        expected = expected.replace(
            "<ext>", str(store.filetype.extension))
        assert finder.reverse_match(**kwargs) == expected
        matched = finder.match(expected)
        for k, v in kwargs.items():
            assert matched[1][k] == v.strip("/")
Example #11
0
def test_finder_match_reverse_ext():

    finder = TranslationFileFinder("/path/to/<language_code>.<ext>")

    # ext must be in list of exts
    with pytest.raises(ValueError):
        finder.reverse_match("foo", extension="abc")

    finder = TranslationFileFinder("/foo/bar/<language_code>.<ext>",
                                   extensions=["abc", "xyz"])
    assert finder.reverse_match("foo") == "/foo/bar/foo.abc"
    assert finder.reverse_match("foo", extension="abc") == "/foo/bar/foo.abc"
    assert finder.reverse_match("foo", extension="xyz") == "/foo/bar/foo.xyz"
Example #12
0
def fs_finder(test_fs, finder_files):
    from pootle_fs.finder import TranslationFileFinder

    translation_path, expected = finder_files
    test_filepath = test_fs.path("data/fs/example_fs")

    finder = TranslationFileFinder(
        os.path.join(test_filepath, translation_path))
    expected = [(os.path.join(test_filepath, path), parsed)
                for path, parsed in expected]
    return finder, expected
Example #13
0
def fs_finder(fs_plugin_synced, finder_files):
    from pootle_fs.finder import TranslationFileFinder
    translation_path, expected = finder_files
    finder = TranslationFileFinder(
        os.path.join(
            fs_plugin_synced.local_fs_path,
            translation_path))
    expected = [
        (os.path.join(fs_plugin_synced.local_fs_path,
                      path),
         parsed)
        for path, parsed in expected]
    return finder, expected
Example #14
0
def test_finder_match_reverse():
    finder = TranslationFileFinder("/path/to/<language_code>.<ext>")
    assert finder.reverse_match("foo") == "/path/to/foo.po"

    finder = TranslationFileFinder("/path/to/<language_code>/<filename>.<ext>")
    assert finder.reverse_match("foo") == "/path/to/foo/foo.po"

    finder = TranslationFileFinder("/path/to/<language_code>/<filename>.<ext>")
    assert finder.reverse_match("foo", filename="bar") == "/path/to/foo/bar.po"
Example #15
0
def test_finder_match(finder_matches):
    dir_path = os.sep.join(['', 'some', 'path'])
    match_path, not_matching, matching = finder_matches
    finder = TranslationFileFinder(os.path.join(dir_path, match_path))

    for path in not_matching:
        assert not finder.match(
            os.path.join(dir_path, path))
    for path, expected in matching:
        match = finder.regex.match(os.path.join(dir_path, path))
        assert match
        named = match.groupdict()
        for k in ["lang", "dir_path", "filename", "ext"]:
            if k in expected:
                assert named[k].strip("/") == expected[k]
            else:
                assert k not in named
        reverse = finder.reverse_match(
            named['language_code'],
            named.get('filename', os.path.splitext(os.path.basename(path))[0]),
            named['ext'],
            dir_path=named.get('dir_path'))

        assert os.path.join(dir_path, path) == reverse
Example #16
0
def test_finder_match(finder_matches):
    dir_path = os.sep.join(['', 'some', 'path'])
    match_path, not_matching, matching = finder_matches
    finder = TranslationFileFinder(os.path.join(dir_path, match_path))

    for path in not_matching:
        assert not finder.match(os.path.join(dir_path, path))
    for path, expected in matching:
        match = finder.regex.match(os.path.join(dir_path, path))
        assert match
        named = match.groupdict()
        for k in ["lang", "dir_path", "filename", "ext"]:
            if k in expected:
                assert named[k].strip("/") == expected[k]
            else:
                assert k not in named
        reverse = finder.reverse_match(
            named['language_code'],
            named.get('filename',
                      os.path.splitext(os.path.basename(path))[0]),
            named['ext'],
            dir_path=named.get('dir_path'))

        assert os.path.join(dir_path, path) == reverse
Example #17
0
def test_finder_match_reverse_directory():
    finder = TranslationFileFinder("/path/to/<language_code>.<ext>")
    assert finder.reverse_match("foo", dir_path="bar") is None

    finder = TranslationFileFinder(
        "/path/to/<dir_path>/<language_code>.<ext>")
    assert finder.reverse_match("foo") == "/path/to/foo.po"
    assert finder.reverse_match(
        "foo", dir_path="bar") == "/path/to/bar/foo.po"
    assert finder.reverse_match(
        "foo", dir_path="some/other") == "/path/to/some/other/foo.po"
Example #18
0
def test_finder_exclude_langs():
    finder = TranslationFileFinder("/path/to/<dir_path>/<language_code>.<ext>",
                                   exclude_languages=["foo", "bar"])
    assert not finder.match("/path/to/foo.po")
    assert not finder.match("/path/to/bar.po")
    match = finder.match("/path/to/baz.po")
    assert match[0] == "/path/to/baz.po"
    assert match[1]["language_code"] == "baz"

    assert not finder.reverse_match(language_code="foo")
    assert not finder.reverse_match(language_code="bar")
    assert (finder.reverse_match(language_code="baz") == "/path/to/baz.po")
Example #19
0
def test_finder_match_reverse_ext():

    finder = TranslationFileFinder("/path/to/<language_code>.<ext>")

    # ext must be in list of exts
    with pytest.raises(ValueError):
        finder.reverse_match("foo", extension="abc")

    finder = TranslationFileFinder(
        "/foo/bar/<language_code>.<ext>", extensions=["abc", "xyz"])
    assert finder.reverse_match("foo") == "/foo/bar/foo.abc"
    assert finder.reverse_match("foo", extension="abc") == "/foo/bar/foo.abc"
    assert finder.reverse_match("foo", extension="xyz") == "/foo/bar/foo.xyz"
Example #20
0
def test_finder_filters():
    finder = TranslationFileFinder("/path/to/<dir_path>/<language_code>.<ext>",
                                   path_filters=["/path/to/*"])
    # doesnt filter anything
    assert finder.match("/path/to/any.po")
    assert finder.match("/path/to/some/other.po")
    assert finder.match("/path/to/and/any/other.po")

    finder = TranslationFileFinder("/path/to/<dir_path>/<language_code>.<ext>",
                                   path_filters=["/path/to/some/*"])
    # these dont match
    assert not finder.match("/path/to/any.po")
    assert not finder.match("/path/to/and/any/other.po")
    # but this does
    assert finder.match("/path/to/some/other.po")

    # filter_paths are `and` matches
    finder = TranslationFileFinder(
        "/path/to/<dir_path>/<language_code>.<ext>",
        path_filters=["/path/to/this/*", "/path/to/this/other/*"])
    # so this doesnt match
    assert not finder.match("/path/to/this/file.po")
    # but these do
    assert finder.match("/path/to/this/other/file.po")
    assert finder.match("/path/to/this/other/file2.po")
    assert finder.match("/path/to/this/other/in/subdir/file2.po")
Example #21
0
def test_finder_bad_paths(bad_finder_paths):
    dir_path = "/some/path"
    with pytest.raises(ValueError):
        TranslationFileFinder(os.path.join(dir_path, bad_finder_paths))
Example #22
0
def test_finder_match_filepath():

    finder = TranslationFileFinder("/path/to/<language_code>.<ext>")
    assert finder.match("/foo/baz/lang.po") is None
    assert finder.match("/path/to/lang.xliff") is None
    assert finder.match("/path/to/lang.po")
Example #23
0
def test_finder_lang_codes():
    finder = TranslationFileFinder("/path/to/<dir_path>/<language_code>.<ext>")
    match = finder.match("/path/to/foo/[email protected]")
    assert match[1]["language_code"] == "bar@baz"
Example #24
0
def test_finder_match_filepath():

    finder = TranslationFileFinder("/path/to/<language_code>.<ext>")
    assert finder.match("/foo/baz/lang.po") is None
    assert finder.match("/path/to/lang.xliff") is None
    assert finder.match("/path/to/lang.po")
Example #25
0
def test_finder_lang_codes():
    finder = TranslationFileFinder(
        "/path/to/<dir_path>/<language_code>.<ext>")
    match = finder.match("/path/to/foo/[email protected]")
    assert match[1]["language_code"] == "bar@baz"
Example #26
0
def test_finder_bad_paths(bad_finder_paths):
    dir_path = os.sep.join(['', 'some', 'path'])
    with pytest.raises(ValidationError):
        TranslationFileFinder(os.path.join(dir_path, bad_finder_paths))
Example #27
0
def test_finder_filters():
    finder = TranslationFileFinder(
        "/path/to/<dir_path>/<language_code>.<ext>",
        path_filters=["/path/to/*"])
    # doesnt filter anything
    assert finder.match("/path/to/any.po")
    assert finder.match("/path/to/some/other.po")
    assert finder.match("/path/to/and/any/other.po")

    finder = TranslationFileFinder(
        "/path/to/<dir_path>/<language_code>.<ext>",
        path_filters=["/path/to/some/*"])
    # these dont match
    assert not finder.match("/path/to/any.po")
    assert not finder.match("/path/to/and/any/other.po")
    # but this does
    assert finder.match("/path/to/some/other.po")

    # filter_paths are `and` matches
    finder = TranslationFileFinder(
        "/path/to/<dir_path>/<language_code>.<ext>",
        path_filters=["/path/to/this/*", "/path/to/this/other/*"])
    # so this doesnt match
    assert not finder.match("/path/to/this/file.po")
    # but these do
    assert finder.match("/path/to/this/other/file.po")
    assert finder.match("/path/to/this/other/file2.po")
    assert finder.match("/path/to/this/other/in/subdir/file2.po")