1#! /usr/bin/env python 2# ex:ts=4:sw=4:sts=4:et 3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- 4# 5# BitBake Toaster Implementation 6# 7# Copyright (C) 2013-2016 Intel Corporation 8# 9# This program is free software; you can redistribute it and/or modify 10# it under the terms of the GNU General Public License version 2 as 11# published by the Free Software Foundation. 12# 13# This program is distributed in the hope that it will be useful, 14# but WITHOUT ANY WARRANTY; without even the implied warranty of 15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16# GNU General Public License for more details. 17# 18# You should have received a copy of the GNU General Public License along 19# with this program; if not, write to the Free Software Foundation, Inc., 20# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 21 22from django.core.urlresolvers import reverse 23from django.utils import timezone 24from tests.browser.selenium_helpers import SeleniumTestCase 25from orm.models import Project, Build, Layer, Layer_Version, Recipe, Target 26from orm.models import Task, Task_Dependency 27 28class TestTaskPage(SeleniumTestCase): 29 """ Test page which shows an individual task """ 30 RECIPE_NAME = 'bar' 31 RECIPE_VERSION = '0.1' 32 TASK_NAME = 'do_da_doo_ron_ron' 33 34 def setUp(self): 35 now = timezone.now() 36 37 project = Project.objects.get_or_create_default_project() 38 39 self.build = Build.objects.create(project=project, started_on=now, 40 completed_on=now) 41 42 Target.objects.create(target='foo', build=self.build) 43 44 layer = Layer.objects.create() 45 46 layer_version = Layer_Version.objects.create(layer=layer) 47 48 recipe = Recipe.objects.create(name=TestTaskPage.RECIPE_NAME, 49 layer_version=layer_version, version=TestTaskPage.RECIPE_VERSION) 50 51 self.task = Task.objects.create(build=self.build, recipe=recipe, 52 order=1, outcome=Task.OUTCOME_COVERED, task_executed=False, 53 task_name=TestTaskPage.TASK_NAME) 54 55 def test_covered_task(self): 56 """ 57 Check that covered tasks are displayed for tasks which have 58 dependencies on themselves 59 """ 60 61 # the infinite loop which of bug 9952 was down to tasks which 62 # depend on themselves, so add self-dependent tasks to replicate the 63 # situation which caused the infinite loop (now fixed) 64 Task_Dependency.objects.create(task=self.task, depends_on=self.task) 65 66 url = reverse('task', args=(self.build.id, self.task.id,)) 67 self.get(url) 68 69 # check that we see the task name 70 self.wait_until_visible('.page-header h1') 71 72 heading = self.find('.page-header h1') 73 expected_heading = '%s_%s %s' % (TestTaskPage.RECIPE_NAME, 74 TestTaskPage.RECIPE_VERSION, TestTaskPage.TASK_NAME) 75 self.assertEqual(heading.text, expected_heading, 76 'Heading should show recipe name, version and task') 77