def make_report(self): self.setup_env() commit = self.last_commit() new_test = None if self.repo.last_commit != commit or len(commit) == 0: #self.repo.last_commit = commit install_result, returncode1 = self.install() # mysql text field has a limitation on how large a text field can be # 65,535 bytes ~64kb mysql_text_limit = 40000 install_result = install_result[-mysql_text_limit:] test_result, returncode2 = self.run_tests() test_result = test_result[-mysql_text_limit:] author = self.last_commit_author() result_state = 'pass' if returncode2 == 0 else 'fail' new_test = TestReport( repository=self.repo, install=install_result, result=test_result, commit=commit, author=author, state=result_state, ) new_test.save() # this to avoid to override things that could have been modified in # the admin. save_repo = Repository.objects.get(pk=self.repo.pk) save_repo.state = result_state save_repo.last_commit = commit save_repo.save() self.teardown_env() return new_test
def make_report(self, force=False): report = self.repo.last_test_report() if report: delta = datetime.now() - report.creation_date if report.state == "running" and delta < MAX_RUN_DELTA: print "Last report is still running, running time is %s" % str(delta) return report self.setup_env() commit = self.last_commit() new_test = None if self.repo.last_commit == commit: print "No new commit since last test." if force or self.repo.last_commit != commit or len(commit) == 0: author = self.last_commit_author() new_test = TestReport( repository=self.repo, install="Running ...", result="Running ...", commit=commit, author=author, state='running', ) new_test.save() try: install_result, returncodeinstall = self.install() # mysql text field has a limitation on how large a text field can be # 65,535 bytes ~64kb mysql_text_limit = 40000 install_result = install_result[-mysql_text_limit:] test_result, returncode = self.run_tests() print test_result test_result = test_result[-mysql_text_limit:] except Exception as e: returncode = 1 install_result = str(e) test_result = str(e) if returncode == 0: result_state = "pass" else: result_state = "fail" new_test.install=install_result new_test.result=test_result new_test.state=result_state new_test.save() # this to avoid to override things that could have been modified in # the admin, we fetch the repo again. save_repo = Repository.objects.get(pk=self.repo.pk) save_repo.state = result_state save_repo.last_commit = commit save_repo.save() self.teardown_env() return new_test
def make_report(self, force=False): report = self.repo.last_test_report() if report: delta = datetime.now() - report.creation_date if report.state == "running" and delta < MAX_RUN_DELTA: print "Last report is still running, running time is %s" % str(delta) return report self.setup_env() commit = self.last_commit() new_test = None if self.repo.last_commit == commit: print "No new commit since last test." if force or self.repo.last_commit != commit or len(commit) == 0: author = self.last_commit_author() new_test = TestReport( repository=self.repo, install="Running ...", result="Running ...", commit=commit, author=author, state="running", ) new_test.save() try: install_result, returncodeinstall = self.install() # mysql text field has a limitation on how large a text field can be # 65,535 bytes ~64kb mysql_text_limit = 40000 install_result = install_result[-mysql_text_limit:] test_result, returncode = self.run_tests() print test_result test_result = test_result[-mysql_text_limit:] except Exception as e: returncode = 1 install_result = str(e) test_result = str(e) if returncode == 0: result_state = "pass" else: result_state = "fail" new_test.install = install_result new_test.result = test_result new_test.state = result_state new_test.save() # this to avoid to override things that could have been modified in # the admin, we fetch the repo again. save_repo = Repository.objects.get(pk=self.repo.pk) save_repo.state = result_state save_repo.last_commit = commit save_repo.save() self.teardown_env() return new_test