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
Example #2
0
    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
Example #3
0
    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