def test_url_transform_jinja():
    urls = set(list(gen_transformed_urls("{{version}}")))
    assert urls == {"v{{ version }}", "{{ version }}", "{{version}}"}

    urls = set(list(gen_transformed_urls("<{version}}")))
    assert urls == {"v{{ version }}", "{{ version }}", "<{version}}"}

    urls = set(list(gen_transformed_urls("<<{version}}")))
    assert urls == {"v{{ version }}", "{{ version }}", "<<{version}}"}
def test_url_transform_pypi():
    urls = set(list(gen_transformed_urls("https://pypi.io/{{ name }}/{{ name }}-barf")))
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-barf",
    }

    urls = set(
        list(
            gen_transformed_urls(
                "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-barf",
            ),
        ),
    )
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-barf",
    }

    urls = set(
        list(
            gen_transformed_urls(
                "https://pypi.io/{{ name }}/{{ name.replace('_','-') }}-barf",
            ),
        ),
    )
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name.replace('_','-') }}-barf",
    }

    urls = set(
        list(
            gen_transformed_urls(
                "https://pypi.io/{{ name }}/{{ name|replace('_','-') }}-barf",
            ),
        ),
    )
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name|replace('_','-') }}-barf",
    }

    urls = set(
        list(
            gen_transformed_urls(
                'https://pypi.io/{{ name }}/{{ name.replace("_", "-") }}-barf',
            ),
        ),
    )
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        'https://pypi.io/{{ name }}/{{ name.replace("_", "-") }}-barf',
    }
def test_url_transform_jinja_mixed():
    urls = set(list(gen_transformed_urls("{{version}}/{{name }}")))
    assert urls == {
        "v{{ version }}/{{ name }}", "v{{ version }}/{{name }}",
        "{{ version }}/{{ name }}", "{{ version }}/{{name }}",
        "{{version}}/{{name }}", "{{version}}/{{ name }}"
    }

    urls = set(list(gen_transformed_urls("{{version}}/<{name}}")))
    assert urls == {
        "v{{ version }}/{{ name }}", "v{{ version }}/<{name}}",
        "{{ version }}/{{ name }}", "{{ version }}/<{name}}",
        "{{version}}/<{name}}", "{{version}}/{{ name }}"
    }
def test_url_transform_pypi():
    urls = set(
        list(gen_transformed_urls(
            "https://pypi.io/{{ name }}/{{ name }}-barf")))
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-barf",
    }

    urls = set(
        list(
            gen_transformed_urls(
                "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-barf")
        ))
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-barf",
    }

    urls = set(
        list(
            gen_transformed_urls(
                "https://pypi.io/{{ name }}/{{ name.replace('_','-') }}-barf"))
    )
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name.replace('_','-') }}-barf",
    }

    urls = set(
        list(
            gen_transformed_urls(
                "https://pypi.io/{{ name }}/{{ name|replace('_','-') }}-barf"))
    )
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name|replace('_','-') }}-barf",
    }

    urls = set(
        list(
            gen_transformed_urls(
                "https://pypi.io/{{ name }}/{{ name.replace(\"_\", \"-\") }}-barf"
            )))
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name }}-barf",
        "https://pypi.io/{{ name }}/{{ name.replace(\"_\", \"-\") }}-barf",
    }
def test_url_transform_complicated_github():
    urls = set(
        list(
            gen_transformed_urls(
                "https://github.com/archive/{{ name }}/v{{ version }}.tgz",
            ),
        ),
    )
    assert urls == {
        "https://github.com/archive/{{ name }}/v{{ version }}.tgz",
        "https://github.com/archive/{{ name }}/v{{ version }}.tar.gz",
        "https://github.com/archive/{{ name }}/v{{ version }}.zip",
        "https://github.com/archive/{{ name }}/v{{ version }}.tar",
        "https://github.com/archive/{{ name }}/v{{ version }}.tar.bz2",
        "https://github.com/archive/{{ name }}/v{{ version }}.tar.xz",
        "https://github.com/archive/{{ name }}/{{ version }}.tgz",
        "https://github.com/archive/{{ name }}/{{ version }}.tar.gz",
        "https://github.com/archive/{{ name }}/{{ version }}.zip",
        "https://github.com/archive/{{ name }}/{{ version }}.tar",
        "https://github.com/archive/{{ name }}/{{ version }}.tar.bz2",
        "https://github.com/archive/{{ name }}/{{ version }}.tar.xz",
        "https://github.com/releases/download/v{{ version }}/{{ name }}/{{ name }}-v{{ version }}.tgz",  # noqa
        "https://github.com/releases/download/v{{ version }}/{{ name }}/{{ name }}-v{{ version }}.tar.gz",  # noqa
        "https://github.com/releases/download/v{{ version }}/{{ name }}/{{ name }}-v{{ version }}.zip",  # noqa
        "https://github.com/releases/download/v{{ version }}/{{ name }}/{{ name }}-v{{ version }}.tar",  # noqa
        "https://github.com/releases/download/v{{ version }}/{{ name }}/{{ name }}-v{{ version }}.tar.bz2",  # noqa
        "https://github.com/releases/download/v{{ version }}/{{ name }}/{{ name }}-v{{ version }}.tar.xz",  # noqa
        "https://github.com/releases/download/{{ version }}/{{ name }}/{{ name }}-{{ version }}.tgz",  # noqa
        "https://github.com/releases/download/{{ version }}/{{ name }}/{{ name }}-{{ version }}.tar.gz",  # noqa
        "https://github.com/releases/download/{{ version }}/{{ name }}/{{ name }}-{{ version }}.zip",  # noqa
        "https://github.com/releases/download/{{ version }}/{{ name }}/{{ name }}-{{ version }}.tar",  # noqa
        "https://github.com/releases/download/{{ version }}/{{ name }}/{{ name }}-{{ version }}.tar.bz2",  # noqa
        "https://github.com/releases/download/{{ version }}/{{ name }}/{{ name }}-{{ version }}.tar.xz",  # noqa
    }
def test_url_transform_complicated_pypi():
    urls = set(
        list(
            gen_transformed_urls(
                "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-{{ version }}.tgz",
            ),
        ),
    )
    assert urls == {
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-{{ version }}.tgz",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-{{ version }}.tar.gz",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-{{ version }}.zip",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-{{ version }}.tar",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-{{ version }}.tar.bz2",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-{{ version }}.tar.xz",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-v{{ version }}.tgz",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-v{{ version }}.tar.gz",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-v{{ version }}.zip",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-v{{ version }}.tar",
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-v{{ version }}.tar.bz2",  # noqa
        "https://pypi.io/{{ name }}/{{ name.replace('_', '-') }}-v{{ version }}.tar.xz",
        "https://pypi.io/{{ name }}/{{ name }}-{{ version }}.tgz",
        "https://pypi.io/{{ name }}/{{ name }}-{{ version }}.tar.gz",
        "https://pypi.io/{{ name }}/{{ name }}-{{ version }}.zip",
        "https://pypi.io/{{ name }}/{{ name }}-{{ version }}.tar",
        "https://pypi.io/{{ name }}/{{ name }}-{{ version }}.tar.bz2",
        "https://pypi.io/{{ name }}/{{ name }}-{{ version }}.tar.xz",
        "https://pypi.io/{{ name }}/{{ name }}-v{{ version }}.tgz",
        "https://pypi.io/{{ name }}/{{ name }}-v{{ version }}.tar.gz",
        "https://pypi.io/{{ name }}/{{ name }}-v{{ version }}.zip",
        "https://pypi.io/{{ name }}/{{ name }}-v{{ version }}.tar",
        "https://pypi.io/{{ name }}/{{ name }}-v{{ version }}.tar.bz2",
        "https://pypi.io/{{ name }}/{{ name }}-v{{ version }}.tar.xz",
    }
Beispiel #7
0
def _get_new_url_tmpl_and_hash(url_tmpl: str, context: MutableMapping, hash_type: str):
    logger.info(
        "hashing URL template: %s", url_tmpl,
    )
    try:
        logger.info(
            "rendered URL: %s", _render_jinja2(url_tmpl, context),
        )
    except jinja2.UndefinedError:
        logger.info("initial URL template does not render")
        pass

    try:
        url = _render_jinja2(url_tmpl, context)
        new_hash = _try_url_and_hash_it(url, hash_type)
        if new_hash is not None:
            return url_tmpl, new_hash
    except jinja2.UndefinedError:
        pass

    new_url_tmpl = None
    new_hash = None

    for new_url_tmpl in gen_transformed_urls(url_tmpl):
        try:
            url = _render_jinja2(new_url_tmpl, context)
            new_hash = _try_url_and_hash_it(url, hash_type)
        except jinja2.UndefinedError:
            new_hash = None

        if new_hash is not None:
            break

    return new_url_tmpl, new_hash
def test_url_transform_exts():
    urls = set(list(gen_transformed_urls("blah.tar.gz")))
    assert urls == {
        "blah.tar.gz",
        "blah.tgz",
        "blah.tar",
        "blah.tar.bz2",
        "blah.zip",
        "blah.tar.xz",
    }
def test_url_transform_github():
    urls = set(
        list(
            gen_transformed_urls(
                "https://github.com/releases/download/"
                "v{{ version }}/{{ name }}/{{ name }}-{{ version }}")))
    assert urls == {
        "https://github.com/releases/download/v{{ version }}/"
        "{{ name }}/{{ name }}-{{ version }}",
        "https://github.com/releases/download/{{ version }}/"
        "{{ name }}/{{ name }}-{{ version }}",
        "https://github.com/archive/{{ name }}/v{{ version }}",
        "https://github.com/archive/{{ name }}/{{ version }}",
    }
    pass
def test_url_transform_complicated():
    urls = set(list(gen_transformed_urls("blah-{{ version }}.tar.gz")))
    assert urls == {
        "blah-{{ version }}.tar.gz",
        "blah-{{ version }}.tgz",
        "blah-{{ version }}.tar",
        "blah-{{ version }}.tar.bz2",
        "blah-{{ version }}.zip",
        "blah-{{ version }}.tar.xz",
        "blah-v{{ version }}.tar.gz",
        "blah-v{{ version }}.tgz",
        "blah-v{{ version }}.tar",
        "blah-v{{ version }}.tar.bz2",
        "blah-v{{ version }}.zip",
        "blah-v{{ version }}.tar.xz",
    }