예제 #1
0
def test_ancient_annex():
    class _runner(object):
        def run(self, cmd, *args, **kwargs):
            if '--raw' in cmd:
                raise CommandError
            return dict(stdout="git-annex version: 0.1", stderr="")

    ev = ExternalVersions()
    with patch('datalad.support.external_versions._runner', _runner()):
        assert_equal(ev['cmd:annex'], '0.1')
예제 #2
0
def test_external_versions_rogue_module(topd):
    ev = ExternalVersions()
    # if module throws some other non-ImportError exception upon import
    # we must not crash, but issue a warning
    modname = 'verycustomrogue__'
    create_tree(topd, {modname + '.py': 'raise Exception("pickaboo")'})
    with patch('sys.path', [topd]), \
        swallow_logs(new_level=logging.WARNING) as cml:
        assert ev[modname] is None
        assert_true(ev.dumps(indent=True).endswith(linesep))
        assert_in('pickaboo', cml.out)
def _test_annex_version_comparison(v, cmp_):
    class _runner(object):
        def run(self, cmd, *args, **kwargs):
            return dict(stdout=v, stderr="")

    ev = ExternalVersions()
    with set_annex_version(None), \
         patch('datalad.support.external_versions._runner', _runner()), \
         patch('datalad.support.annexrepo.external_versions',
               ExternalVersions()):
        ev['cmd:annex'] < AnnexRepo.GIT_ANNEX_MIN_VERSION
        if cmp_ in (1, 0):
            AnnexRepo._check_git_annex_version()
            if cmp_ == 0:
                assert_equal(AnnexRepo.git_annex_version, v)
        elif cmp == -1:
            with assert_raises(OutdatedExternalDependency):
                ev.check('cmd:annex', min_version=AnnexRepo.GIT_ANNEX_MIN_VERSION)
            with assert_raises(OutdatedExternalDependency):
                AnnexRepo._check_git_annex_version()
def test_system_ssh_version():
    ev = ExternalVersions()
    assert ev['cmd:system-ssh']  # usually we have some available at boxes we test

    for s, v in [
        ('OpenSSH_7.4p1 Debian-6, OpenSSL 1.0.2k  26 Jan 2017', '7.4p1'),
    ]:
        ev = ExternalVersions()
        # TODO: figure out leaner way
        class _runner(object):
            def run(self, cmd, *args, **kwargs):
                return dict(stdout="", stderr=s)
        with patch('datalad.support.external_versions._runner', _runner()):
            assert_equal(ev['cmd:system-ssh'], v)