コード例 #1
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_tox_ini():
    content = "[testenv:bandit]\n" \
              "commands =\n" \
              "\tbandit --ini setup.cfg -ii -l --recursive project_directory\n" \
              "deps =\n" \
              "\tbandit==1.4.0\n" \
              "\n" \
              "[testenv:manifest]\n" \
              "commands =\n" \
              "\tcheck-manifest --verbose\n"

    dep_file = parse(content, "tox.ini")
    dep = dep_file.dependencies[0]

    assert dep.name == "bandit"

    new_content = "[testenv:bandit]\n" \
                  "commands =\n" \
                  "\tbandit --ini setup.cfg -ii -l --recursive project_directory\n" \
                  "deps =\n" \
                  "\tbandit==2.9.5\n" \
                  "\n" \
                  "[testenv:manifest]\n" \
                  "commands =\n" \
                  "\tcheck-manifest --verbose\n"

    assert ToxINIUpdater.update(content=content, dependency=dep, version="2.9.5") == new_content
コード例 #2
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_line_endings():
    content = """\r\n\r\nWerkzeug\r\ndjango-template-repl\nbpython\nsome-fooo    \n"""
    version = "1.2.3"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)

    assert dep_file.dependencies[0].name == "Werkzeug"
    assert dep_file.dependencies[1].name == "django-template-repl"
    assert dep_file.dependencies[2].name == "bpython"
    assert dep_file.dependencies[3].name == "some-fooo"

    assert "Werkzeug==1.2.3\r\n" in RequirementsTXTUpdater.update(
        content=content,
        version=version,
        dependency=dep_file.dependencies[0]
    )
    assert "django-template-repl==1.2.3\n" in RequirementsTXTUpdater.update(
        content=content,
        version=version,
        dependency=dep_file.dependencies[1]
    )
    assert "bpython==1.2.3" in RequirementsTXTUpdater.update(
        content=content,
        version=version,
        dependency=dep_file.dependencies[2]
    )
    assert "some-fooo==1.2.3    \n" in RequirementsTXTUpdater.update(
        content=content,
        version=version,
        dependency=dep_file.dependencies[3]
    )
コード例 #3
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_requirements_package_with_index_server():
    content = """-i https://some.foo/\ndjango"""

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "django"
    assert dep.index_server == "https://some.foo/"
コード例 #4
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_pipfile_with_invalid_toml():
    content = """[[source]

url = "http://some.pypi.mirror.server.org/simple"
verify_ssl = false
ds name < "pypi"
"""
    dep_file = parse(content, file_type=filetypes.pipfile)
    assert not dep_file.dependencies
コード例 #5
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_conda_file_with_invalid_requirement():

    content = "name: my_env\n" \
              "dependencies:\n" \
              "  - gevent=1.2.1\n" \
              "  - pip:\n" \
              "    - in=vali===d{}{}{"
    dep_file = parse(content, file_type=filetypes.conda_yml)
    assert len(dep_file.dependencies) == 0
コード例 #6
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_pipfile_lock_with_invalid_json():
    content = """{
    "_meta": 
        "hash": {
            "sha256": "8b5635a4f7b069ae6661115b9eaa15466f7cd96794af5d131735a3638be101fb"
        },
}"""
    dep_file = parse(content, file_type=filetypes.pipfile_lock)
    assert not dep_file.dependencies
コード例 #7
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_unfinished_line():
    content = 'raven==0.2\n'
    new_content = 'raven==1.5.6\n'
    version = "1.5.6"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "raven"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #8
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_compatible_matching_latest():
    content = "Jinja2~=2.9.5         # via flask"
    new_content = "Jinja2==2.9.5         # via flask"
    version = "2.9.5"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "Jinja2"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #9
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_simple_unpinned():
    content = "django"
    new_content = "django==1.4.2"
    version = "1.4.2"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "django"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #10
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_contains_correct_sep_char():
    content = "Jinja2==2.9.4         # via flask"
    new_content = "Jinja2==2.9.5         # via flask"
    version = "2.9.5"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "Jinja2"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #11
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_with_plus():
    content = "some-package==0.12.2+tmf"
    new_content = "some-package==0.13.1"
    version = "0.13.1"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "some-package"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #12
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_with_tabs():
    content = "bla==1.4.1\t\t# pyup: <1.4.2"
    new_content = "bla==1.4.2\t\t# pyup: <1.4.2"
    version = "1.4.2"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "bla"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #13
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_with_extras():
    content = "requests[security]==1.4.1"
    new_content = "requests[security]==1.4.2"
    version = "1.4.2"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "requests"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #14
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_with_env_markers_and_comment():
    content = "uvloop==0.6.5; sys_platform != 'win32' # and here's some comment"
    new_content = "uvloop==1.4.2; sys_platform != 'win32' # and here's some comment"
    version = "1.4.2"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "uvloop"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #15
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_multispace():
    content = "                   pass"
    new_content = "pass==2.9.5"
    version = "2.9.5"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "pass"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #16
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_tox_ini_with_invalid_requirement():

    content = "[testenv]" \
              "passenv = CI TRAVIS TRAVIS_*" \
              "setenv =" \
              "PYTHONPATH = {toxinidir}" \
              "deps =" \
              "-r{toxinidir}/requirements_dev.txt" \
              "pytest-cov" \
              "codecov"
    dep_file = parse(content, file_type=filetypes.tox_ini)
    assert len(dep_file.dependencies) == 0
コード例 #17
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_with_double_package_name():
    content = 'raven\n' \
              'ravenclient'
    new_content = 'raven==2.58.1.44\n' \
                  'ravenclient'
    version = "2.58.1.44"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "raven"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #18
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_with_hash_inline():
    content = "alembic==0.8.9 --hash=sha256:abcde"
    new_content = "alembic==1.4.2 \\\n" \
                  "    --hash=sha256:123 \\\n" \
                  "    --hash=sha256:456"
    version = "1.4.2"
    hashes = [{"method": "sha256", "hash": "123"}, {"method": "sha256", "hash": "456"}]

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "alembic"
    assert RequirementsTXTUpdater.update(content=content, version=version, dependency=dep,
                                         hashes=hashes) == new_content
コード例 #19
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_with_hash_and_comment_and_env_markers_inline():
    content = "alembic==0.8.9; sys_platform != 'win32' --hash=sha256:abcde # yay"
    new_content = "alembic==1.4.2; sys_platform != 'win32' \\\n" \
                  "    --hash=sha256:123 \\\n" \
                  "    --hash=sha256:456 # yay"
    version = "1.4.2"
    hashes = [{"method": "sha256", "hash": "123"}, {"method": "sha256", "hash": "456"}]

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "alembic"
    assert RequirementsTXTUpdater.update(content=content, version=version, dependency=dep,
                                         hashes=hashes) == new_content
コード例 #20
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_with_hash_and_space_separator():
    content = "taskcluster==0.3.4 --hash sha256:d4fe5e2a44fe" \
              "27e195b92830ece0a6eb9eb7ad9dc556a0cb16f6f2a6429f1b65"
    new_content = "taskcluster==1.4.2 \\\n" \
                  "    --hash=sha256:123 \\\n" \
                  "    --hash=sha256:456"
    version = "1.4.2"
    hashes = [{"method": "sha256", "hash": "123"}, {"method": "sha256", "hash": "456"}]

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "taskcluster"
    assert RequirementsTXTUpdater.update(content=content, version=version, dependency=dep,
                                         hashes=hashes) == new_content
コード例 #21
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_requirements_parse_unsupported_line_start():
    content = "-f foo\n" \
              "--find-links bla\n" \
              "-i bla\n" \
              "--index-url bla\n" \
              "--extra-index-url bla\n" \
              "--no-index bla\n" \
              "--allow-external\n" \
              "--allow-unverified\n" \
              "-Z\n" \
              "--always-unzip\n"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    assert dep_file.dependencies == []
    assert dep_file.resolved_files == []
コード例 #22
0
ファイル: test_updater.py プロジェクト: wadevries/dparse
def test_update_requirements_simple_unpinned_with_comment():
    content = "django # newest django release"
    new_content = "django==1.4.2 # newest django release"
    version = "1.4.2"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "django"
    assert RequirementsTXTUpdater.update(content=content,
                                         version=version,
                                         dependency=dep) == new_content

    content = "Django #django"
    new_content = "Django==1.4.2 #django"
    version = "1.4.2"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "Django"
    assert RequirementsTXTUpdater.update(content=content,
                                         version=version,
                                         dependency=dep) == new_content

    content = "Django #django #yay this has really cool comments ######"
    new_content = "Django==1.4.2 #django #yay this has really cool comments ######"
    version = "1.4.2"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[0]

    assert dep.name == "Django"
    assert RequirementsTXTUpdater.update(content=content,
                                         version=version,
                                         dependency=dep) == new_content
コード例 #23
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_conda_yml():
    content = "name: my_env\n" \
              "dependencies:\n" \
              "  - gevent=1.2.1\n" \
              "  - pip:\n" \
              "    - beautifulsoup4==1.2.3\n"

    dep_file = parse(content, "conda.yml")
    dep = dep_file.dependencies[0]

    assert dep.name == "beautifulsoup4"

    new_content = "name: my_env\n" \
                  "dependencies:\n" \
                  "  - gevent=1.2.1\n" \
                  "  - pip:\n" \
                  "    - beautifulsoup4==4.5.6\n"

    assert CondaYMLUpdater.update(content=content, dependency=dep, version="4.5.6") == new_content
コード例 #24
0
ファイル: test_updater.py プロジェクト: sobolevn/dparse
def test_update_requirements_cookiecutter_template():
    content = 'raven==5.8.1\n' \
              '{%- endif %}\n\n' \
              '{% if cookiecutter.use_newrelic == "y" -%}\n' \
              '# Newrelic agent for performance monitoring\n' \
              '# -----------------------------------------\n' \
              'newrelic\n' \
              '{%- endif %}\n\n'
    new_content = 'raven==5.8.1\n' \
                  '{%- endif %}\n\n' \
                  '{% if cookiecutter.use_newrelic == "y" -%}\n' \
                  '# Newrelic agent for performance monitoring\n' \
                  '# -----------------------------------------\n' \
                  'newrelic==2.58.1.44\n' \
                  '{%- endif %}\n\n'
    version = "2.58.1.44"

    dep_file = parse(content=content, file_type=filetypes.requirements_txt)
    dep = dep_file.dependencies[1]

    assert dep.name == "newrelic"
    assert RequirementsTXTUpdater.update(content=content, version=version,
                                         dependency=dep) == new_content
コード例 #25
0
ファイル: test_updater.py プロジェクト: wadevries/dparse
def test_update_pipfile():
    content = """[[source]]

url = "http://some.pypi.mirror.server.org/simple"
verify_ssl = false
name = "pypi"


[packages]

django = "==2.0"
djangorestframework = "*"
django-allauth = "*"


[dev-packages]

toml = "*"
    """
    dep_file = parse(content=content, file_type=filetypes.pipfile)
    dep = dep_file.dependencies[0]
    new_content = PipfileUpdater.update(content, version="2.1", dependency=dep)
    assert 'django = "==2.1"' in new_content
コード例 #26
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_conda_file_invalid_yml():

    content = "wawth:dda : awd:\ndlll"
    dep_file = parse(content, file_type=filetypes.conda_yml)
    assert dep_file.dependencies == []
コード例 #27
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_pipfile_lock():
    content = """{
    "_meta": {
        "hash": {
            "sha256": "8b5635a4f7b069ae6661115b9eaa15466f7cd96794af5d131735a3638be101fb"
        },
        "host-environment-markers": {
            "implementation_name": "cpython",
            "implementation_version": "3.6.3",
            "os_name": "posix",
            "platform_machine": "x86_64",
            "platform_python_implementation": "CPython",
            "platform_release": "17.3.0",
            "platform_system": "Darwin",
            "platform_version": "Darwin Kernel Version 17.3.0: Thu Nov  9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64",
            "python_full_version": "3.6.3",
            "python_version": "3.6",
            "sys_platform": "darwin"
        },
        "pipfile-spec": 6,
        "requires": {},
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.python.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "django": {
            "hashes": [
                "sha256:52475f607c92035d4ac8fee284f56213065a4a6b25ed43f7e39df0e576e69e9f",
                "sha256:d96b804be412a5125a594023ec524a2010a6ffa4d408e5482ab6ff3cb97ec12f"
            ],
            "version": "==2.0.1"
        },
        "pytz": {
            "hashes": [
                "sha256:80af0f3008046b9975242012a985f04c5df1f01eed4ec1633d56cc47a75a6a48",
                "sha256:feb2365914948b8620347784b6b6da356f31c9d03560259070b2f30cff3d469d",
                "sha256:59707844a9825589878236ff2f4e0dc9958511b7ffaae94dc615da07d4a68d33",
                "sha256:d0ef5ef55ed3d37854320d4926b04a4cb42a2e88f71da9ddfdacfde8e364f027",
                "sha256:c41c62827ce9cafacd6f2f7018e4f83a6f1986e87bfd000b8cfbd4ab5da95f1a",
                "sha256:8cc90340159b5d7ced6f2ba77694d946fc975b09f1a51d93f3ce3bb399396f94",
                "sha256:dd2e4ca6ce3785c8dd342d1853dd9052b19290d5bf66060846e5dc6b8d6667f7",
                "sha256:699d18a2a56f19ee5698ab1123bbcc1d269d061996aeb1eda6d89248d3542b82",
                "sha256:fae4cffc040921b8a2d60c6cf0b5d662c1190fe54d718271db4eb17d44a185b7"
            ],
            "version": "==2017.3"
        }
    },
    "develop": {}
}"""
    dep_file = parse(content, file_type=filetypes.pipfile_lock)
    assert dep_file.dependencies[0].name == 'django'
    assert dep_file.dependencies[0].specs == SpecifierSet('==2.0.1')
    assert dep_file.dependencies[0].hashes == [
        "sha256:52475f607c92035d4ac8fee284f56213065a4a6b25ed43f7e39df0e576e69e9f",
        "sha256:d96b804be412a5125a594023ec524a2010a6ffa4d408e5482ab6ff3cb97ec12f"
    ]
コード例 #28
0
ファイル: test_parse.py プロジェクト: wadevries/dparse
def test_requirements_with_invalid_requirement():

    content = "in=vali===d{}{}{"
    dep_file = parse(content, file_type=filetypes.requirements_txt)
    assert len(dep_file.dependencies) == 0