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')
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)