From: Elliot Smith Date: Wed, 30 Sep 2015 13:53:12 +0000 (+0100) Subject: toaster: Replace "Run again" button with help text for cli builds X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b67ac9e7cbab50951847dd1a63b12f41bb345dbb;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git toaster: Replace "Run again" button with help text for cli builds It's not possible to run a command-line build again, as Toaster doesn't have access to the data used for that build. Replace the "Run again" button with an icon which pops up some help text to that effect. Add test to check that the run again button is hidden and the help icon displayed instead for command-line builds. [YOCTO #8231] Signed-off-by: Elliot Smith Signed-off-by: Ed Bartosh Signed-off-by: brian avery --- diff --git a/lib/toaster/toastergui/static/css/default.css b/lib/toaster/toastergui/static/css/default.css index 06d9976557e..bc8a97bedc0 100644 --- a/lib/toaster/toastergui/static/css/default.css +++ b/lib/toaster/toastergui/static/css/default.css @@ -15,6 +15,8 @@ /* Styles for the help information */ .get-help { color: #CCCCCC; } .get-help:hover, .icon-plus-sign:hover { color: #999999; cursor: pointer; } +.get-help-green { color: #468847; } +.get-help-green:hover { color: #347132; cursor: pointer; } .get-help-blue { color: #3A87AD; } .get-help-blue:hover { color: #005580; cursor: pointer; } .get-help-yellow { color: #C09853; } @@ -161,6 +163,9 @@ table { table-layout: fixed; word-wrap: break-word; } .project-name .label { font-weight: normal; margin-bottom: 5px; margin-left: -15px; padding: 5px; } .project-name .label > a { color: #fff; font-weight: normal; } +/* styles for showing help icons next to command-line builds */ +.build-result .get-help-green, .build-result .get-help-red, .build-result .get-help-blue { margin-right: 35px; margin-top: 8px; font-size: 16px; } + /* Remove bottom margin for forms inside modal dialogs */ #dependencies-modal-form { margin-bottom: 0px; } diff --git a/lib/toaster/toastergui/templates/mrb_section.html b/lib/toaster/toastergui/templates/mrb_section.html index ad90e82ee35..5e96b39121d 100644 --- a/lib/toaster/toastergui/templates/mrb_section.html +++ b/lib/toaster/toastergui/templates/mrb_section.html @@ -18,7 +18,7 @@ {% endif %}
{% for build in mru %} -
@@ -81,24 +81,37 @@
- Build time: {{ build.timespent_seconds|sectohms }} + Build time: {{ build.timespent_seconds|sectohms }} - + Run again + + {% endif %}
{%endif%} {%if build.outcome == build.IN_PROGRESS %} diff --git a/lib/toaster/toastergui/tests.py b/lib/toaster/toastergui/tests.py index d278d63aa17..c725fc827d2 100644 --- a/lib/toaster/toastergui/tests.py +++ b/lib/toaster/toastergui/tests.py @@ -38,6 +38,7 @@ import json import re PROJECT_NAME = "test project" +CLI_BUILDS_PROJECT_NAME = 'Command line builds' class ViewTests(TestCase): """Tests to verify view APIs.""" @@ -658,6 +659,12 @@ class AllBuildsPageTests(TestCase): bitbake_version=bbv) self.project1 = Project.objects.create_project(name=PROJECT_NAME, release=release) + self.default_project = Project.objects.create_project( + name=CLI_BUILDS_PROJECT_NAME, + release=release + ) + self.default_project.is_default = True + self.default_project.save() # parameters for builds to associate with the projects now = timezone.now() @@ -669,6 +676,13 @@ class AllBuildsPageTests(TestCase): "outcome": Build.SUCCEEDED } + self.default_project_build_success = { + "project": self.default_project, + "started_on": now, + "completed_on": now, + "outcome": Build.SUCCEEDED + } + def test_show_tasks_in_allbuilds(self): """ Task should be shown as suffix on build name """ build = Build.objects.create(**self.project1_build_success) @@ -678,6 +692,23 @@ class AllBuildsPageTests(TestCase): result = re.findall('bash:clean', response.content, re.MULTILINE) self.assertEqual(len(result), 3) + def test_no_run_again_for_cli_build(self): + """ "Run again" button should not be shown for command-line builds """ + build = Build.objects.create(**self.default_project_build_success) + url = reverse("all-builds") + response = self.client.get(url, follow=True) + soup = BeautifulSoup(response.content) + + element_id = 'build-result-%d' % build.id + + # shouldn't see a run again button for command-line builds + run_again_button = soup.select('#%s button' % element_id) + self.assertEqual(len(run_again_button), 0) + + # should see a help icon for command-line builds + help_icon = soup.select('#%s i.get-help-green' % element_id) + self.assertEqual(len(help_icon), 1) + class ProjectPageTests(TestCase): """ Test project data at /project/X/ is displayed correctly """ CLI_BUILDS_PROJECT_NAME = 'Command line builds' @@ -707,3 +738,5 @@ class ProjectPageTests(TestCase): response = self.client.get(url, follow=True) self.assertEqual(response.status_code, 200) + +