def test__version__(): # in released stage, version in the last CHANGELOG entry # should correspond to the one in datalad CHANGELOG_filename = op.join( op.dirname(__file__), op.pardir, op.pardir, 'CHANGELOG.md') if not op.exists(CHANGELOG_filename): raise SkipTest("no %s found" % CHANGELOG_filename) regex = re.compile(r'^## ' r'(?P<version>[0-9]+\.[0-9.abcrc~]+)\s+' r'\((?P<date>.*)\)' r'\s+--\s+' r'(?P<codename>.+)' ) with open(CHANGELOG_filename, 'rb') as f: for line in f: line = line.rstrip() if not line.startswith(b'## '): # The first section header we hit, must be our changelog entry continue reg = regex.match(assure_unicode(line)) if not reg: # first one at that level is the one raise AssertionError( "Following line must have matched our regex: %r" % line) regd = reg.groupdict() changelog_version = regd['version'] lv_changelog_version = LooseVersion(changelog_version) # we might have a suffix - sanitize san__version__ = __version__.rstrip('.devdirty') lv__version__ = LooseVersion(san__version__) if '???' in regd['date'] and 'will be better than ever' in regd['codename']: # we only have our template # we can only assert that its version should be higher than # the one we have now assert_greater(lv_changelog_version, lv__version__) else: # should be a "release" record assert_not_in('???', regd['date']) assert_not_in('will be better than ever', regd['codename']) assert_equal(__hardcoded_version__, changelog_version) if __hardcoded_version__ != san__version__: # It was not tagged yet and Changelog should have its # template record for the next release assert_greater(lv_changelog_version, lv__version__) assert_in('.dev', san__version__) else: # all is good, tagged etc assert_equal(lv_changelog_version, lv__version__) assert_equal(changelog_version, san__version__) assert_equal(__hardcoded_version__, san__version__) return raise AssertionError( "No log line matching our regex found in %s" % CHANGELOG_filename )
) from datalad.support.exceptions import ( MissingExternalDependency, ) try: import github as gh except ImportError: # make sure that the command complains too assert_raises(MissingExternalDependency, create_sibling_github, 'some') raise SkipTest # Keep fixtures local to this test file from datalad.support import path as op FIXTURES_PATH = op.join(op.dirname(__file__), 'vcr_cassettes') def use_cassette(name, *args, **kwargs): """Adapter to store fixtures locally and skip if there is no vcr TODO: RF local aspect so could be used in other places as well """ kwargs.setdefault('skip_if_no_vcr', True) return use_cassette_(op.join(FIXTURES_PATH, name + '.yaml'), *args, **kwargs) @with_tempfile def test_invalid_call(path): # no dataset assert_raises(ValueError, create_sibling_github, 'bogus', dataset=path)
) from datalad.support.exceptions import ( MissingExternalDependency, ) try: import github as gh except ImportError: # make sure that the command complains too assert_raises(MissingExternalDependency, create_sibling_github, 'some') raise SkipTest # Keep fixtures local to this test file from datalad.support import path as op FIXTURES_PATH = op.join(op.dirname(__file__), 'vcr_cassettes') def use_cassette(name, *args, **kwargs): """Adapter to store fixtures locally TODO: RF so could be used in other places as well """ return use_cassette_(op.join(FIXTURES_PATH, name + '.yaml'), *args, **kwargs) @with_tempfile def test_invalid_call(path): # no dataset assert_raises(ValueError, create_sibling_github, 'bogus', dataset=path) ds = Dataset(path).create()
import os from datalad.support import path as op # top level of this super dataset # TODO: may be use our "figure out dataset top" helpers? # TODO: might want to be able to override it so we could run # tests against online (remote) superdataset LOCAL_DATASETS_ROOT = op.dirname(op.dirname(op.dirname(op.realpath(__file__)))) DATASETS_TOPURL = os.environ.get('DATALAD_DATASETS_TOPURL', LOCAL_DATASETS_ROOT) # We will rely on the configuration of that location to instruct us # either it is a full installation (e.g. on smaug or falkor) or not from datalad.api import Dataset from datalad.utils import assure_bool DATASETS_FULL_INSTALL = assure_bool( Dataset(DATASETS_TOPURL).config.get('datalad.tests.fullinstallation', False)) print("Full installation: %s" % DATASETS_FULL_INSTALL)