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
Ejemplo n.º 2
0
 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")
Ejemplo n.º 3
0
 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")
Ejemplo n.º 4
0
 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")
Ejemplo n.º 5
0
 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")
Ejemplo n.º 6
0
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)
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 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
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
0
 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
Ejemplo n.º 13
0
 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
Ejemplo n.º 14
0
 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
Ejemplo n.º 15
0
import codecov

if __name__ == '__main__':
    codecov.main()
Ejemplo n.º 16
0
 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
Ejemplo n.º 17
0
 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)
Ejemplo n.º 18
0
 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
Ejemplo n.º 19
0
 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
Ejemplo n.º 20
0
import codecov


if __name__ == '__main__':
    codecov.main()