コード例 #1
0
ファイル: __main__.py プロジェクト: hgn/builddriver
def main():
    if len(sys.argv) < 2:
        sys.stderr.write('command missing, exiting\n')
        sys.exit(1)

    cmd = " ".join(sys.argv[1:])
    sys.stderr.write('builddriver executing: \'{}\'\n'.format(cmd))
    ret = builddriver.execute(cmd)
    retcode = ret.returncode()
    if retcode == 0:
        msg = 'Compilation SUCCEED in {} seconds\n'
    else:
        msg = 'Compilation FAILED in {} seconds\n'
    sys.stderr.write(msg.format(ret.build_duration().total_seconds()))
    sys.stderr.write('Number of warnings: {}\n'.format(ret.warnings_no()))
    if ret.errors_no() > 0:
        sys.stderr.write('Number of errors: {}\n'.format(ret.errors_no()))
        error = list(ret.errors())[-1]
        sys.stderr.write('Last Error:\n  Message: \"{}\"\n'.format(
            error.message))
        sys.stderr.write('  Path: {}\n'.format(error.path))
        sys.stderr.write('  Line Number: {}\n'.format(error.lineno))
        sys.stderr.write('  Column: {}\n'.format(error.column))
        sys.stderr.write('For full log, please open: {}\n'.format(
            ret.tmp_name()))
        return retcode

    for warn in ret.warnings():
        print(warn)
    sys.stderr.write('For full log, please open: {}\n'.format(ret.tmp_name()))

    return retcode
コード例 #2
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_errors(self):
     path = os.path.join(FILE_PATH, 'make-02')
     ret = builddriver.execute(f'make -C {path}')
     self.assertTrue(ret.returncode() != 0)
     self.assertTrue(ret.errors_no() > 0)
     self.assertTrue(ret.matched_unknowns_no() == 0)
     self.assertTrue(ret.unmatched_no() > 0)
コード例 #3
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_duration(self):
     path = os.path.join(FILE_PATH, 'make-01')
     ret = builddriver.execute(f'make -C {path}')
     timedelta = ret.build_duration()
     # simple test, call make should be longer then 0
     # on all platforms
     self.assertTrue(timedelta.microseconds > 1)
コード例 #4
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_log(self):
     path = os.path.join(FILE_PATH, 'make-01')
     ret = builddriver.execute(f'make -C {path}')
     self.assertTrue(len(ret.log()) > 0)
コード例 #5
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_disable_precleanup(self):
     path = os.path.join(FILE_PATH, 'make-01')
     ret = builddriver.execute(f'make -C {path}', precleanup=False)
     # this should work as well
     ret.tmp_file_rm()
コード例 #6
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_tmp_rm(self):
     path = os.path.join(FILE_PATH, 'make-01')
     ret = builddriver.execute(f'make -C {path}')
     ret.tmp_file_rm()
コード例 #7
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_last_line(self):
     # I know this
     path = os.path.join(FILE_PATH, 'make-01')
     ret = builddriver.execute(f'make -w -C {path}')
     tail_lines = ret.taillog(limit=2)
     self.assertTrue('Leaving directory' in tail_lines[-1])
コード例 #8
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_limit(self):
     path = os.path.join(FILE_PATH, 'make-01')
     ret = builddriver.execute(f'make -C {path}')
     tail_lines = ret.taillog(limit=2)
     self.assertTrue(len(tail_lines) == 2)
コード例 #9
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_all(self):
     # I counted this manually,
     path = os.path.join(FILE_PATH, 'make-01')
     ret = builddriver.execute(f'make -C {path}')
     self.assertTrue(len(ret.taillog()) > 2)
コード例 #10
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_return_code_false(self):
     ret = builddriver.execute('this_command_does_not_exists_hopefully')
     self.assertTrue(ret.returncode() != 0)
コード例 #11
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_return_code_true(self):
     ret = builddriver.execute('whereis python3')
     self.assertTrue(ret.returncode() == 0)
コード例 #12
0
ファイル: tests.py プロジェクト: hgn/builddriver
 def test_duration_human(self):
     path = os.path.join(FILE_PATH, 'make-01')
     ret = builddriver.execute(f'make -C {path}')
     timedelta = ret.build_duration_human()