Ejemplo n.º 1
0
def test_yaml_out(mocker, capsys):
    mocker.patch(
        'sys.argv',
        'johnnydep fakedist --fields=ALL --output-format=yaml'.split())
    main()
    out, err = capsys.readouterr()
    assert err == ''
    assert out == dedent('''\
      - name: fakedist
        summary: This is a fake distribution for johnnydep's test suite
        specifier: ''
        requires: []
        required_by: []
        import_names: [fakedistmod]
        homepage: https://notexist
        extras_available: [dev]
        extras_requested: []
        project_name: fakedist
        versions_available: [1.2.3]
        version_installed: null
        version_latest: 1.2.3
        version_latest_in_spec: 1.2.3
        download_link: https://pypi.python.org/simple/fakedist/fakedist-1.2.3-py2.py3-none-any.whl
        checksum: md5=63d82676c56d127bd9d1d41af5e8a064

    ''')
Ejemplo n.º 2
0
def test_diamond_deptree(mocker, capsys, make_dist):
    make_dist(name="distA",
              install_requires=["distB1", "distB2"],
              version="0.1")
    make_dist(name="distB1",
              install_requires=["distC[x,z]<0.3"],
              version="0.1")
    make_dist(name="distB2", install_requires=["distC[y]!=0.2"], version="0.1")
    make_dist(name="distC", version="0.1")
    make_dist(name="distC", version="0.2")
    make_dist(name="distC", version="0.3")
    fields = [
        "name",
        "specifier",
        "requires",
        "required_by",
        "versions_available",
        "version_latest_in_spec",
    ]
    mocker.patch("sys.argv", "johnnydep distA --fields".split() + fields)
    main()
    out, err = capsys.readouterr()
    assert err == ""
    assert out == dedent("""\
    name                specifier    requires        required_by    versions_available      version_latest_in_spec
    ------------------  -----------  --------------  -------------  --------------------  ------------------------
    distA                            distB1, distB2                 0.1                                        0.1
    ├── distB1                       distC[x,z]<0.3  distA          0.1                                        0.1
    │   └── distC[x,z]  <0.3                         distB1         0.1, 0.2, 0.3                              0.2
    └── distB2                       distC[y]!=0.2   distA          0.1                                        0.1
        └── distC[y]    !=0.2                        distB2         0.1, 0.2, 0.3                              0.3
    """)
Ejemplo n.º 3
0
def test_pretty_json_out(mocker, capsys):
    mocker.patch(
        'sys.argv',
        'johnnydep fakedist>1.2 --fields=ALL --output-format=json'.split())
    main()
    out, err = capsys.readouterr()
    assert err == ''
    assert out == dedent('''\
      [
        {
          "name": "fakedist",
          "summary": "This is a fake distribution for johnnydep's test suite",
          "specifier": ">1.2",
          "requires": [],
          "required_by": [],
          "import_names": [
            "fakedistmod"
          ],
          "homepage": "https://notexist",
          "extras_available": [
            "dev"
          ],
          "extras_requested": [],
          "project_name": "fakedist",
          "versions_available": [
            "1.2.3"
          ],
          "version_installed": null,
          "version_latest": "1.2.3",
          "version_latest_in_spec": "1.2.3",
          "download_link": "https://pypi.python.org/simple/fakedist/fakedist-1.2.3-py2.py3-none-any.whl",
          "checksum": "md5=63d82676c56d127bd9d1d41af5e8a064"
        }
      ]
    ''')
Ejemplo n.º 4
0
def test_all_fields_toml_out(mocker, capsys, make_dist):
    _dist, _dist_path, checksum = make_dist(name="wimpy",
                                            version="0.3",
                                            py_modules=["that"])
    mocker.patch(
        "sys.argv",
        "johnnydep wimpy<0.4 --fields=ALL --output-format=toml".split())
    main()
    out, err = capsys.readouterr()
    assert err == ""
    assert out == dedent("""\
        name = "wimpy"
        summary = "default text for metadata summary"
        specifier = "<0.4"
        requires = []
        required_by = []
        import_names = [ "that",]
        homepage = "https://www.example.org/default"
        extras_available = []
        extras_requested = []
        project_name = "wimpy"
        license = "MIT"
        versions_available = [ "0.3",]
        version_installed = "0.3"
        version_latest = "0.3"
        version_latest_in_spec = "0.3"
        download_link = "http://fakeindex/wimpy-0.3-py2.py3-none-any.whl"
        checksum = "md5={checksum}"

    """.format(checksum=checksum))
Ejemplo n.º 5
0
def test_printed_table_on_stdout(mocker, capsys):
    mocker.patch('sys.argv', 'johnnydep fakedist==1.2.3'.split())
    main()
    out, err = capsys.readouterr()
    assert err == ''
    assert out == dedent('''\
        name             summary
        ---------------  ------------------------------------------------------
        fakedist==1.2.3  This is a fake distribution for johnnydep's test suite
    ''')
Ejemplo n.º 6
0
def test_printed_table_on_stdout_with_specifier(mocker, capsys):
    mocker.patch('sys.argv',
                 'johnnydep fakedist==1.2.3 --fields specifier'.split())
    main()
    out, err = capsys.readouterr()
    assert err == ''
    assert out == dedent('''\
        name      specifier
        --------  -----------
        fakedist  ==1.2.3
    ''')
Ejemplo n.º 7
0
def test_requirements_txt_output(mocker, capsys):
    mocker.patch('sys.argv', 'johnnydep distA -o pinned'.split())
    main()
    out, err = capsys.readouterr()
    assert err == ''
    assert out == dedent('''\
        dista==0.1
        distb1==0.1
        distb2==0.1
        distc[x,y,z]==0.1
    ''')
Ejemplo n.º 8
0
def test_printed_table_on_stdout(mocker, capsys, make_dist):
    make_dist()
    mocker.patch("sys.argv", "johnnydep jdtest==0.1.2".split())
    main()
    out, err = capsys.readouterr()
    assert err == ""
    assert out == dedent("""\
        name           summary
        -------------  ---------------------------------
        jdtest==0.1.2  default text for metadata summary
    """)
Ejemplo n.º 9
0
def test_printed_table_on_stdout_with_specifier(make_dist, mocker, capsys):
    make_dist()
    mocker.patch("sys.argv",
                 "johnnydep jdtest>=0.1 --fields specifier".split())
    main()
    out, err = capsys.readouterr()
    assert err == ""
    assert out == dedent("""\
        name    specifier
        ------  -----------
        jdtest  >=0.1
    """)
Ejemplo n.º 10
0
def test_printed_tree_on_stdout(mocker, capsys):
    mocker.patch(
        'sys.argv',
        'johnnydep fakedist[dev] --fields extras_available extras_requested'.
        split())
    main()
    out, err = capsys.readouterr()
    assert err == ''
    assert out == dedent('''\
        name               extras_available                           extras_requested
        -----------------  -----------------------------------------  ------------------
        fakedist[dev]      dev                                        dev
        └── wheel>=0.30.0  faster-signatures, signatures, test, tool
    ''')
Ejemplo n.º 11
0
def test_unresolvable_deptree(mocker, capsys):
    # It is still possible to print the dep tree even though there is no acceptable version available for distC
    fields = 'name requires required_by versions_available version_latest_in_spec'.split(
    )
    mocker.patch('sys.argv', 'johnnydep distX --fields'.split() + fields)
    main()
    out, err = capsys.readouterr()
    assert err == ''
    assert out == dedent('''\
        name            requires                     required_by    versions_available      version_latest_in_spec
        --------------  ---------------------------  -------------  --------------------  ------------------------
        distX           distC (<=0.1), distC (>0.2)                 0.1                                        0.1
        ├── distC<=0.1                               distX          0.1, 0.2, 0.3                              0.1
        └── distC>0.2                                distX          0.1, 0.2, 0.3                              0.3
    ''')
Ejemplo n.º 12
0
def test_printed_tree_on_stdout(mocker, capsys, make_dist):
    make_dist(name="thing", extras_require={"xyz": "spam>0.30.0", "abc": "eggs"})
    make_dist(name="spam", version="0.31")
    make_dist(name="eggs")
    mocker.patch(
        "sys.argv", "johnnydep thing[xyz] --fields extras_available extras_requested".split()
    )
    main()
    out, err = capsys.readouterr()
    assert err == ""
    assert out == dedent(
        """\
        name             extras_available    extras_requested
        ---------------  ------------------  ------------------
        thing[xyz]       abc, xyz            xyz
        └── spam>0.30.0
    """
    )
Ejemplo n.º 13
0
def test_requirements_txt_output(mocker, capsys, make_dist):
    make_dist(name="distA", install_requires=["distB1", "distB2"], version="0.1")
    make_dist(name="distB1", install_requires=["distC[x,z]<0.3"], version="0.1")
    make_dist(name="distB2", install_requires=["distC[y]!=0.2"], version="0.1")
    make_dist(name="distC", version="0.1")
    make_dist(name="distC", version="0.2")
    make_dist(name="distC", version="0.3")
    mocker.patch("sys.argv", "johnnydep distA -o pinned".split())
    main()
    out, err = capsys.readouterr()
    assert err == ""
    assert out == dedent(
        """\
        distA==0.1
        distB1==0.1
        distB2==0.1
        distC[x,y,z]==0.1
    """
    )
Ejemplo n.º 14
0
def test_unresolvable_deptree(mocker, capsys, make_dist):
    # It is still possible to print the dep tree even though there is no acceptable version available for distC
    make_dist(name="distX", install_requires=["distC<=0.1", "distC>0.2"], version="0.1")
    make_dist(name="distC", version="0.1")
    make_dist(name="distC", version="0.2")
    make_dist(name="distC", version="0.3")
    fields = "name requires required_by versions_available version_latest_in_spec".split()
    mocker.patch("sys.argv", "johnnydep distX --fields".split() + fields)
    main()
    out, err = capsys.readouterr()
    assert err == ""
    assert out == dedent(
        """\
        name            requires               required_by    versions_available      version_latest_in_spec
        --------------  ---------------------  -------------  --------------------  ------------------------
        distX           distC<=0.1, distC>0.2                 0.1                                        0.1
        ├── distC<=0.1                         distX          0.1, 0.2, 0.3                              0.1
        └── distC>0.2                          distX          0.1, 0.2, 0.3                              0.3
    """
    )
Ejemplo n.º 15
0
def test_diamond_deptree(mocker, capsys):
    fields = [
        'name',
        'specifier',
        'requires',
        'required_by',
        'versions_available',
        'version_latest_in_spec',
    ]
    mocker.patch('sys.argv', 'johnnydep distA --fields'.split() + fields)
    main()
    out, err = capsys.readouterr()
    assert err == ''
    assert out == dedent('''\
    name                specifier    requires           required_by    versions_available      version_latest_in_spec
    ------------------  -----------  -----------------  -------------  --------------------  ------------------------
    distA                            distB1, distB2                    0.1                                        0.1
    ├── distB1                       distC[x,z] (<0.3)  distA          0.1                                        0.1
    │   └── distC[x,z]  <0.3                            distB1         0.1, 0.2, 0.3                              0.2
    └── distB2                       distC[y] (!=0.2)   distA          0.1                                        0.1
        └── distC[y]    !=0.2                           distB2         0.1, 0.2, 0.3                              0.3
    ''')
Ejemplo n.º 16
0
from johnnydep.cli import main

if __name__ == '__main__':
    main()