1#! /usr/bin/env python3 2# 3# BitBake Toaster Implementation 4# 5# Copyright (C) 2013-2016 Intel Corporation 6# 7# SPDX-License-Identifier: GPL-2.0-only 8# 9 10from django.urls import reverse 11from django.utils import timezone 12from tests.browser.selenium_helpers import SeleniumTestCase 13from orm.models import Project, Build, Layer, Layer_Version, Recipe, Target 14from orm.models import Task, Task_Dependency 15 16class TestTaskPage(SeleniumTestCase): 17 """ Test page which shows an individual task """ 18 RECIPE_NAME = 'bar' 19 RECIPE_VERSION = '0.1' 20 TASK_NAME = 'do_da_doo_ron_ron' 21 22 def setUp(self): 23 now = timezone.now() 24 25 project = Project.objects.get_or_create_default_project() 26 27 self.build = Build.objects.create(project=project, started_on=now, 28 completed_on=now) 29 30 Target.objects.create(target='foo', build=self.build) 31 32 layer = Layer.objects.create() 33 34 layer_version = Layer_Version.objects.create(layer=layer) 35 36 recipe = Recipe.objects.create(name=TestTaskPage.RECIPE_NAME, 37 layer_version=layer_version, version=TestTaskPage.RECIPE_VERSION) 38 39 self.task = Task.objects.create(build=self.build, recipe=recipe, 40 order=1, outcome=Task.OUTCOME_COVERED, task_executed=False, 41 task_name=TestTaskPage.TASK_NAME) 42 43 def test_covered_task(self): 44 """ 45 Check that covered tasks are displayed for tasks which have 46 dependencies on themselves 47 """ 48 49 # the infinite loop which of bug 9952 was down to tasks which 50 # depend on themselves, so add self-dependent tasks to replicate the 51 # situation which caused the infinite loop (now fixed) 52 Task_Dependency.objects.create(task=self.task, depends_on=self.task) 53 54 url = reverse('task', args=(self.build.id, self.task.id,)) 55 self.get(url) 56 57 # check that we see the task name 58 self.wait_until_visible('.page-header h1') 59 60 heading = self.find('.page-header h1') 61 expected_heading = '%s_%s %s' % (TestTaskPage.RECIPE_NAME, 62 TestTaskPage.RECIPE_VERSION, TestTaskPage.TASK_NAME) 63 self.assertEqual(heading.text, expected_heading, 64 'Heading should show recipe name, version and task') 65