def main(): """Run codecov up to RETRIES times On the final attempt, let it exit normally.""" # Make a copy of argv and make sure --required is in it args = sys.argv[1:] if '--required' not in args: args.append('--required') for num in range(1, RETRIES + 1): print('Running codecov attempt %d: ' % num) # On the last, let codecov handle the exit if num == RETRIES: codecov.main() try: codecov.main(*args) except SystemExit as err: # If there's no exit code, it was successful if err.code: time.sleep(TIMEOUT) else: sys.exit(err.code) else: break
def test_exits_0(self): try: sys.argv = [""] codecov.main() except SystemExit as e: self.assertEqual(str(e), "0") else: raise Exception("did not exit")
def test_exits_1(self): try: sys.argv = [''] codecov.main('--required') except SystemExit as e: self.assertEqual(str(e), '1') else: raise Exception("did not exit")
def publish_coverage_on_codecov(path, token, commandline=True, fLOG=None): """ Publishes the coverage report on `codecov <https://codecov.io/>`_. See blog post :ref:`blogpost_coverage_codecov`. @param path path to source @param token token on codecov @param commandline see @see cl SourceRepository @param fLOG logging function @return out, err from function @see fn run_cmd """ if fLOG is None: from ..loghelper import noLOG fLOG = noLOG # delayed import to speed up import of pycode from ..loghelper import SourceRepository if os.path.isfile(path) or path.endswith(".xml"): report = path else: report = os.path.join(path, "_doc", "sphinxdoc", "source", "coverage", "coverage_report.xml") report = os.path.normpath(report) if not os.path.exists(report): raise FileNotFoundError( # pragma: no cover "Unable to find '{}'.".format(report)) proj = os.path.normpath( os.path.join(os.path.dirname(report), "..", "..", "..", "..")) src = SourceRepository(commandline=commandline) last = src.get_last_commit_hash(proj) cmd = [ "--token={0}".format(token), "--file={0}".format(report), "--commit={0}".format(last), "--root={0} -X gcov".format(proj) ] if token is not None: # pragma: no cover import codecov new_out = StringIO() new_err = StringIO() with redirect_stdout(new_out): with redirect_stderr(new_err): codecov.main(*cmd) out = new_out.getvalue() err = new_err.getvalue() if err: raise RuntimeError( # pragma: no cover "Unable to run:\nCMD:\n{0}\nOUT:\n{1}\n[pyqerror]\n{2}".format( cmd, out, err)) return out, err return cmd
def test_returns_none(self): with open(self.filepath, 'w+') as f: f.write('coverage data') sys.argv = ['', '--commit=8ed84d96bc225deff66605486180cd555366806b', '--branch=master', '--token=473c8c5b-10ee-4d83-86c6-bfd72a185a27'] self.assertEqual(codecov.main(), None)
def publish_coverage_on_codecov(path, token, commandline=True, fLOG=noLOG): """ Publish the coverage report on `codecov <https://codecov.io/>`_. See blog post :ref:`blogpost_coverage_codecov`. @param path path to source @param token token on codecov @param commandline see @see cl SourceRepository @return out, err from function @see fn run_cmd """ if os.path.isfile(path): report = path else: report = os.path.join(path, "_doc", "sphinxdoc", "source", "coverage", "coverage_report.xml") report = os.path.normpath(report) if not os.path.exists(report): raise FileNotFoundError(report) proj = os.path.normpath(os.path.join( os.path.dirname(report), "..", "..", "..", "..")) src = SourceRepository(commandline=commandline) last = src.get_last_commit_hash(proj) cmd = ["--token={0}".format(token), "--file={0}".format(report), "--commit={0}".format(last), "--root={0} -X gcov".format(proj)] if token is not None: import codecov out = sys.stdout err = sys.stderr new_out = StringIO() new_err = StringIO() sys.stdout = new_out sys.stderr = new_err codecov.main(*cmd) sys.stdout = out sys.stderr = err out = new_out.getvalue() err = new_err.getvalue() if err: raise Exception( "unable to run:\nCMD:\n{0}\nOUT:\n{1}\nERR:\n{2}".format(cmd, out, err)) return out, err else: return cmd
def run_cli(self, dump=True, *args, **kwargs): inline = list( itertools.chain(*[['--%s' % key, str(value)] for key, value in kwargs.items() if value])) if dump: inline.append('--dump') inline.extend(args) return codecov.main(*inline, debug=True)
def command(self, **kwargs): args = dict(url=self.url) args.update(kwargs) inline = list( itertools.chain(*[['--%s' % key, value] for key, value in args.items() if value])) data, passes = codecov.main(*inline) return data, args
def test_returns_none(self): with patch('requests.post') as post: with patch('requests.put') as put: post.return_value = Mock(status_code=200, text='target\ns3') put.return_value = Mock(status_code=200) with open(self.filepath, 'w+') as f: f.write('coverage data') sys.argv = ['', '--commit=8ed84d96bc225deff66605486180cd555366806b', '--branch=master', '--token=473c8c5b-10ee-4d83-86c6-bfd72a185a27'] self.assertEqual(codecov.main(), None) assert post.called and put.called
def test_returns_none(self): with patch("requests.post") as post: with patch("requests.put") as put: post.return_value = Mock(status_code=200, text="target\ns3") put.return_value = Mock(status_code=200) with open(self.filepath, "w+") as f: f.write("coverage data") sys.argv = [ "", "--commit=8ed84d96bc225deff66605486180cd555366806b", "--branch=master", "--token=473c8c5b-10ee-4d83-86c6-bfd72a185a27", ] self.assertEqual(codecov.main(), None) assert post.called and put.called
import codecov if __name__ == '__main__': codecov.main()
def command(self, **kwargs): args = dict(url=self.url) args.update(kwargs) inline = list(itertools.chain(*[['--%s' % key, value] for key, value in args.items() if value])) data, passes = codecov.main(*inline) return data, args
def run_cli(self, dump=True, *args, **kwargs): inline = list(itertools.chain(*[['--%s' % key, str(value)] for key, value in kwargs.items() if value])) if dump: inline.append('--dump') inline.extend(args) return codecov.main(*inline, debug=True)
def command(self, **kwargs): args = dict(url=self.url) args.update(kwargs) inline = list(itertools.chain(*[['--%s'% key, value] for key, value in args.items() if value])) print "\033[92m....\033[0m", inline return codecov.main(*inline), args