~udienz/ubuntu/natty/checkbox/checkbox.fix.514401

« back to all changes in this revision

Viewing changes to checkbox/requires.py

  • Committer: Bazaar Package Importer
  • Author(s): Mathias Gug, Marc Tardif
  • Date: 2010-03-09 16:58:36 UTC
  • Revision ID: james.westby@ubuntu.com-20100309165836-26f22oe6ubppzx0d
Tags: 0.9
[ Marc Tardif ]
New upstream release (LP: #532882):
* Introduced job_prompt plugin to treat all jobs (suites, tests, etc.) as composites.
* Replaced the registry and resource scripts and centralized job iteration.
* Replaced dependency on dbus by using sudo/gksu/kdesudo instead.
* Replaced mktemp with mkdtemp for security purposes.
* Fixed strings in fingerprint and modem tests (LP: #457759)
* Fixed client side validation of Launchpad form (LP: #438671)
* Added device information to tags when reporting bugs with apport.
* Added shorthands for blacklist-file and whitelist-file.
* Added support for apport default configuration (LP: #465447)
* Added support for scrolled options list (LP: #411526)
* Added support for tests generated by suites to run as root.
* Added support for requirements in attachments.
* Added support for armv7l processor
* Added Autotest integration
* Added LTP integration
* Added Phoronix integration
* Added qa-regression-testing integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#
2
 
# This file is part of Checkbox.
3
 
#
4
 
# Copyright 2008 Canonical Ltd.
5
 
#
6
 
# Checkbox is free software: you can redistribute it and/or modify
7
 
# it under the terms of the GNU General Public License as published by
8
 
# the Free Software Foundation, either version 3 of the License, or
9
 
# (at your option) any later version.
10
 
#
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.
15
 
#
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/>.
18
 
#
19
 
from checkbox.lib.iterator import IteratorContain, IteratorExclude
20
 
 
21
 
from checkbox.registry import registry_eval_recursive
22
 
 
23
 
 
24
 
class RequiresIterator(IteratorContain):
25
 
 
26
 
    def __init__(self, elements=[], registry=None):
27
 
        self._registry = registry
28
 
        self._requires_mask = {}
29
 
 
30
 
        iterator = IteratorExclude(elements,
31
 
            self._requires_exclude_func,
32
 
            self._requires_exclude_func)
33
 
 
34
 
        super(RequiresIterator, self).__init__(iterator)
35
 
 
36
 
    def _requires_exclude_func(self, element):
37
 
        """IteratorExclude function which removes element when the
38
 
           requires field contains a False value."""
39
 
        from checkbox.job import UNSUPPORTED
40
 
 
41
 
        if self._registry:
42
 
            mask = []
43
 
            for require in element.get("requires", []):
44
 
                result = registry_eval_recursive(self._registry, require)
45
 
                mask.append(bool(result))
46
 
 
47
 
            if False in mask:
48
 
                element["status"] = UNSUPPORTED
49
 
                element["data"] = "Test requirements not met."
50
 
                return True
51
 
 
52
 
        return False