1
# This file is part of Checkbox.
3
# Copyright 2016 Canonical Ltd.
5
# Maciej Kisielewski <maciej.kisielewski@canonical.com>
7
# Checkbox is free software: you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License version 3,
9
# as published by the Free Software Foundation.
11
# Checkbox is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
# GNU General Public License for more details.
16
# You should have received a copy of the GNU General Public License
17
# along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
20
checkbox_ng.test_launcher
21
=========================
23
Test definitions for checkbox_ng.launcher module
26
from unittest import TestCase
27
from textwrap import dedent
29
from plainbox.impl.secure.config import Unset
31
from launcher import LauncherDefinition
32
from launcher import LauncherDefinitionLegacy
33
from launcher import LauncherDefinition1
36
class LauncherDefinitionTests(TestCase):
37
launcher_version_legacy = dedent("""
40
launcher_version_1 = dedent("""
44
launcher_version_future = dedent("""
49
def test_get_concrete_launcher_legacy(self):
50
l = LauncherDefinition()
51
l.read_string(self.launcher_version_legacy)
52
cls = l.get_concrete_launcher().__class__
53
self.assertIs(cls, LauncherDefinitionLegacy)
55
def test_get_concrete_launcher_launcher1(self):
56
l = LauncherDefinition()
57
l.read_string(self.launcher_version_1)
58
cls = l.get_concrete_launcher().__class__
59
self.assertIs(cls, LauncherDefinition1)
61
def test_get_concrete_launcher_future_raises(self):
62
l = LauncherDefinition()
63
l.read_string(self.launcher_version_future)
64
with self.assertRaises(KeyError):
65
l.get_concrete_launcher()
68
class LauncherDefinitionLegacyTests(TestCase):
69
def test_defaults(self):
71
l = LauncherDefinitionLegacy()
72
l.read_string(empty_launcher)
73
self.assertEqual(l.title, Unset)
74
self.assertEqual(l.api_flags, [])
75
self.assertEqual(l.api_version, '0.99')
76
self.assertEqual(l.text, Unset)
77
self.assertEqual(l.whitelist_filter, Unset)
78
self.assertEqual(l.whitelist_selection, Unset)
79
self.assertEqual(l.skip_whitelist_selection, False)
80
self.assertEqual(l.skip_test_selection, False)
81
self.assertEqual(l.input_type, Unset)
82
self.assertEqual(l.ok_btn_text, Unset)
83
self.assertEqual(l.submit_to_hexr, Unset)
84
self.assertEqual(l.submit_to, Unset)
85
self.assertEqual(l.submit_url, Unset)
86
self.assertEqual(l.secure_id, Unset)
87
self.assertEqual(l.exporter, Unset)
90
class LauncherDefinition1Tests(TestCase):
92
def test_defaults(self):
93
empty_launcher = dedent("""
97
l = LauncherDefinition1()
98
l.read_string(empty_launcher)
99
self.assertEqual(l.api_version, '0.99')
100
self.assertEqual(l.app_id, 'checkbox-cli')
101
self.assertEqual(l.api_flags, [])
102
self.assertEqual(l.providers, ['*'])
103
self.assertEqual(l.test_plan_filters, ['*'])
104
self.assertEqual(l.test_plan_default_selection, Unset)
105
self.assertEqual(l.test_plan_forced, False)
106
self.assertEqual(l.test_selection_forced, False)
107
self.assertEqual(l.ui_type, 'interactive')
108
self.assertEqual(l.restart_strategy, Unset)
110
def test_smoke(self):
111
definition = dedent("""
115
api_flags = restartable
120
unit = 2000.the.chosen.one
121
filter = 2000*, 3000* tp_foo*
130
exporter = bar_exporter
132
[exporter:bar_exporter]
133
unit = bar_exporter_unit
137
l = LauncherDefinition1()
138
l.read_string(definition)
139
self.assertEqual(l.api_version, '0.99')
140
self.assertEqual(l.app_id, 'FOOBAR')
141
self.assertEqual(l.api_flags, ['restartable'])
142
self.assertEqual(l.providers, ['foo*', 'bar*', 'baz'])
143
self.assertEqual(l.test_plan_filters, ['2000*', '3000*', 'tp_foo*'])
144
self.assertEqual(l.test_plan_default_selection, '2000.the.chosen.one')
145
self.assertEqual(l.test_plan_forced, True)
146
self.assertEqual(l.test_selection_forced, True)
147
self.assertEqual(l.ui_type, 'silent')
148
self.assertEqual(l.restart_strategy, 'magic')
149
self.assertEqual(l.reports, {
150
'foo_report': {'exporter': 'bar_exporter', 'transport': 'file'}})
151
self.assertEqual(l.exporters, {
152
'bar_exporter': {'unit': 'bar_exporter_unit'}})
153
self.assertEqual(l.transports, {
154
'file': {'path': '/tmp/path'}})