Beispiel #1
0
    def test_inactive_by_project(self):
        build = self.project.builds.create(
            datetime=self.date,
            version=self.date.strftime("%Y%m%d"),
        )
        test_run = build.test_runs.create(environment=self.env1)
        # create failed test
        foo_metadata, _ = SuiteMetadata.objects.get_or_create(
            suite=self.suite1.slug, name='test_foo', kind='test')
        test = test_run.tests.create(build=test_run.build,
                                     environment=test_run.environment,
                                     suite=self.suite1,
                                     metadata=foo_metadata,
                                     result=False)
        known_issue = KnownIssue.objects.create(title="foo",
                                                test_name=test.full_name)
        known_issue.save()
        known_issue.environments.add(test_run.environment)
        known_issue.active = False
        known_issue.save()

        self.assertEqual(
            0,
            len(
                KnownIssue.active_by_project_and_test(self.project,
                                                      test.full_name)))
Beispiel #2
0
    def __init__(self, project, full_test_name, top=None, page=1, per_page=20):
        suite_slug, test_name = parse_name(full_test_name)
        self.test = full_test_name

        self.paginator = Paginator(project.builds.prefetch_related(Prefetch('test_runs', queryset=TestRun.objects.prefetch_related('environment').all())).reverse(), per_page)
        if top:
            self.number = 0
            builds = project.builds.filter(datetime__lte=top.datetime).reverse()[0:per_page - 1]
        else:
            self.number = page
            builds = self.paginator.page(page)

        self.top = builds[0]

        environments = OrderedDict()
        results = OrderedDict()
        for build in builds:
            results[build] = {}

        issues_by_env = {}
        for issue in KnownIssue.active_by_project_and_test(project, full_test_name).all():
            for env in issue.environments.all():
                if env.id not in issues_by_env:
                    issues_by_env[env.id] = []
                issues_by_env[env.id].append(issue)

        suite = project.suites.prefetch_related('metadata').get(slug=suite_slug)
        metadata = SuiteMetadata.objects.get(kind='test', suite=suite_slug, name=test_name)
        tests = Test.objects.filter(build__in=builds, metadata_id=metadata.id).prefetch_related('build', 'environment', 'test_run', 'metadata').order_by()
        all_envs = set(project.environments.all())
        for test in tests:
            build = test.build
            environment = test.environment
            environments[environment] = True
            known_issues = issues_by_env.get(environment.id)
            is_duplicate = False
            if environment in results[build]:
                is_duplicate = True
            results[build][environment] = TestResult(test, suite, metadata, known_issues, is_duplicate)

        for build in results.keys():
            recorded_envs = set(results[build].keys())
            remaining_envs = all_envs - recorded_envs
            for env in remaining_envs:
                results[build][env] = None
                environments[env] = True
        # Make sure all builds that don't have the test have None at least
        for b in builds:
            if not results[b]:
                for env in all_envs:
                    results[build][env] = None
                    environments[env] = True

        self.environments = sorted(environments.keys(), key=lambda env: env.slug)
        self.results = results
Beispiel #3
0
 def test_active_by_project(self):
     build = self.project.builds.create(
         datetime=self.date,
         version=self.date.strftime("%Y%m%d"),
     )
     test_run = build.test_runs.create(environment=self.env1)
     # create failed test
     test = test_run.tests.create(suite=self.suite1, name="test_foo", result=False)
     known_issue = KnownIssue.objects.create(
         title="foo",
         test_name=test.full_name
     )
     known_issue.save()
     known_issue.environments.add(test_run.environment)
     self.assertEqual(1, len(KnownIssue.active_by_project_and_test(self.project, test.full_name)))
 def test_active_by_project(self):
     build = self.project.builds.create(
         datetime=self.date,
         version=self.date.strftime("%Y%m%d"),
     )
     test_run = build.test_runs.create(environment=self.env1)
     # create failed test
     test = test_run.tests.create(suite=self.suite1, name="test_foo", result=False)
     known_issue = KnownIssue.objects.create(
         title="foo",
         test_name=test.full_name
     )
     known_issue.save()
     known_issue.environments.add(test_run.environment)
     self.assertEqual(1, len(KnownIssue.active_by_project_and_test(self.project, test.full_name)))
Beispiel #5
0
 def known_issues(self):
     return KnownIssue.active_by_project_and_test(self.project)
Beispiel #6
0
 def known_issues(self):
     return KnownIssue.active_by_project_and_test(self.project)