Merge lp:~roadmr/ubuntu/saucy/checkbox/0.16 into lp:ubuntu/saucy/checkbox
- Saucy (13.10)
- 0.16
- Merge into saucy
Proposed by
Daniel Manrique
Status: | Merged |
---|---|
Merged at revision: | 1882 |
Proposed branch: | lp:~roadmr/ubuntu/saucy/checkbox/0.16 |
Merge into: | lp:ubuntu/saucy/checkbox |
Diff against target: |
58223 lines (+46783/-2840) 308 files modified
Vagrantfile (+25/-16) bin/checkbox-hw-collection (+19/-0) checkbox/contrib/xrandr.py (+132/-59) checkbox/lib/fifo.py (+6/-1) checkbox/lib/template.py (+4/-4) checkbox/message.py (+17/-15) checkbox/parsers/submission.py (+1/-1) checkbox/parsers/tests/fixtures/submission_info_memory.xml (+1/-1) checkbox/parsers/tests/test_cputable.py (+4/-4) checkbox/parsers/tests/test_description.py (+17/-17) checkbox/parsers/tests/test_dmi.py (+13/-13) checkbox/parsers/tests/test_efi.py (+5/-5) checkbox/parsers/tests/test_submission.py (+43/-50) checkbox/parsers/tests/test_xinput.py (+21/-26) checkbox/parsers/udevadm.py (+3/-2) checkbox/test_resource.py (+347/-0) checkbox/tests/__init__.py (+49/-0) checkbox/tests/test_job.py (+5/-4) checkbox/tests/test_message_files.py (+3/-2) checkbox/tests/test_setup_files.py (+4/-2) checkbox/user_interface.py (+6/-11) checkbox/variables.py (+2/-1) checkbox_cli/cli_interface.py (+3/-3) checkbox_gtk/gtk_interface.py (+2/-2) checkbox_qt/qt_interface.py (+3/-3) checkbox_urwid/urwid_interface.py (+2/-2) data/whitelists/hwsubmit.whitelist (+24/-0) data/whitelists/sru.whitelist (+114/-0) debian/changelog (+142/-0) debian/checkbox-hw-collection.install (+2/-0) debian/checkbox-hw-collection.links (+1/-0) debian/checkbox-hw-collection.postinst (+7/-0) debian/checkbox.install (+1/-0) debian/control (+13/-0) debian/po/ast.po (+3/-4) debian/po/cs.po (+3/-4) debian/po/de.po (+5/-5) debian/po/en_AU.po (+3/-4) debian/po/en_GB.po (+3/-4) debian/po/es.po (+7/-6) debian/po/fr.po (+3/-4) debian/po/gl.po (+3/-4) debian/po/he.po (+3/-4) debian/po/hu.po (+3/-4) debian/po/id.po (+3/-4) debian/po/it.po (+3/-4) debian/po/ja.po (+3/-4) debian/po/nl.po (+3/-4) debian/po/oc.po (+3/-4) debian/po/pl.po (+3/-4) debian/po/pt_BR.po (+3/-4) debian/po/ro.po (+3/-4) debian/po/ru.po (+3/-4) debian/po/tr.po (+3/-4) debian/po/uk.po (+3/-4) debian/po/zh_CN.po (+3/-4) debian/po/zh_TW.po (+3/-4) debian/rules (+1/-0) examples/checkbox-cli.ini (+3/-0) examples/checkbox-hw-collection.ini (+18/-0) examples/checkbox-qt.ini (+4/-0) examples/checkbox-urwid.ini (+3/-0) examples/network.cfg (+4/-0) jobs/audio.txt.in (+4/-0) jobs/benchmarks.txt.in (+68/-0) jobs/camera.txt.in (+0/-1) jobs/esata.txt.in (+1/-1) jobs/firewire.txt.in (+1/-1) jobs/graphics.txt.in (+3/-1) jobs/hibernate.txt.in (+8/-2) jobs/info.txt.in (+1/-1) jobs/input.txt.in (+11/-1) jobs/keys.txt.in (+8/-2) jobs/led.txt.in (+45/-14) jobs/local.txt.in (+7/-0) jobs/mediacard.txt.in (+50/-33) jobs/miscellanea.txt.in (+52/-1) jobs/mobilebroadband.txt.in (+21/-0) jobs/monitor.txt.in (+4/-4) jobs/networking.txt.in (+4/-4) jobs/power-management.txt.in (+57/-21) jobs/rendercheck.txt.in (+1/-1) jobs/resource.txt.in (+13/-0) jobs/stress.txt.in (+15/-3) jobs/suspend.txt.in (+96/-39) jobs/usb.txt.in (+6/-6) jobs/virtualization.txt.in (+16/-0) jobs/wireless.txt.in (+13/-13) plainbox/.coveragerc (+11/-0) plainbox/MANIFEST.in (+5/-0) plainbox/README.md (+0/-122) plainbox/README.rst (+23/-0) plainbox/Vagrantfile (+42/-0) plainbox/daily-package-testing/README (+18/-0) plainbox/daily-package-testing/Vagrantfile (+48/-0) plainbox/daily-package-testing/test-in-vagrant.sh (+59/-0) plainbox/docs/appdev/index.rst (+39/-0) plainbox/docs/author/index.rst (+63/-0) plainbox/docs/conf.py (+13/-1) plainbox/docs/dev/architecture.rst (+7/-305) plainbox/docs/dev/config.rst (+253/-0) plainbox/docs/dev/index.rst (+12/-7) plainbox/docs/dev/old.rst (+339/-0) plainbox/docs/dev/reference.rst (+15/-0) plainbox/docs/dev/resources.rst (+259/-0) plainbox/docs/index.rst (+8/-5) plainbox/docs/usage.rst (+29/-5) plainbox/mk-interesting-graphs.sh (+2/-2) plainbox/mk-venv.sh (+181/-26) plainbox/plainbox/data/org.freedesktop.policykit.pkexec.policy (+30/-0) plainbox/plainbox/data/plainbox-ci-mailer.conf (+44/-0) plainbox/plainbox/data/plainbox.conf (+26/-0) plainbox/plainbox/data/plainbox.desktop (+10/-0) plainbox/plainbox/data/report/hardware-1_0.rng (+533/-0) plainbox/plainbox/impl/applogic.py (+173/-0) plainbox/plainbox/impl/box.py (+13/-386) plainbox/plainbox/impl/checkbox.py (+161/-74) plainbox/plainbox/impl/commands/check_config.py (+92/-0) plainbox/plainbox/impl/commands/checkbox.py (+101/-0) plainbox/plainbox/impl/commands/run.py (+319/-0) plainbox/plainbox/impl/commands/special.py (+133/-0) plainbox/plainbox/impl/commands/sru.py (+270/-0) plainbox/plainbox/impl/commands/test_run.py (+28/-0) plainbox/plainbox/impl/commands/test_sru.py (+63/-0) plainbox/plainbox/impl/config.py (+538/-0) plainbox/plainbox/impl/depmgr.py (+59/-5) plainbox/plainbox/impl/exporter/__init__.py (+53/-8) plainbox/plainbox/impl/exporter/json.py (+12/-5) plainbox/plainbox/impl/exporter/rfc822.py (+5/-2) plainbox/plainbox/impl/exporter/test_init.py (+22/-3) plainbox/plainbox/impl/exporter/test_json.py (+13/-7) plainbox/plainbox/impl/exporter/test_rfc822.py (+47/-0) plainbox/plainbox/impl/exporter/test_text.py (+43/-0) plainbox/plainbox/impl/exporter/test_xml.py (+96/-0) plainbox/plainbox/impl/exporter/text.py (+3/-3) plainbox/plainbox/impl/exporter/xml.py (+385/-0) plainbox/plainbox/impl/integration_tests.py (+8/-5) plainbox/plainbox/impl/job.py (+36/-46) plainbox/plainbox/impl/mock_job.py (+1/-1) plainbox/plainbox/impl/rfc822.py (+4/-19) plainbox/plainbox/impl/runner.py (+90/-42) plainbox/plainbox/impl/secure/__init__.py (+27/-0) plainbox/plainbox/impl/secure/checkbox_trusted_launcher.py (+402/-0) plainbox/plainbox/impl/secure/test_checkbox_trusted_launcher.py (+268/-0) plainbox/plainbox/impl/session.py (+95/-9) plainbox/plainbox/impl/test_applogic.py (+108/-0) plainbox/plainbox/impl/test_box.py (+24/-9) plainbox/plainbox/impl/test_checkbox.py (+83/-0) plainbox/plainbox/impl/test_config.py (+153/-0) plainbox/plainbox/impl/test_depmgr.py (+22/-2) plainbox/plainbox/impl/test_job.py (+142/-66) plainbox/plainbox/impl/test_result.py (+2/-2) plainbox/plainbox/impl/test_rfc822.py (+27/-19) plainbox/plainbox/impl/test_runner.py (+62/-0) plainbox/plainbox/impl/test_session.py (+123/-11) plainbox/plainbox/impl/testing_utils.py (+1/-1) plainbox/plainbox/impl/transport/__init__.py (+95/-0) plainbox/plainbox/impl/transport/certification.py (+132/-0) plainbox/plainbox/impl/transport/test_certification.py (+183/-0) plainbox/plainbox/impl/transport/test_init.py (+68/-0) plainbox/plainbox/test-data/xml-exporter/example-data.json (+19037/-0) plainbox/plainbox/test-data/xml-exporter/example-data.xml (+15749/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_binary_attachment.json (+7/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_binary_attachment.xml (+21/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_comments.json (+13/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_comments.xml (+30/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_hardware_info.json (+10/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_hardware_info.xml (+22/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_io_log.json (+14/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_io_log.xml (+30/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_text_attachment.json (+7/-0) plainbox/plainbox/test-data/xml-exporter/test_dump_with_text_attachment.xml (+21/-0) plainbox/plainbox/testing_utils/__init__.py (+50/-1) plainbox/requirements/rtfd.txt (+5/-0) plainbox/setup.py (+20/-2) plainbox/test-in-vagrant.sh (+82/-0) plainbox/test-with-coverage.sh (+4/-4) plugins/environment_info.py (+7/-0) plugins/hexr_prompt.py (+32/-0) plugins/hexr_transport.py (+169/-0) plugins/jobs_prompt.py (+0/-1) plugins/launchpad_exchange.py (+1/-1) plugins/launchpad_prompt.py (+3/-2) plugins/launchpad_report.py (+2/-1) plugins/lock_prompt.py (+16/-8) plugins/message_info.py (+4/-2) plugins/persist_info.py (+1/-1) po/POTFILES.in (+1/-0) po/ace.po (+3/-3) po/af.po (+3/-3) po/am.po (+3/-3) po/ar.po (+3/-3) po/ast.po (+3/-3) po/az.po (+3/-3) po/be.po (+3/-3) po/bg.po (+3/-3) po/bn.po (+3/-3) po/bo.po (+3/-3) po/br.po (+3/-3) po/bs.po (+5/-5) po/ca.po (+3/-3) po/ca@valencia.po (+3/-3) po/ckb.po (+3/-3) po/cs.po (+13/-3) po/cy.po (+3/-3) po/da.po (+3/-3) po/de.po (+3/-3) po/dv.po (+3/-3) po/el.po (+3/-3) po/en_AU.po (+3/-3) po/en_CA.po (+3/-3) po/en_GB.po (+3/-3) po/eo.po (+3/-3) po/es.po (+113/-113) po/et.po (+3/-3) po/eu.po (+3/-3) po/fa.po (+3/-3) po/fi.po (+3/-3) po/fr.po (+3/-3) po/ga.po (+3/-3) po/gd.po (+3/-3) po/gl.po (+242/-213) po/he.po (+3/-3) po/hi.po (+3/-3) po/hr.po (+3/-3) po/hu.po (+3/-3) po/hy.po (+3/-3) po/id.po (+3/-3) po/is.po (+3/-3) po/it.po (+11/-10) po/ja.po (+174/-160) po/jbo.po (+3/-3) po/ka.po (+3/-3) po/kk.po (+3/-3) po/km.po (+3/-3) po/kn.po (+3/-3) po/ko.po (+3/-3) po/ku.po (+3/-3) po/ky.po (+3/-3) po/lt.po (+3/-3) po/lv.po (+4/-4) po/mk.po (+3/-3) po/ml.po (+3/-3) po/mr.po (+3/-3) po/ms.po (+3/-3) po/my.po (+3/-3) po/nb.po (+3/-3) po/nds.po (+3/-3) po/ne.po (+3/-3) po/nl.po (+3/-3) po/nn.po (+3/-3) po/oc.po (+5/-5) po/pl.po (+3/-3) po/ps.po (+3/-3) po/pt.po (+20/-20) po/pt_BR.po (+14/-14) po/ro.po (+3/-3) po/ru.po (+5/-5) po/sd.po (+3/-3) po/shn.po (+3/-3) po/si.po (+3/-3) po/sk.po (+3/-3) po/sl.po (+43/-43) po/sq.po (+3/-3) po/sr.po (+3/-3) po/sv.po (+3/-3) po/ta.po (+3/-3) po/te.po (+3/-3) po/th.po (+3/-3) po/tr.po (+3/-3) po/ug.po (+3/-3) po/uk.po (+3/-3) po/ur.po (+3/-3) po/uz.po (+3/-3) po/vi.po (+3/-3) po/zh_CN.po (+3/-3) po/zh_HK.po (+3/-3) po/zh_TW.po (+3/-3) qt/frontend/qtfront.cpp (+11/-1) qt/frontend/qtfront.h (+2/-1) qt/frontend/qtfront.ui (+20/-4) scripts/alsa_record_playback (+1/-1) scripts/bluetooth_test (+1/-1) scripts/camera_test (+76/-46) scripts/cpu_offlining (+25/-13) scripts/cpu_topology (+1/-1) scripts/create_connection (+172/-55) scripts/fwts_test (+26/-23) scripts/glob_test (+121/-0) scripts/gpu_test (+74/-71) scripts/gputest_benchmark (+110/-0) scripts/graphics_stress_test (+6/-0) scripts/lsmod_info (+6/-3) scripts/memory_compare (+6/-3) scripts/mm-test (+527/-0) scripts/network (+382/-0) scripts/network_check (+5/-1) scripts/network_device_info (+11/-10) scripts/rendercheck_test (+7/-0) scripts/sleep_test_log_check (+72/-0) scripts/sources_test (+11/-8) scripts/virtualization (+82/-29) scripts/xen_test (+74/-0) setup.cfg (+1/-0) setup.py (+6/-6) tarmac-verify (+15/-5) test-in-vagrant.sh (+101/-20) test_scripts/tests/test_gputest_benchmark.py (+82/-0) |
To merge this branch: | bzr merge lp:~roadmr/ubuntu/saucy/checkbox/0.16 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Daniel Manrique (community) | Approve | ||
Ubuntu branches | Pending | ||
Review via email: mp+163215@code.launchpad.net |
Commit message
Description of the change
New version of checkbox for Ubuntu, bringing it in sync with checkbox trunk.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'Vagrantfile' |
2 | --- Vagrantfile 2013-03-07 15:52:02 +0000 |
3 | +++ Vagrantfile 2013-05-09 20:11:45 +0000 |
4 | @@ -3,45 +3,54 @@ |
5 | |
6 | Vagrant::Config.run do |config| |
7 | |
8 | + config.ssh.timeout = 60 |
9 | + |
10 | + # Define a Ubuntu Server image (cloud) for the 12.04 release (precise) |
11 | + config.vm.define :precise do |precise_config| |
12 | + precise_config.vm.box = "precise-cloud-i386" |
13 | + precise_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-i386-vagrant-disk1.box" |
14 | + end |
15 | + |
16 | # Define a Ubuntu Server image (cloud) for the 12.10 release (quantal) |
17 | config.vm.define :quantal do |quantal_config| |
18 | quantal_config.vm.box = "quantal-cloud-i386" |
19 | quantal_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/quantal/current/quantal-server-cloudimg-i386-vagrant-disk1.box" |
20 | end |
21 | |
22 | - # Define a Ubuntu Server image (cloud) for the 12.04 release (precise) |
23 | - config.vm.define :precise do |precise_config| |
24 | - precise_config.vm.box = "precise-cloud-i386" |
25 | - precise_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-i386-vagrant-disk1.box" |
26 | + # Define a Ubuntu Server image (cloud) for the 13.04 release (raring) |
27 | + config.vm.define :raring do |raring_config| |
28 | + raring_config.vm.box = "raring-cloud-i386" |
29 | + raring_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box" |
30 | end |
31 | |
32 | # For debugging and later future GUI testing |
33 | - # config.vm.boot_mode = :gui |
34 | + if ENV.key? "VAGRANT_GUI" |
35 | + config.vm.boot_mode = :gui |
36 | + end |
37 | + |
38 | + # Setup an apt cache if one is available |
39 | + if ENV.key? "VAGRANT_APT_CACHE" |
40 | + config.vm.provision :shell, :inline => "echo 'Acquire::http { Proxy \"#{ENV['VAGRANT_APT_CACHE']}\"; };' > /etc/apt/apt.conf" |
41 | + end |
42 | |
43 | # Update to have the latest packages, this is needed because the image comes |
44 | # with an old (and no longer working) apt cache and links to many packages no |
45 | # longer work. |
46 | - config.vm.provision :shell, :inline => "apt-get update && apt-get dist-upgrade --yes" |
47 | + config.vm.provision :shell, :inline => "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade --yes" |
48 | # Install dependencies from native packages |
49 | - config.vm.provision :shell, :inline => "apt-get install --yes python3-setuptools python3-lxml" |
50 | + config.vm.provision :shell, :inline => "apt-get install --yes python3-setuptools python3-pkg-resources python3-lxml" |
51 | # Install python3-mock so that we can create mock objects for testing |
52 | config.vm.provision :shell, :inline => "apt-get install --yes python3-mock" |
53 | + # Install python3-sphinx so that we can build documentation |
54 | + config.vm.provision :shell, :inline => "apt-get install --yes python3-sphinx" |
55 | # Install policykit-1 so that we have pkexec |
56 | config.vm.provision :shell, :inline => "apt-get install --yes policykit-1" |
57 | # Install some checkbox script dependencies: |
58 | # Later on those could be installed on demand to test how we behave without |
59 | # them but for now that's good enough. Little by little... |
60 | config.vm.provision :shell, :inline => "apt-get install --yes fwts" |
61 | - # Install python3-dev so that we can build native bits of other dependencies later |
62 | - config.vm.provision :shell, :inline => "apt-get install --yes python3-dev" |
63 | - # Install PIP so that we can install the rest from source |
64 | - config.vm.provision :shell, :inline => "apt-get install --yes python-pip" |
65 | - # Update distribute as the version from ubuntu is too old to install coverage |
66 | - config.vm.provision :shell, :inline => "pip install -U distribute" |
67 | - # Install coverage |
68 | - config.vm.provision :shell, :inline => "pip install -U coverage" |
69 | # Develop plainbox so that we have it in $PATH |
70 | config.vm.provision :shell, :inline => "cd /vagrant/plainbox/ && python3 setup.py develop" |
71 | # Create a cool symlink so that everyone knows where to go to |
72 | - config.vm.provision :shell, :inline => "ln -fs /vagrant /home/vagrant/checkbox" |
73 | + config.vm.provision :shell, :inline => "ln --no-dereference --force --symbolic /vagrant /home/vagrant/checkbox" |
74 | end |
75 | |
76 | === added file 'bin/checkbox-hw-collection' |
77 | --- bin/checkbox-hw-collection 1970-01-01 00:00:00 +0000 |
78 | +++ bin/checkbox-hw-collection 2013-05-09 20:11:45 +0000 |
79 | @@ -0,0 +1,19 @@ |
80 | +#!/bin/bash |
81 | + |
82 | +set -e |
83 | + |
84 | +export CHECKBOX_DATA=${CHECKBOX_DATA:-~/.checkbox-hw-collection} |
85 | +export CHECKBOX_SHARE=${CHECKBOX_SHARE:-.} |
86 | +export CHECKBOX_OPTIONS=${CHECKBOX_OPTIONS:---whitelist-file=$CHECKBOX_SHARE/data/whitelists/hwsubmit.whitelist} |
87 | +export PYTHONPATH=$PYTHONPATH:$CHECKBOX_SHARE |
88 | + |
89 | +if [ $CHECKBOX_DATA != '.' ] |
90 | +then |
91 | + old_data=$HOME/.checkbox-hw-collection |
92 | + if [ -d $old_data ] && [ ! -d $CHECKBOX_DATA ] |
93 | + then |
94 | + mv -f $old_data $CHECKBOX_DATA |
95 | + fi |
96 | +fi |
97 | + |
98 | +python3 $CHECKBOX_SHARE/run "$@" $CHECKBOX_SHARE/configs/$(basename $0).ini |
99 | |
100 | === modified file 'checkbox/contrib/xrandr.py' |
101 | --- checkbox/contrib/xrandr.py 2012-09-03 13:51:52 +0000 |
102 | +++ checkbox/contrib/xrandr.py 2013-05-09 20:11:45 +0000 |
103 | @@ -32,9 +32,21 @@ |
104 | # |
105 | # You should have received a copy of the GNU Lesser General Public |
106 | # License along with this library; if not, write to the Free Software |
107 | -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
108 | +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
109 | +# MA 02110-1301 USA |
110 | |
111 | -from ctypes import * |
112 | +from ctypes import ( |
113 | + POINTER, |
114 | + Structure, |
115 | + byref, |
116 | + c_char_p, |
117 | + c_void_p, |
118 | + c_int, |
119 | + c_long, |
120 | + c_ulong, |
121 | + c_ushort, |
122 | + cdll, |
123 | +) |
124 | import os |
125 | |
126 | RR_ROTATE_0 = 1 |
127 | @@ -90,10 +102,11 @@ |
128 | xlib = cdll.LoadLibrary('libX11.so.6') |
129 | rr = cdll.LoadLibrary('libXrandr.so.2') |
130 | |
131 | + |
132 | # query resources |
133 | class _XRRModeInfo(Structure): |
134 | _fields_ = [ |
135 | - ("id", RRMode), # XID is c_long |
136 | + ("id", RRMode), # XID is c_long |
137 | ("width", c_int), |
138 | ("height", c_int), |
139 | ("dotClock", c_long), |
140 | @@ -109,6 +122,7 @@ |
141 | ("modeFlags", c_long), |
142 | ] |
143 | |
144 | + |
145 | class _XRRScreenSize(Structure): |
146 | _fields_ = [ |
147 | ("width", c_int), |
148 | @@ -117,6 +131,7 @@ |
149 | ("mheight", c_int) |
150 | ] |
151 | |
152 | + |
153 | class _XRRCrtcInfo(Structure): |
154 | _fields_ = [ |
155 | ("timestamp", Time), |
156 | @@ -133,6 +148,7 @@ |
157 | ("possible", POINTER(RROutput)), |
158 | ] |
159 | |
160 | + |
161 | class _XRRScreenResources(Structure): |
162 | _fields_ = [ |
163 | ("timestamp", Time), |
164 | @@ -145,16 +161,19 @@ |
165 | ("modes", POINTER(_XRRModeInfo)), |
166 | ] |
167 | |
168 | + |
169 | class RRError(Exception): |
170 | """Base exception class of the module""" |
171 | pass |
172 | |
173 | + |
174 | class UnsupportedRRError(RRError): |
175 | """Raised if the required XRandR extension version is not available""" |
176 | def __init__(self, required, current): |
177 | self.required = required |
178 | self.current = current |
179 | |
180 | + |
181 | # XRRGetOutputInfo |
182 | class _XRROutputInfo(Structure): |
183 | _fields_ = [ |
184 | @@ -175,6 +194,7 @@ |
185 | ("modes", POINTER(RRMode)) |
186 | ] |
187 | |
188 | + |
189 | class _XRRCrtcGamma(Structure): |
190 | _fields_ = [ |
191 | ('size', c_int), |
192 | @@ -183,13 +203,15 @@ |
193 | ('blue', POINTER(c_ushort)), |
194 | ] |
195 | |
196 | -def _array_conv(array, type, conv = lambda x:x): |
197 | + |
198 | +def _array_conv(array, type, conv=lambda x: x): |
199 | length = len(array) |
200 | - res = (type*length)() |
201 | + res = (type * length)() |
202 | for i in range(length): |
203 | res[i] = conv(array[i]) |
204 | return res |
205 | |
206 | + |
207 | class Output: |
208 | """The output is a reference to a supported output jacket of the graphics |
209 | card. Outputs are attached to a hardware pipe to be used. Furthermore |
210 | @@ -220,16 +242,22 @@ |
211 | """Frees the internal reference to the output info if the output gets |
212 | removed""" |
213 | rr.XRRFreeOutputInfo(self._info) |
214 | + |
215 | def get_physical_width(self): |
216 | """Returns the display width reported by the connected output device""" |
217 | return self._info.contents.mm_width |
218 | + |
219 | def get_physical_height(self): |
220 | - """Returns the display height reported by the connected output device""" |
221 | + """ |
222 | + Returns the display height reported by the connected output device |
223 | + """ |
224 | return self._info.contents.mm_height |
225 | + |
226 | def get_crtc(self): |
227 | """Returns the xid of the hardware pipe to which the output is |
228 | attached. If the output is disabled it will return 0""" |
229 | return self._info.contents.crtc |
230 | + |
231 | def get_crtcs(self): |
232 | """Returns the xids of the hardware pipes to which the output could |
233 | be attached""" |
234 | @@ -290,7 +318,8 @@ |
235 | |
236 | def disable(self): |
237 | """Disables the output""" |
238 | - if not self.is_active(): return |
239 | + if not self.is_active(): |
240 | + return |
241 | self._mode = None |
242 | self._crtc._outputs.remove(self) |
243 | self._crtc = None |
244 | @@ -342,9 +371,11 @@ |
245 | else: |
246 | return self._changes != CHANGES_NONE |
247 | |
248 | + |
249 | class Crtc: |
250 | """The crtc is a reference to a hardware pipe that is provided by the |
251 | graphics device. Outputs can be attached to crtcs""" |
252 | + |
253 | def __init__(self, info, xid, screen): |
254 | """Initializes the hardware pipe object""" |
255 | self._info = info |
256 | @@ -437,24 +468,34 @@ |
257 | return False |
258 | if len(self._outputs): |
259 | for other in self._outputs: |
260 | - if other == output: continue |
261 | - if other._x != output._x: return False |
262 | - if other._y != output._y: return False |
263 | - if other._mode != output._mode: return False |
264 | - if other._rotation != output._rotation: return False |
265 | + if other == output: |
266 | + continue |
267 | + if other._x != output._x: |
268 | + return False |
269 | + if other._y != output._y: |
270 | + return False |
271 | + if other._mode != output._mode: |
272 | + return False |
273 | + if other._rotation != output._rotation: |
274 | + return False |
275 | #FIXME: pick_crtc is still missing |
276 | elif self._info.contents.noutput > 0: |
277 | - if self._info.contents.x != output._x: return False |
278 | - if self._info.contents.y != output._y: return False |
279 | - if self._info.contents.mode_info != output._mode: return False |
280 | - if self._info.rotation != output._rotation: return False |
281 | + if self._info.contents.x != output._x: |
282 | + return False |
283 | + if self._info.contents.y != output._y: |
284 | + return False |
285 | + if self._info.contents.mode_info != output._mode: |
286 | + return False |
287 | + if self._info.rotation != output._rotation: |
288 | + return False |
289 | return True |
290 | |
291 | def supports_rotation(self, rotation): |
292 | """Check if the given rotation is supported by the crtc""" |
293 | rotations = self._info.contents.rotations |
294 | - dir = rotation & (RR_ROTATE_0|RR_ROTATE_90|RR_ROTATE_180|RR_ROTATE_270) |
295 | - reflect = rotation & (RR_REFLECT_X|RR_REFLECT_Y) |
296 | + dir = rotation & (RR_ROTATE_0 | RR_ROTATE_90 | RR_ROTATE_180 | |
297 | + RR_ROTATE_270) |
298 | + reflect = rotation & (RR_REFLECT_X | RR_REFLECT_Y) |
299 | if (((rotations & dir) != 0) and ((rotations & reflect) == reflect)): |
300 | return True |
301 | return False |
302 | @@ -467,10 +508,13 @@ |
303 | for i in range(self._info.contents.noutput): |
304 | id = self._info.contents.outputs[i] |
305 | output = self._screen.get_output_by_id(id) |
306 | - if not output in self._outputs: return True |
307 | - if output.has_changed(): return True |
308 | + if not output in self._outputs: |
309 | + return True |
310 | + if output.has_changed(): |
311 | + return True |
312 | return False |
313 | |
314 | + |
315 | class Screen: |
316 | def __init__(self, dpy, screen=-1): |
317 | """Initializes the screen""" |
318 | @@ -500,7 +544,7 @@ |
319 | self._load_config() |
320 | (self._width, self._height, |
321 | self._width_mm, self._height_mm) = self.get_size() |
322 | - if XRANDR_VERSION >= (1,2): |
323 | + if XRANDR_VERSION >= (1, 2): |
324 | self._load_screen_size_range() |
325 | self._load_crtcs() |
326 | self._load_outputs() |
327 | @@ -596,7 +640,7 @@ |
328 | |
329 | def get_current_rate(self): |
330 | """Returns the currently used refresh rate""" |
331 | - _check_required_version((1,0)) |
332 | + _check_required_version((1, 0)) |
333 | xccr = rr.XRRConfigCurrentRate |
334 | xccr.restype = c_int |
335 | return xccr(self._config) |
336 | @@ -605,7 +649,7 @@ |
337 | """Returns the refresh rates that are supported by the screen for |
338 | the given resolution. See get_available_sizes for the resolution to |
339 | which size_index points""" |
340 | - _check_required_version((1,0)) |
341 | + _check_required_version((1, 0)) |
342 | rates = [] |
343 | nrates = c_int() |
344 | rr.XRRConfigRates.restype = POINTER(c_ushort) |
345 | @@ -617,14 +661,14 @@ |
346 | def get_current_rotation(self): |
347 | """Returns the currently used rotation. Can be RR_ROTATE_0, |
348 | RR_ROTATE_90, RR_ROTATE_180 or RR_ROTATE_270""" |
349 | - _check_required_version((1,0)) |
350 | + _check_required_version((1, 0)) |
351 | current = c_ushort() |
352 | - rotations = rr.XRRConfigRotations(self._config, byref(current)) |
353 | + rr.XRRConfigRotations(self._config, byref(current)) |
354 | return current.value |
355 | |
356 | def get_available_rotations(self): |
357 | """Returns a binary flag that holds the available resolutions""" |
358 | - _check_required_version((1,0)) |
359 | + _check_required_version((1, 0)) |
360 | current = c_ushort() |
361 | rotations = rr.XRRConfigRotations(self._config, byref(current)) |
362 | return rotations |
363 | @@ -632,7 +676,7 @@ |
364 | def get_current_size_index(self): |
365 | """Returns the position of the currently used resolution size in the |
366 | list of available resolutions. See get_available_sizes""" |
367 | - _check_required_version((1,0)) |
368 | + _check_required_version((1, 0)) |
369 | rotation = c_ushort() |
370 | size = rr.XRRConfigCurrentConfiguration(self._config, |
371 | byref(rotation)) |
372 | @@ -641,7 +685,7 @@ |
373 | def get_available_sizes(self): |
374 | """Returns the available resolution sizes of the screen. The size |
375 | index points to the corresponding resolution of this list""" |
376 | - _check_required_version((1,0)) |
377 | + _check_required_version((1, 0)) |
378 | sizes = [] |
379 | nsizes = c_int() |
380 | xcs = rr.XRRConfigSizes |
381 | @@ -655,7 +699,7 @@ |
382 | """Configures the screen with the given resolution at the given size |
383 | index, rotation and refresh rate. To get in effect call |
384 | Screen.apply_config()""" |
385 | - _check_required_version((1,0)) |
386 | + _check_required_version((1, 0)) |
387 | self.set_size_index(size_index) |
388 | self.set_refresh_rate(rate) |
389 | self.set_rotation(rotation) |
390 | @@ -710,7 +754,7 @@ |
391 | |
392 | def print_info(self, verbose=False): |
393 | """Prints some information about the detected screen and its outputs""" |
394 | - _check_required_version((1,0)) |
395 | + _check_required_version((1, 0)) |
396 | print("Screen %s: minimum %s x %s, current %s x %s, maximum %s x %s" %\ |
397 | (self._screen, |
398 | self._width_min, self._height_min, |
399 | @@ -728,20 +772,25 @@ |
400 | i = 0 |
401 | print("Sizes @ Refresh Rates:") |
402 | for s in self.get_available_sizes(): |
403 | - print(" [%s] %s x %s @ %s" % (i, s.width, s.height, |
404 | - self.get_available_rates_for_size_index(i))) |
405 | + print(" [%s] %s x %s @ %s" % ( |
406 | + i, s.width, s.height, |
407 | + self.get_available_rates_for_size_index(i))) |
408 | i += 1 |
409 | print("Rotations:") |
410 | rots = self.get_available_rotations() |
411 | - if rots & RR_ROTATE_0: print("normal") |
412 | - if rots & RR_ROTATE_90: print("right") |
413 | - if rots & RR_ROTATE_180: print("inverted") |
414 | - if rots & RR_ROTATE_270: print("left") |
415 | + if rots & RR_ROTATE_0: |
416 | + print("normal") |
417 | + if rots & RR_ROTATE_90: |
418 | + print("right") |
419 | + if rots & RR_ROTATE_180: |
420 | + print("inverted") |
421 | + if rots & RR_ROTATE_270: |
422 | + print("left") |
423 | print("") |
424 | print("Outputs:") |
425 | for o in list(self.outputs.keys()): |
426 | output = self.outputs[o] |
427 | - print(" %s" % o) |
428 | + print(" %s" % o) |
429 | if output.is_connected(): |
430 | print("(%smm x %smm)" % (output.get_physical_width(), |
431 | output.get_physical_height())) |
432 | @@ -761,40 +810,45 @@ |
433 | print("") |
434 | print(" Rotations:") |
435 | rots = output.get_available_rotations() |
436 | - if rots & RR_ROTATE_0: print("normal") |
437 | - if rots & RR_ROTATE_90: print("right") |
438 | - if rots & RR_ROTATE_180: print("inverted") |
439 | - if rots & RR_ROTATE_270: print("left") |
440 | + if rots & RR_ROTATE_0: |
441 | + print("normal") |
442 | + if rots & RR_ROTATE_90: |
443 | + print("right") |
444 | + if rots & RR_ROTATE_180: |
445 | + print("inverted") |
446 | + if rots & RR_ROTATE_270: |
447 | + print("left") |
448 | print("") |
449 | else: |
450 | print("(not connected)") |
451 | if verbose: |
452 | print(" Core properties:") |
453 | - for (f,t) in output._info.contents._fields_: |
454 | - print(" %s: %s" % (f, |
455 | - getattr(output._info.contents, f))) |
456 | + for (f, t) in output._info.contents._fields_: |
457 | + print(" %s: %s" % ( |
458 | + f, getattr(output._info.contents, f))) |
459 | |
460 | def get_outputs(self): |
461 | """Returns the outputs of the screen""" |
462 | - _check_required_version((1,2)) |
463 | + _check_required_version((1, 2)) |
464 | return list(self.outputs.values()) |
465 | |
466 | def get_output_names(self): |
467 | - _check_required_version((1,2)) |
468 | + _check_required_version((1, 2)) |
469 | return list(self.outputs.keys()) |
470 | |
471 | def set_size(self, width, height, width_mm, height_mm): |
472 | """Apply the given pixel and physical size to the screen""" |
473 | - _check_required_version((1,2)) |
474 | + _check_required_version((1, 2)) |
475 | # Check if we really need to apply the changes |
476 | - if (width, height, width_mm, height_mm) == self.get_size(): return |
477 | + if (width, height, width_mm, height_mm) == self.get_size(): |
478 | + return |
479 | rr.XRRSetScreenSize(self._display, self._root, |
480 | c_int(width), c_int(height), |
481 | c_int(width_mm), c_int(height_mm)) |
482 | |
483 | def apply_output_config(self): |
484 | """Used for instantly applying RandR 1.2 changes""" |
485 | - _check_required_version((1,2)) |
486 | + _check_required_version((1, 2)) |
487 | self._arrange_outputs() |
488 | self._calculate_size() |
489 | self.set_size(self._width, self._height, |
490 | @@ -802,7 +856,8 @@ |
491 | |
492 | # Assign all active outputs to crtcs |
493 | for output in list(self.outputs.values()): |
494 | - if not output._mode or output._crtc: continue |
495 | + if not output._mode or output._crtc: |
496 | + continue |
497 | for crtc in output.get_crtcs(): |
498 | if crtc and crtc.supports_output(output): |
499 | crtc.add_output(output) |
500 | @@ -819,7 +874,7 @@ |
501 | |
502 | def apply_config(self): |
503 | """Used for instantly applying RandR 1.0 changes""" |
504 | - _check_required_version((1,0)) |
505 | + _check_required_version((1, 0)) |
506 | status = rr.XRRSetScreenConfigAndRate(self._display, |
507 | self._config, |
508 | self._root, |
509 | @@ -834,7 +889,8 @@ |
510 | for output in self.get_outputs(): |
511 | # Skip not changed and not used outputs |
512 | if not output.has_changed(CHANGES_RELATION) or \ |
513 | - output._mode == None: continue |
514 | + output._mode == None: |
515 | + continue |
516 | relative = output._relative_to |
517 | mode = self.get_mode_by_xid(output._mode) |
518 | mode_relative = self.get_mode_by_xid(relative._mode) |
519 | @@ -867,11 +923,15 @@ |
520 | min_x = 32768 |
521 | min_y = 32768 |
522 | for output in self.get_outputs(): |
523 | - if output._mode == None: continue |
524 | - if output._x < min_x: min_x = output._x |
525 | - if output._y < min_y: min_y = output._y |
526 | + if output._mode == None: |
527 | + continue |
528 | + if output._x < min_x: |
529 | + min_x = output._x |
530 | + if output._y < min_y: |
531 | + min_y = output._y |
532 | for output in self.get_outputs(): |
533 | - if output._mode == None: continue |
534 | + if output._mode == None: |
535 | + continue |
536 | output._x -= min_x |
537 | output._y -= min_y |
538 | output._changes = output._changes | CHANGES_POSITION |
539 | @@ -882,14 +942,17 @@ |
540 | width = self._width |
541 | height = self._height |
542 | for output in self.get_outputs(): |
543 | - if not output._mode: continue |
544 | + if not output._mode: |
545 | + continue |
546 | mode = self.get_mode_by_xid(output._mode) |
547 | x = output._x |
548 | y = output._y |
549 | w = get_mode_width(mode, output._rotation) |
550 | h = get_mode_height(mode, output._rotation) |
551 | - if x + w > width: width = x + w |
552 | - if y + h > height: height = y + h |
553 | + if x + w > width: |
554 | + width = x + w |
555 | + if y + h > height: |
556 | + height = y + h |
557 | if width > self._width_max or height > self._height_max: |
558 | raise RRError("The required size is not supported", |
559 | (width, height), (self._width_max, self._width_min)) |
560 | @@ -904,6 +967,7 @@ |
561 | self._width = width |
562 | #FIXME: Physical size is missing |
563 | |
564 | + |
565 | def get_current_display(): |
566 | """Returns the currently used display""" |
567 | display_url = os.getenv("DISPLAY") |
568 | @@ -918,16 +982,19 @@ |
569 | dpy = open_display(display_url.encode('utf-8')) |
570 | return dpy |
571 | |
572 | + |
573 | def get_current_screen(): |
574 | """Returns the currently used screen""" |
575 | screen = Screen(get_current_display()) |
576 | return screen |
577 | |
578 | + |
579 | def get_screen_of_display(display, count): |
580 | """Returns the screen of the given display""" |
581 | dpy = xlib.XOpenDisplay(display) |
582 | return Screen(dpy, count) |
583 | |
584 | + |
585 | def get_version(): |
586 | """Returns a tuple containing the major and minor version of the xrandr |
587 | extension or None if the extension is not available""" |
588 | @@ -939,12 +1006,14 @@ |
589 | return (major.value, minor.value) |
590 | return None |
591 | |
592 | + |
593 | def has_extension(): |
594 | """Returns True if the xrandr extension is available""" |
595 | if XRANDR_VERSION: |
596 | return True |
597 | return False |
598 | |
599 | + |
600 | def _to_gamma(gamma): |
601 | g = rr.XRRAllocGamma(len(gamma[0])) |
602 | for i in range(gamma[0]): |
603 | @@ -953,6 +1022,7 @@ |
604 | g.blue[i] = gamma[2][i] |
605 | return g |
606 | |
607 | + |
608 | def _from_gamma(g): |
609 | gamma = ([], [], []) |
610 | for i in range(g.size): |
611 | @@ -961,12 +1031,14 @@ |
612 | gamma[2].append(g.blue[i]) |
613 | rr.XRRFreeGamma(g) |
614 | |
615 | + |
616 | def _check_required_version(version): |
617 | """Raises an exception if the given or a later version of xrandr is not |
618 | available""" |
619 | if XRANDR_VERSION == None or XRANDR_VERSION < version: |
620 | raise UnsupportedRRError(version, XRANDR_VERSION) |
621 | |
622 | + |
623 | def get_mode_height(mode, rotation): |
624 | """Return the height of the given mode taking the rotation into account""" |
625 | if rotation & (RR_ROTATE_0 | RR_ROTATE_180): |
626 | @@ -976,6 +1048,7 @@ |
627 | else: |
628 | return 0 |
629 | |
630 | + |
631 | def get_mode_width(mode, rotation): |
632 | """Return the width of the given mode taking the rotation into account""" |
633 | if rotation & (RR_ROTATE_0 | RR_ROTATE_180): |
634 | |
635 | === modified file 'checkbox/lib/fifo.py' |
636 | --- checkbox/lib/fifo.py 2012-06-09 15:50:39 +0000 |
637 | +++ checkbox/lib/fifo.py 2013-05-09 20:11:45 +0000 |
638 | @@ -18,6 +18,7 @@ |
639 | # |
640 | import os |
641 | import struct |
642 | +import logging |
643 | |
644 | from checkbox.contrib.bpickle import dumps, loads |
645 | from checkbox.lib.selector import Selector, SelectorIO |
646 | @@ -36,7 +37,11 @@ |
647 | self.close() |
648 | |
649 | def close(self): |
650 | - os.close(self.fileno) |
651 | + try: |
652 | + os.close(self.fileno) |
653 | + except OSError as e: |
654 | + logging.warning("Problem closing the fifo") |
655 | + logging.warning(e) |
656 | |
657 | def wait_for(self, operation): |
658 | if self._timeout is not None: |
659 | |
660 | === modified file 'checkbox/lib/template.py' |
661 | --- checkbox/lib/template.py 2012-10-16 21:42:45 +0000 |
662 | +++ checkbox/lib/template.py 2013-05-09 20:11:45 +0000 |
663 | @@ -65,8 +65,8 @@ |
664 | def dump_filename(self, elements, filename): |
665 | logging.info("Dumping elements to filename: %s", filename) |
666 | |
667 | - file = open(filename, "w") |
668 | - return self.dump_file(elements, file, filename) |
669 | + with open(filename, "w") as stream: |
670 | + return self.dump_file(elements, stream, filename) |
671 | |
672 | def load_file(self, file, filename="<stream>"): |
673 | elements = [] |
674 | @@ -139,5 +139,5 @@ |
675 | def load_filename(self, filename): |
676 | logging.info("Loading elements from filename: %s", filename) |
677 | |
678 | - file = open(filename, "r", encoding="utf-8") |
679 | - return self.load_file(file, filename) |
680 | + with open(filename, "r", encoding="utf-8") as stream: |
681 | + return self.load_file(stream, filename) |
682 | |
683 | === modified file 'checkbox/message.py' |
684 | --- checkbox/message.py 2012-06-01 21:34:18 +0000 |
685 | +++ checkbox/message.py 2013-05-09 20:11:45 +0000 |
686 | @@ -20,7 +20,6 @@ |
687 | import logging |
688 | import itertools |
689 | import posixpath |
690 | -import sys |
691 | |
692 | from checkbox.contrib import bpickle |
693 | from checkbox.lib.safe import safe_close |
694 | @@ -41,11 +40,12 @@ |
695 | class MessageStore: |
696 | """A message store which stores its messages in a file system hierarchy.""" |
697 | |
698 | - #This caches everything but a message's data, making it manageable to keep in memory. |
699 | + # This caches everything but a message's data, making it manageable to keep |
700 | + # in memory. |
701 | _message_cache = {} |
702 | |
703 | - #Setting this to False speeds things up considerably, at the expense |
704 | - #of a higher risk of data loss during a crash |
705 | + # Setting this to False speeds things up considerably, at the expense of a |
706 | + # higher risk of data loss during a crash |
707 | safe_file_closing = True |
708 | |
709 | def __init__(self, persist, directory, directory_size=1000): |
710 | @@ -128,11 +128,12 @@ |
711 | |
712 | def delete_old_messages(self): |
713 | """Delete messages which are unlikely to be needed in the future.""" |
714 | - filenames = self._get_sorted_filenames() |
715 | - for fn in itertools.islice(self._walk_messages(exclude=HELD+BROKEN), |
716 | - self.get_pending_offset()): |
717 | - os.unlink(fn) |
718 | - containing_dir = posixpath.split(fn)[0] |
719 | + filenames = itertools.islice( |
720 | + self._walk_messages(exclude=HELD + BROKEN), |
721 | + self.get_pending_offset()) |
722 | + for filename in filenames: |
723 | + os.unlink(filename) |
724 | + containing_dir = os.path.dirname(filename) |
725 | if not os.listdir(containing_dir): |
726 | os.rmdir(containing_dir) |
727 | |
728 | @@ -194,8 +195,9 @@ |
729 | def _walk_pending_messages(self): |
730 | """Walk the files which are definitely pending.""" |
731 | pending_offset = self.get_pending_offset() |
732 | - for i, filename in enumerate(self._walk_messages(exclude=HELD+BROKEN)): |
733 | - if i >= pending_offset: |
734 | + filenames = self._walk_messages(exclude=HELD + BROKEN) |
735 | + for index, filename in enumerate(filenames): |
736 | + if index >= pending_offset: |
737 | yield filename |
738 | |
739 | def _walk_messages(self, exclude=None): |
740 | @@ -235,12 +237,12 @@ |
741 | dirname, basename = posixpath.split(path) |
742 | new_path = posixpath.join(dirname, basename.split("_")[0]) |
743 | if flags: |
744 | - new_path += "_"+"".join(sorted(set(flags))) |
745 | + new_path += "_" + "".join(sorted(set(flags))) |
746 | os.rename(path, new_path) |
747 | return new_path |
748 | |
749 | def _add_flags(self, path, flags): |
750 | - self._set_flags(path, self._get_flags(path)+flags) |
751 | + self._set_flags(path, self._get_flags(path) + flags) |
752 | |
753 | def _load_message(self, data): |
754 | return bpickle.loads(data) |
755 | @@ -251,7 +253,7 @@ |
756 | def _read_message(self, filename, cache=False): |
757 | #cache basically indicates whether the caller cares about having "data" |
758 | if cache and filename in self._message_cache: |
759 | - return Message(self._message_cache[filename],filename) |
760 | + return Message(self._message_cache[filename], filename) |
761 | |
762 | data = self._get_content(filename) |
763 | message = self._load_message(data) |
764 | @@ -271,7 +273,7 @@ |
765 | |
766 | #Strip the big data element and shove it in the cache |
767 | |
768 | - temp_message=dict(message) |
769 | + temp_message = dict(message) |
770 | if "data" in temp_message: |
771 | temp_message["data"] = None |
772 | |
773 | |
774 | === modified file 'checkbox/parsers/submission.py' |
775 | --- checkbox/parsers/submission.py 2012-10-12 21:30:46 +0000 |
776 | +++ checkbox/parsers/submission.py 2013-05-09 20:11:45 +0000 |
777 | @@ -99,7 +99,7 @@ |
778 | |
779 | context_parsers = { |
780 | "/proc/cpuinfo": self.parseCpuinfo, |
781 | - "/proc/meminfo": self.parseMeminfo, |
782 | + "meminfo": self.parseMeminfo, |
783 | "dmidecode": DmidecodeParser, |
784 | "udevadm": self.parseUdevadm, |
785 | "efi": EfiParser, |
786 | |
787 | === modified file 'checkbox/parsers/tests/fixtures/submission_info_memory.xml' |
788 | --- checkbox/parsers/tests/fixtures/submission_info_memory.xml 2012-10-12 21:19:04 +0000 |
789 | +++ checkbox/parsers/tests/fixtures/submission_info_memory.xml 2013-05-09 20:11:45 +0000 |
790 | @@ -1,7 +1,7 @@ |
791 | <?xml version="1.0" ?> |
792 | <system version="1.0"> |
793 | <context> |
794 | -<info command="cat /proc/meminfo">MemTotal: 1976036 kB |
795 | +<info command="meminfo_attachment">MemTotal: 1976036 kB |
796 | MemFree: 590948 kB |
797 | Buffers: 100976 kB |
798 | Cached: 465660 kB |
799 | |
800 | === modified file 'checkbox/parsers/tests/test_cputable.py' |
801 | --- checkbox/parsers/tests/test_cputable.py 2012-10-09 13:32:06 +0000 |
802 | +++ checkbox/parsers/tests/test_cputable.py 2013-05-09 20:11:45 +0000 |
803 | @@ -60,7 +60,7 @@ |
804 | |
805 | def test_empty(self): |
806 | result = self.getResult("") |
807 | - self.assertEquals(result.cpus, []) |
808 | + self.assertEqual(result.cpus, []) |
809 | |
810 | def test_i386(self): |
811 | result = self.getResult(""" |
812 | @@ -68,7 +68,7 @@ |
813 | i386 i686 (i[3456]86|pentium) 32 little |
814 | """) |
815 | debian_cpu = result.getByDebianName("i386") |
816 | - self.assertNotEquals(debian_cpu, None) |
817 | + self.assertNotEqual(debian_cpu, None) |
818 | gnu_cpu = result.getByGnuName("i686") |
819 | - self.assertNotEquals(gnu_cpu, None) |
820 | - self.assertEquals(debian_cpu, gnu_cpu) |
821 | + self.assertNotEqual(gnu_cpu, None) |
822 | + self.assertEqual(debian_cpu, gnu_cpu) |
823 | |
824 | === modified file 'checkbox/parsers/tests/test_description.py' |
825 | --- checkbox/parsers/tests/test_description.py 2012-10-09 13:32:06 +0000 |
826 | +++ checkbox/parsers/tests/test_description.py 2013-05-09 20:11:45 +0000 |
827 | @@ -46,22 +46,22 @@ |
828 | |
829 | def test_one_line(self): |
830 | line = PURPOSE_RE.sub(r"", "1. foo\n") |
831 | - self.assertEquals(line, "foo\n") |
832 | + self.assertEqual(line, "foo\n") |
833 | |
834 | def test_two_lines(self): |
835 | line = PURPOSE_RE.sub(r"", "1. foo\n2. bar\n") |
836 | - self.assertEquals(line, "foo\nbar\n") |
837 | + self.assertEqual(line, "foo\nbar\n") |
838 | |
839 | |
840 | class TestStepsRe(TestCase): |
841 | |
842 | def test_one_line(self): |
843 | line = STEPS_RE.sub(r"\1.\2", "1: foo\n") |
844 | - self.assertEquals(line, "1. foo\n") |
845 | + self.assertEqual(line, "1. foo\n") |
846 | |
847 | def test_two_lines(self): |
848 | line = STEPS_RE.sub(r"\1.\2", "1: foo\n2: bar\n") |
849 | - self.assertEquals(line, "1. foo\n2. bar\n") |
850 | + self.assertEqual(line, "1. foo\n2. bar\n") |
851 | |
852 | |
853 | class TestDescriptionParser(TestCase): |
854 | @@ -78,14 +78,14 @@ |
855 | |
856 | def assertResult( |
857 | self, result, purpose=None, steps=None, verification=None, info=None): |
858 | - self.assertEquals(result.purpose, purpose) |
859 | - self.assertEquals(result.steps, steps) |
860 | - self.assertEquals(result.verification, verification) |
861 | - self.assertEquals(result.info, info) |
862 | + self.assertEqual(result.purpose, purpose) |
863 | + self.assertEqual(result.steps, steps) |
864 | + self.assertEqual(result.verification, verification) |
865 | + self.assertEqual(result.info, info) |
866 | |
867 | def test_empty(self): |
868 | result = self.getResult("") |
869 | - self.assertEquals(result.purpose, None) |
870 | + self.assertEqual(result.purpose, None) |
871 | |
872 | def test_purpose(self): |
873 | result = self.getResult(""" |
874 | @@ -151,10 +151,10 @@ |
875 | VERIFICACIÓN: |
876 | ¿Son las pantallas y los modos de vídeo correctos? |
877 | """) |
878 | - self.assertNotEquals(result.purpose, None) |
879 | - self.assertNotEquals(result.steps, None) |
880 | - self.assertNotEquals(result.verification, None) |
881 | - self.assertEquals(result.info, "$output\n") |
882 | + self.assertNotEqual(result.purpose, None) |
883 | + self.assertNotEqual(result.steps, None) |
884 | + self.assertNotEqual(result.verification, None) |
885 | + self.assertEqual(result.info, "$output\n") |
886 | |
887 | def test_ru(self): |
888 | result = self.getResult(""" |
889 | @@ -166,10 +166,10 @@ |
890 | ПРОВЕРКА: |
891 | Был ли слышен звук в наушниках и был ли он воспроизведён в ваших наушниках без искажений, щелчков или других искажённых звуков?" |
892 | """) |
893 | - self.assertNotEquals(result.purpose, None) |
894 | - self.assertNotEquals(result.steps, None) |
895 | - self.assertNotEquals(result.verification, None) |
896 | - self.assertEquals(result.info, None) |
897 | + self.assertNotEqual(result.purpose, None) |
898 | + self.assertNotEqual(result.steps, None) |
899 | + self.assertNotEqual(result.verification, None) |
900 | + self.assertEqual(result.info, None) |
901 | |
902 | def test_substitute_purpose(self): |
903 | result = self.getResult(""" |
904 | |
905 | === modified file 'checkbox/parsers/tests/test_dmi.py' |
906 | --- checkbox/parsers/tests/test_dmi.py 2012-10-09 13:32:06 +0000 |
907 | +++ checkbox/parsers/tests/test_dmi.py 2013-05-09 20:11:45 +0000 |
908 | @@ -45,36 +45,36 @@ |
909 | |
910 | def test_devices(self): |
911 | result = self.getResult() |
912 | - self.assertEquals(len(result.devices), 4) |
913 | + self.assertEqual(len(result.devices), 4) |
914 | |
915 | def test_bios(self): |
916 | result = self.getResult() |
917 | device = result.getDevice("BIOS") |
918 | self.assertTrue(device) |
919 | - self.assertEquals(device.product, "BIOS PRODUCT") |
920 | - self.assertEquals(device.vendor, "BIOS VENDOR") |
921 | - self.assertEquals(device.serial, None) |
922 | + self.assertEqual(device.product, "BIOS PRODUCT") |
923 | + self.assertEqual(device.vendor, "BIOS VENDOR") |
924 | + self.assertEqual(device.serial, None) |
925 | |
926 | def test_board(self): |
927 | result = self.getResult() |
928 | device = result.getDevice("BOARD") |
929 | self.assertTrue(device) |
930 | - self.assertEquals(device.product, None) |
931 | - self.assertEquals(device.vendor, None) |
932 | - self.assertEquals(device.serial, None) |
933 | + self.assertEqual(device.product, None) |
934 | + self.assertEqual(device.vendor, None) |
935 | + self.assertEqual(device.serial, None) |
936 | |
937 | def test_chassis(self): |
938 | result = self.getResult() |
939 | device = result.getDevice("CHASSIS") |
940 | self.assertTrue(device) |
941 | - self.assertEquals(device.product, "Notebook") |
942 | - self.assertEquals(device.vendor, "CHASSIS VENDOR") |
943 | - self.assertEquals(device.serial, None) |
944 | + self.assertEqual(device.product, "Notebook") |
945 | + self.assertEqual(device.vendor, "CHASSIS VENDOR") |
946 | + self.assertEqual(device.serial, None) |
947 | |
948 | def test_system(self): |
949 | result = self.getResult() |
950 | device = result.getDevice("SYSTEM") |
951 | self.assertTrue(device) |
952 | - self.assertEquals(device.product, "SYSTEM PRODUCT") |
953 | - self.assertEquals(device.vendor, "SYSTEM VENDOR") |
954 | - self.assertEquals(device.serial, "SYSTEM SERIAL") |
955 | + self.assertEqual(device.product, "SYSTEM PRODUCT") |
956 | + self.assertEqual(device.vendor, "SYSTEM VENDOR") |
957 | + self.assertEqual(device.serial, "SYSTEM SERIAL") |
958 | |
959 | === modified file 'checkbox/parsers/tests/test_efi.py' |
960 | --- checkbox/parsers/tests/test_efi.py 2012-10-09 13:32:06 +0000 |
961 | +++ checkbox/parsers/tests/test_efi.py 2013-05-09 20:11:45 +0000 |
962 | @@ -46,18 +46,18 @@ |
963 | |
964 | def test_empty(self): |
965 | result = self.getResult("") |
966 | - self.assertEquals(result.device, None) |
967 | + self.assertEqual(result.device, None) |
968 | |
969 | def test_product(self): |
970 | result = self.getResult(""" |
971 | Foo Bar |
972 | """) |
973 | - self.assertEquals(result.device.vendor, None) |
974 | - self.assertEquals(result.device.product, "Foo Bar") |
975 | + self.assertEqual(result.device.vendor, None) |
976 | + self.assertEqual(result.device.product, "Foo Bar") |
977 | |
978 | def test_vendor_product(self): |
979 | result = self.getResult(""" |
980 | Foo by Bar |
981 | """) |
982 | - self.assertEquals(result.device.vendor, "Foo") |
983 | - self.assertEquals(result.device.product, "Bar") |
984 | + self.assertEqual(result.device.vendor, "Foo") |
985 | + self.assertEqual(result.device.product, "Bar") |
986 | |
987 | === modified file 'checkbox/parsers/tests/test_submission.py' |
988 | --- checkbox/parsers/tests/test_submission.py 2013-03-07 15:52:02 +0000 |
989 | +++ checkbox/parsers/tests/test_submission.py 2013-05-09 20:11:45 +0000 |
990 | @@ -18,7 +18,6 @@ |
991 | # along with Checkbox. If not, see <http://www.gnu.org/licenses/>. |
992 | # |
993 | import os |
994 | -import gzip |
995 | |
996 | from unittest import TestCase |
997 | |
998 | @@ -64,28 +63,22 @@ |
999 | |
1000 | class TestSubmissionParser(TestCase): |
1001 | |
1002 | - def getFixture(self, name): |
1003 | - return os.path.join(os.path.dirname(__file__), "fixtures", name) |
1004 | - |
1005 | - def getParser(self, name): |
1006 | - fixture = self.getFixture(name) |
1007 | - stream = open(fixture) |
1008 | - return SubmissionParser(stream) |
1009 | - |
1010 | def getResult(self, name, project="test"): |
1011 | result = {} |
1012 | - parser = self.getParser(name) |
1013 | - parser.run(SubmissionRun, result=result, project=project) |
1014 | + fixture = os.path.join(os.path.dirname(__file__), "fixtures", name) |
1015 | + with open(fixture) as stream: |
1016 | + parser = SubmissionParser(stream) |
1017 | + parser.run(SubmissionRun, result=result, project=project) |
1018 | return result |
1019 | |
1020 | def test_distribution(self): |
1021 | """Distribution information is in the lsbrelease element.""" |
1022 | result = self.getResult("submission_lsbrelease.xml") |
1023 | self.assertTrue("distribution" in result) |
1024 | - self.assertEquals(result["distribution"]["release"], "12.10") |
1025 | - self.assertEquals(result["distribution"]["codename"], "quantal") |
1026 | - self.assertEquals(result["distribution"]["distributor_id"], "Ubuntu") |
1027 | - self.assertEquals( |
1028 | + self.assertEqual(result["distribution"]["release"], "12.10") |
1029 | + self.assertEqual(result["distribution"]["codename"], "quantal") |
1030 | + self.assertEqual(result["distribution"]["distributor_id"], "Ubuntu") |
1031 | + self.assertEqual( |
1032 | result["distribution"]["description"], |
1033 | "Ubuntu quantal (development branch)") |
1034 | |
1035 | @@ -93,45 +86,45 @@ |
1036 | """Memory state is in an info element.""" |
1037 | result = self.getResult("submission_info_memory.xml") |
1038 | self.assertTrue("memory_state" in result) |
1039 | - self.assertEquals(result["memory_state"]["total"], 2023460864) |
1040 | - self.assertEquals(result["memory_state"]["swap"], 2067787776) |
1041 | + self.assertEqual(result["memory_state"]["total"], 2023460864) |
1042 | + self.assertEqual(result["memory_state"]["swap"], 2067787776) |
1043 | |
1044 | def test_processor(self): |
1045 | """Processor information can be in a processors element.""" |
1046 | result = self.getResult("submission_processors.xml") |
1047 | self.assertTrue("processor_state" in result) |
1048 | - self.assertEquals(result["processor_state"]["bogomips"], 1197) |
1049 | - self.assertEquals(result["processor_state"]["cache"], 1048576) |
1050 | - self.assertEquals(result["processor_state"]["count"], 1) |
1051 | - self.assertEquals(result["processor_state"]["make"], "GenuineIntel") |
1052 | - self.assertEquals( |
1053 | + self.assertEqual(result["processor_state"]["bogomips"], 1197) |
1054 | + self.assertEqual(result["processor_state"]["cache"], 1048576) |
1055 | + self.assertEqual(result["processor_state"]["count"], 1) |
1056 | + self.assertEqual(result["processor_state"]["make"], "GenuineIntel") |
1057 | + self.assertEqual( |
1058 | result["processor_state"]["model"], |
1059 | "Intel(R) Pentium(R) M processor 1100MHz") |
1060 | - self.assertEquals(result["processor_state"]["model_number"], "6") |
1061 | - self.assertEquals(result["processor_state"]["model_revision"], "5") |
1062 | - self.assertEquals(result["processor_state"]["model_version"], "9") |
1063 | - self.assertEquals( |
1064 | + self.assertEqual(result["processor_state"]["model_number"], "6") |
1065 | + self.assertEqual(result["processor_state"]["model_revision"], "5") |
1066 | + self.assertEqual(result["processor_state"]["model_version"], "9") |
1067 | + self.assertEqual( |
1068 | result["processor_state"]["other"], |
1069 | """fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov """ |
1070 | """pat clflush dts acpi mmx fxsr sse sse2 tm pbe up bts est tm2""") |
1071 | - self.assertEquals(result["processor_state"]["platform_name"], "i386") |
1072 | - self.assertEquals(result["processor_state"]["speed"], 597) |
1073 | + self.assertEqual(result["processor_state"]["platform_name"], "i386") |
1074 | + self.assertEqual(result["processor_state"]["speed"], 597) |
1075 | |
1076 | def test_processor_info(self): |
1077 | """Processor information can be in an info element.""" |
1078 | result = self.getResult("submission_info_cpuinfo.xml") |
1079 | self.assertTrue("processor_state" in result) |
1080 | - self.assertEquals(result["processor_state"]["bogomips"], 4788) |
1081 | - self.assertEquals(result["processor_state"]["cache"], 3145728) |
1082 | - self.assertEquals(result["processor_state"]["count"], 1) |
1083 | - self.assertEquals(result["processor_state"]["make"], "GenuineIntel") |
1084 | - self.assertEquals( |
1085 | + self.assertEqual(result["processor_state"]["bogomips"], 4788) |
1086 | + self.assertEqual(result["processor_state"]["cache"], 3145728) |
1087 | + self.assertEqual(result["processor_state"]["count"], 1) |
1088 | + self.assertEqual(result["processor_state"]["make"], "GenuineIntel") |
1089 | + self.assertEqual( |
1090 | result["processor_state"]["model"], |
1091 | "Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz") |
1092 | - self.assertEquals(result["processor_state"]["model_number"], "6") |
1093 | - self.assertEquals(result["processor_state"]["model_revision"], "2") |
1094 | - self.assertEquals(result["processor_state"]["model_version"], "37") |
1095 | - self.assertEquals( |
1096 | + self.assertEqual(result["processor_state"]["model_number"], "6") |
1097 | + self.assertEqual(result["processor_state"]["model_revision"], "2") |
1098 | + self.assertEqual(result["processor_state"]["model_version"], "37") |
1099 | + self.assertEqual( |
1100 | result["processor_state"]["other"], |
1101 | """fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca """ |
1102 | """cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm """ |
1103 | @@ -140,51 +133,51 @@ |
1104 | """dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm """ |
1105 | """sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow """ |
1106 | """vnmi flexpriority ept vpid""") |
1107 | - self.assertEquals(result["processor_state"]["platform_name"], "x86_64") |
1108 | - self.assertEquals(result["processor_state"]["speed"], 1865) |
1109 | + self.assertEqual(result["processor_state"]["platform_name"], "x86_64") |
1110 | + self.assertEqual(result["processor_state"]["speed"], 1865) |
1111 | |
1112 | def test_attachments(self): |
1113 | """Attachments are in info elements.""" |
1114 | result = self.getResult("submission_attachment.xml") |
1115 | self.assertTrue("attachments" in result) |
1116 | - self.assertEquals(len(result["attachments"]), 1) |
1117 | + self.assertEqual(len(result["attachments"]), 1) |
1118 | |
1119 | def test_device_udev(self): |
1120 | """Device states can be in the udev element.""" |
1121 | result = self.getResult("submission_udev.xml") |
1122 | self.assertTrue("device_states" in result) |
1123 | - self.assertEquals(len(result["device_states"]), 82) |
1124 | + self.assertEqual(len(result["device_states"]), 84) |
1125 | |
1126 | def test_device_udevadm(self): |
1127 | """Device states can be in a udevadm info element.""" |
1128 | result = self.getResult("submission_info_udevadm.xml") |
1129 | self.assertTrue("device_states" in result) |
1130 | - self.assertEquals(len(result["device_states"]), 82) |
1131 | + self.assertEqual(len(result["device_states"]), 84) |
1132 | |
1133 | def test_device_dmidecode(self): |
1134 | """Device states can be in a dmidecode info element.""" |
1135 | result = self.getResult("submission_info_dmidecode.xml") |
1136 | self.assertTrue("device_states" in result) |
1137 | - self.assertEquals(len(result["device_states"]), 5) |
1138 | + self.assertEqual(len(result["device_states"]), 5) |
1139 | |
1140 | def test_package_versions(self): |
1141 | """Package versions are in the packages element.""" |
1142 | result = self.getResult("submission_packages.xml") |
1143 | self.assertTrue("package_versions" in result) |
1144 | - self.assertEquals(len(result["package_versions"]), 1) |
1145 | + self.assertEqual(len(result["package_versions"]), 1) |
1146 | |
1147 | package_version = result["package_versions"][0] |
1148 | - self.assertEquals(package_version["name"], "accountsservice") |
1149 | - self.assertEquals(package_version["version"], "0.6.21-6ubuntu2") |
1150 | + self.assertEqual(package_version["name"], "accountsservice") |
1151 | + self.assertEqual(package_version["version"], "0.6.21-6ubuntu2") |
1152 | |
1153 | def test_test_results(self): |
1154 | """Test results are in the questions element.""" |
1155 | result = self.getResult("submission_questions.xml") |
1156 | self.assertTrue("test_results" in result) |
1157 | - self.assertEquals(len(result["test_results"]), 1) |
1158 | + self.assertEqual(len(result["test_results"]), 1) |
1159 | |
1160 | test_result = result["test_results"][0] |
1161 | - self.assertEquals( |
1162 | + self.assertEqual( |
1163 | test_result["name"], "audio/alsa_record_playback_external") |
1164 | - self.assertEquals(test_result["output"], "") |
1165 | - self.assertEquals(test_result["status"], "pass") |
1166 | + self.assertEqual(test_result["output"], "") |
1167 | + self.assertEqual(test_result["status"], "pass") |
1168 | |
1169 | === modified file 'checkbox/parsers/tests/test_xinput.py' |
1170 | --- checkbox/parsers/tests/test_xinput.py 2012-10-22 19:43:04 +0000 |
1171 | +++ checkbox/parsers/tests/test_xinput.py 2013-05-09 20:11:45 +0000 |
1172 | @@ -38,8 +38,8 @@ |
1173 | """⎡ Virtual core pointer """ |
1174 | """id=2 [master pointer (3)]""") |
1175 | self.assertTrue(match) |
1176 | - self.assertEquals(match.group("name"), "Virtual core pointer") |
1177 | - self.assertEquals(match.group("id"), "2") |
1178 | + self.assertEqual(match.group("name"), "Virtual core pointer") |
1179 | + self.assertEqual(match.group("id"), "2") |
1180 | |
1181 | |
1182 | class TestAttributeRe(TestCase): |
1183 | @@ -47,8 +47,8 @@ |
1184 | def test_string(self): |
1185 | match = ATTRIBUTE_RE.match("""Buttons supported: 12""") |
1186 | self.assertTrue(match) |
1187 | - self.assertEquals(match.group("key"), "Buttons supported") |
1188 | - self.assertEquals(match.group("value"), "12") |
1189 | + self.assertEqual(match.group("key"), "Buttons supported") |
1190 | + self.assertEqual(match.group("value"), "12") |
1191 | |
1192 | |
1193 | class TestClassValueRe(TestCase): |
1194 | @@ -56,7 +56,7 @@ |
1195 | def test_string(self): |
1196 | match = CLASS_VALUE_RE.match("""12. Type: XIButtonClass""") |
1197 | self.assertTrue(match) |
1198 | - self.assertEquals(match.group("class"), "XIButtonClass") |
1199 | + self.assertEqual(match.group("class"), "XIButtonClass") |
1200 | |
1201 | |
1202 | class TestListValueRe(TestCase): |
1203 | @@ -65,10 +65,10 @@ |
1204 | elements = LIST_VALUE_RE.split( |
1205 | """"Button Horiz Wheel Right" None None""")[1::2] |
1206 | self.assertTrue(elements) |
1207 | - self.assertEquals(len(elements), 3) |
1208 | - self.assertEquals(elements[0], '"Button Horiz Wheel Right"') |
1209 | - self.assertEquals(elements[1], "None") |
1210 | - self.assertEquals(elements[2], "None") |
1211 | + self.assertEqual(len(elements), 3) |
1212 | + self.assertEqual(elements[0], '"Button Horiz Wheel Right"') |
1213 | + self.assertEqual(elements[1], "None") |
1214 | + self.assertEqual(elements[2], "None") |
1215 | |
1216 | |
1217 | class XinputResult(IXinputResult): |
1218 | @@ -86,50 +86,45 @@ |
1219 | |
1220 | class TestXinputParser(TestCase): |
1221 | |
1222 | - def getFixture(self, name): |
1223 | - return os.path.join(os.path.dirname(__file__), "fixtures", name) |
1224 | - |
1225 | - def getParser(self, name): |
1226 | - fixture = self.getFixture(name) |
1227 | - stream = open(fixture, encoding="utf-8") |
1228 | - return XinputParser(stream) |
1229 | |
1230 | def getResult(self, name): |
1231 | - parser = self.getParser(name) |
1232 | + fixture = os.path.join(os.path.dirname(__file__), "fixtures", name) |
1233 | result = XinputResult() |
1234 | - parser.run(result) |
1235 | + with open(fixture, encoding="utf-8") as stream: |
1236 | + parser = XinputParser(stream) |
1237 | + parser.run(result) |
1238 | return result |
1239 | |
1240 | def test_number_of_devices_with_spaces(self): |
1241 | """The toshiba xinput with spaces contains 12 devices.""" |
1242 | result = self.getResult("xinput_toshiba.txt") |
1243 | - self.assertEquals(len(result.devices), 12) |
1244 | + self.assertEqual(len(result.devices), 12) |
1245 | |
1246 | def test_number_of_devices_without_spaces(self): |
1247 | """The quantal xinput without spaces contains 14 devices.""" |
1248 | result = self.getResult("xinput_quantal.txt") |
1249 | - self.assertEquals(len(result.devices), 14) |
1250 | + self.assertEqual(len(result.devices), 14) |
1251 | |
1252 | def test_multitouch_touchpad_device(self): |
1253 | """The toshiba xinput contains a multitouch touchpad device.""" |
1254 | result = self.getResult("xinput_toshiba.txt") |
1255 | devices = [device for device in result.devices.values() |
1256 | if device["name"] == "AlpsPS/2 ALPS DualPoint TouchPad"] |
1257 | - self.assertEquals(len(devices), 1) |
1258 | + self.assertEqual(len(devices), 1) |
1259 | |
1260 | classes = [cls for cls in devices[0]["classes"] |
1261 | if cls["device_class"] == "XITouchClass"] |
1262 | - self.assertEquals(len(classes), 1) |
1263 | - self.assertEquals(classes[0]["touch_mode"], "dependent") |
1264 | + self.assertEqual(len(classes), 1) |
1265 | + self.assertEqual(classes[0]["touch_mode"], "dependent") |
1266 | |
1267 | def test_multitouch_touchscreen_device(self): |
1268 | """The quantal xinput contains a multitouch touchscreen device.""" |
1269 | result = self.getResult("xinput_quantal.txt") |
1270 | devices = [device for device in result.devices.values() |
1271 | if device["name"] == "Quanta OpticalTouchScreen"] |
1272 | - self.assertEquals(len(devices), 1) |
1273 | + self.assertEqual(len(devices), 1) |
1274 | |
1275 | classes = [cls for cls in devices[0]["classes"] |
1276 | if cls["device_class"] == "XITouchClass"] |
1277 | - self.assertEquals(len(classes), 1) |
1278 | - self.assertEquals(classes[0]["touch_mode"], "direct") |
1279 | + self.assertEqual(len(classes), 1) |
1280 | + self.assertEqual(classes[0]["touch_mode"], "direct") |
1281 | |
1282 | === modified file 'checkbox/parsers/udevadm.py' |
1283 | --- checkbox/parsers/udevadm.py 2013-03-22 16:14:06 +0000 |
1284 | +++ checkbox/parsers/udevadm.py 2013-05-09 20:11:45 +0000 |
1285 | @@ -454,8 +454,9 @@ |
1286 | if device.bus == "ieee80211": |
1287 | return False |
1288 | |
1289 | - # Ignore devices without product information |
1290 | - if not device.product and device.product_id is None: |
1291 | + # Ignore devices without product AND vendor information |
1292 | + if (device.product is None and device.product_id is None and |
1293 | + device.vendor is None and device.vendor_id is None): |
1294 | return True |
1295 | |
1296 | # Ignore invalid subsystem information |
1297 | |
1298 | === added file 'checkbox/test_resource.py' |
1299 | --- checkbox/test_resource.py 1970-01-01 00:00:00 +0000 |
1300 | +++ checkbox/test_resource.py 2013-05-09 20:11:45 +0000 |
1301 | @@ -0,0 +1,347 @@ |
1302 | +# This file is part of Checkbox. |
1303 | +# |
1304 | +# Copyright 2013 Canonical Ltd. |
1305 | +# Written by: |
1306 | +# Zygmunt Krynicki <zygmunt.krynicki@canonical.com> |
1307 | +# |
1308 | +# Checkbox is free software: you can redistribute it and/or modify |
1309 | +# it under the terms of the GNU General Public License as published by |
1310 | +# the Free Software Foundation, either version 3 of the License, or |
1311 | +# (at your option) any later version. |
1312 | +# |
1313 | +# Checkbox is distributed in the hope that it will be useful, |
1314 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1315 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1316 | +# GNU General Public License for more details. |
1317 | +# |
1318 | +# You should have received a copy of the GNU General Public License |
1319 | +# along with Checkbox. If not, see <http://www.gnu.org/licenses/>. |
1320 | + |
1321 | +""" |
1322 | +checkbox.test_resource |
1323 | +====================== |
1324 | + |
1325 | +Test definitions for :mod:`checkbox.resource` |
1326 | +""" |
1327 | + |
1328 | +from unittest import TestCase |
1329 | + |
1330 | +from checkbox.resource import ResourceIterator |
1331 | +from checkbox.resource import ResourceMap |
1332 | + |
1333 | + |
1334 | +class ResourceMapTests(TestCase): |
1335 | + |
1336 | + def setUp(self): |
1337 | + # Create a resource map with two resources: |
1338 | + # |
1339 | + # 'resource_list' is a list with two values, each with an 'attr' |
1340 | + # attribute. This is how resources with multiple values are normally |
1341 | + # stored. |
1342 | + # |
1343 | + # 'resource_tuple' is similar to 'resource_list', holding the same data |
1344 | + # but using a tuple instead of a list. |
1345 | + # |
1346 | + # 'resource_dict' is a dictionary with one attribute 'name'. This is |
1347 | + # how resources with one value might be stored. |
1348 | + self.resource_map = ResourceMap({ |
1349 | + 'resource_list': [ |
1350 | + {"attr": "value"}, |
1351 | + {"attr": "other-value"} |
1352 | + ], |
1353 | + 'resource_tuple': ( |
1354 | + {"attr": "value"}, |
1355 | + {"attr": "other-value"} |
1356 | + ), |
1357 | + 'resource_dict': {"attr": "value"}, |
1358 | + 'resource_int': 42, |
1359 | + }) |
1360 | + # This is an empty map, it is used by some of the tests |
1361 | + self.empty_map = ResourceMap() |
1362 | + |
1363 | + def test_resource_map_is_a_dict(self): |
1364 | + # While it's a derived class it's still a dictionary |
1365 | + self.assertIsInstance(self.resource_map, dict) |
1366 | + |
1367 | + def test_missing_resource(self): |
1368 | + # Missing resources just raise KeyError as they normally would in a |
1369 | + # dictionary |
1370 | + with self.assertRaises(KeyError): |
1371 | + self.resource_map['resource_missing'] |
1372 | + |
1373 | + def test_existing_resource_list(self): |
1374 | + # Accessing a resource wrapped in a list returns a ResourceIterator |
1375 | + thing = self.resource_map['resource_list'] |
1376 | + self.assertIsInstance(thing, ResourceIterator) |
1377 | + |
1378 | + def test_existing_resource_tuple(self): |
1379 | + # Accessing a resource wrapped in a tuple returns a ResourceIterator |
1380 | + thing = self.resource_map['resource_tuple'] |
1381 | + self.assertIsInstance(thing, ResourceIterator) |
1382 | + |
1383 | + def test_existing_resource_dict(self): |
1384 | + # Accessing a resource wrapped in a dict returns a ResourceIterator |
1385 | + thing = self.resource_map['resource_dict'] |
1386 | + self.assertIsInstance(thing, ResourceIterator) |
1387 | + |
1388 | + def test_existing_resource_int(self): |
1389 | + # Accessing a resource wrapped in a int returns the value directly |
1390 | + thing = self.resource_map['resource_int'] |
1391 | + self.assertIsInstance(thing, int) |
1392 | + # The helper integer is 42 |
1393 | + self.assertEqual(thing, 42) |
1394 | + |
1395 | + def test_eval_smoke(self): |
1396 | + # Evaluating anything valid against an empty map returns None |
1397 | + self.assertIs(None, self.empty_map.eval("resource.attr == 'value'")) |
1398 | + # Evaluating borked code against an empty map also returns None |
1399 | + self.assertIs(None, self.empty_map.eval("adpasdasd .asdaasd asd a")) |
1400 | + |
1401 | + def test_under_results(self): |
1402 | + # The resource map has an instance variable, _results that is only |
1403 | + # assigned after the call to ResourceMap.eval(). |
1404 | + with self.assertRaises(AttributeError): |
1405 | + self.empty_map._results |
1406 | + # Calling eval() initializes/overrides it |
1407 | + self.empty_map.eval('') |
1408 | + # With an empty list (that list may contain other values normally but |
1409 | + # with an empty resource map it is always empty) |
1410 | + self.assertEqual(self.empty_map._results, []) |
1411 | + |
1412 | + def test_eval_globals(self): |
1413 | + # ResourceMap.eval() has a fixed list of globals |
1414 | + # |
1415 | + # We can poke at that list by using specially crafted expressions. |
1416 | + # Each time the expression evaluates to 1, we get an empty list back. |
1417 | + self.assertEqual([], self.empty_map.eval("'bool' in globals() and 1")) |
1418 | + self.assertEqual([], self.empty_map.eval("'float' in globals() and 1")) |
1419 | + self.assertEqual([], self.empty_map.eval("'int' in globals() and 1")) |
1420 | + self.assertEqual([], self.empty_map.eval("'str' in globals() and 1")) |
1421 | + # Each of those globals is a special ResourceBuiltin object |
1422 | + self.assertEqual([], self.resource_map.eval( |
1423 | + "bool.__class__.__name__ == 'ResourceBuiltin'")) |
1424 | + self.assertEqual([], self.resource_map.eval( |
1425 | + "float.__class__.__name__ == 'ResourceBuiltin'")) |
1426 | + self.assertEqual([], self.resource_map.eval( |
1427 | + "int.__class__.__name__ == 'ResourceBuiltin'")) |
1428 | + self.assertEqual([], self.resource_map.eval( |
1429 | + "str.__class__.__name__ == 'ResourceBuiltin'")) |
1430 | + # Unfortunately, __builtins__ is also in the global scope |
1431 | + # |
1432 | + # With builtins being available we have a way to access anything in |
1433 | + # python via __import__ |
1434 | + self.assertEqual([], self.empty_map.eval( |
1435 | + "'__builtins__' in globals() and 1")) |
1436 | + # There are no other globals than what was checked for above: |
1437 | + # |
1438 | + # The goal is to ensure that there are only particular globals |
1439 | + # in the context that is being used to evaluate the expression. |
1440 | + # |
1441 | + # We cannot return the value directly and compare it outside |
1442 | + # (well we can but that trick is used later to keep this code |
1443 | + # simple and portable across changes in checkbox) |
1444 | + # |
1445 | + # The return value of globals().keys() is a special dict_keys() proxy |
1446 | + # that returns the items in undetermined order. |
1447 | + # |
1448 | + # The result is a simple comparison of two sorted list generated by |
1449 | + # list comprehensions from iterating over all the keys in global() and |
1450 | + # in the list of expected global symbols |
1451 | + self.assertEqual([], self.empty_map.eval( |
1452 | + "sorted([x for x in globals().keys()])" |
1453 | + " == " |
1454 | + "sorted(['__builtins__', 'bool', 'float', 'int', 'str'])")) |
1455 | + |
1456 | + def test_eval_locals(self): |
1457 | + # As with the globals test above, this test checks what kind of locals |
1458 | + # are available inside the execution context. |
1459 | + # |
1460 | + # In the example of an empty map, the result is -- no locals! |
1461 | + self.assertEqual([], self.empty_map.eval( |
1462 | + "sorted([x for x in locals().keys()])" |
1463 | + " == " |
1464 | + "[]")) |
1465 | + # In the example of a resource map with several resources the result |
1466 | + # are those resources (after wrapping in ResourceIterator) |
1467 | + self.assertEqual([], self.resource_map.eval( |
1468 | + "sorted([x for x in locals().keys()])" |
1469 | + " == " |
1470 | + "sorted(['resource_list', 'resource_tuple'," |
1471 | + " 'resource_dict', 'resource_int'])")) |
1472 | + # Let's just ensure that those are not the raw values anymore Note that |
1473 | + # we cannot use 'int', 'list', etc. directly they are wrapped in |
1474 | + # ResourceBuiltin objects (see test_eval_globals() above) |
1475 | + self.assertEqual([], self.resource_map.eval( |
1476 | + "locals()['resource_int'] != (0).__class__")) |
1477 | + self.assertEqual([], self.resource_map.eval( |
1478 | + "locals()['resource_dict'] != ({}).__class__")) |
1479 | + self.assertEqual([], self.resource_map.eval( |
1480 | + "locals()['resource_list'] != ([]).__class__")) |
1481 | + self.assertEqual([], self.resource_map.eval( |
1482 | + "locals()['resource_tuple'] != (()).__class__")) |
1483 | + |
1484 | + def test_eval_import(self): |
1485 | + # The expression can import arbitrary python package |
1486 | + # |
1487 | + # Here we import the subprocess module, execute /bin/false which |
1488 | + # returns 1, this makes the expression True in the terms of checkbox |
1489 | + # resource programs. |
1490 | + self.assertEqual([], self.empty_map.eval( |
1491 | + "__import__('subprocess').call('/bin/false')")) |
1492 | + |
1493 | + def test_eval_can_mutate_results(self): |
1494 | + # The ResourceMap._results object can be accessed and mutated |
1495 | + # by using locals(). Calling locals() inside the expression literally |
1496 | + # returns the ResourceMap instance. |
1497 | + # |
1498 | + # Using that trick, any operation can be performed, including mutating |
1499 | + # or replacing the results object. |
1500 | + results = self.empty_map.eval( |
1501 | + "1 " |
1502 | + "if getattr(locals(), '_results').append('payload') " |
1503 | + "is None " |
1504 | + "else 0") |
1505 | + self.assertIs(self.empty_map._results, results) |
1506 | + self.assertEqual(results, ['payload']) |
1507 | + |
1508 | + def test_eval_return_value_for_int_resources(self): |
1509 | + # This test explores how resource_map.eval() result gets |
1510 | + # computed and what it really is in practice. |
1511 | + # |
1512 | + # The important aspect of this code is that it relies on |
1513 | + # ResourceMap._results being shared by ResourceMap, ResourceIterator |
1514 | + # and ResourceObject. This makes testing the behavior in isolation |
1515 | + # difficult. |
1516 | + # |
1517 | + # Technically _results are mutated only in ResourceIterator (in the |
1518 | + # __contains__ function) and in the ResourceObject (in the _try |
1519 | + # function that is in turn called from all overridden special functions |
1520 | + # like __eq__) both of those places call _results.append(). |
1521 | + # |
1522 | + # The appended value is either the element of the ResourceIterator |
1523 | + # (technically the value) and the converted value of the attribute in |
1524 | + # ResourceObject._try. This is rather confusing so let's see what |
1525 | + # happens in practice. |
1526 | + # |
1527 | + # Let's explore resource_list first (the flow is the same for all other |
1528 | + # types so the explanations are only given once). |
1529 | + # |
1530 | + # Here each value was a simple dictionary with 'attr' key wrapped in a |
1531 | + # list. As checked earlier by test_existing_resource_list() that list |
1532 | + # is converted to a ResourceIterator. Accessing any attribute on the |
1533 | + # resource iterator creates a ResourceObject bound to that attribute |
1534 | + # name and the iterator. Calling the equality operator on a |
1535 | + # ResourceObject calls ResourceObject.__eq__() which in turns calls |
1536 | + # ResourceObject._try() The _try() function iterates over the |
1537 | + # ResourceIterator and checks of any of the items returned (which are |
1538 | + # the raw items as passed to ResourceMap initially) have an entry |
1539 | + # corresponding to the attribute name (that was accessed on |
1540 | + # ResourceIterator), if so, the value is looked up, converted using the |
1541 | + # convert function (identity by default), and passed to the helper |
1542 | + # function (that corresponds to the logical operation performed by |
1543 | + # whatever called _try, for example, __eq__ calls lambda a, b: a == b). |
1544 | + # If the return value of that function matches the expected sentinel |
1545 | + # object (True is used by default) then the loop over the iterator |
1546 | + # (inside _try()) is broken and the original item (the dictionary or |
1547 | + # other object that was initially passed to the ResourceMap) is |
1548 | + # appended. Lastly the _try() method returns the sentinel object (True |
1549 | + # by default) there was a match (the loop got broken) or the default |
1550 | + # value (False by default) otherwise. This is all pretty complicated |
1551 | + # but in the case of all-defaults it's pretty much equivalent to: |
1552 | + # |
1553 | + # results = [ |
1554 | + # object |
1555 | + # for object in resource_map[resource_name] |
1556 | + # if object.get(resource_attr) == expected_value] |
1557 | + # |
1558 | + # Let's see how that works in practice. |
1559 | + # Note that the == operator can be replaced by any operator |
1560 | + # supported by ResourceObject (<, <=, >, >=, =, !=, in) |
1561 | + self.assertEqual( |
1562 | + self.resource_map.eval("resource_list.attr == 'value'"), |
1563 | + [{'attr': 'value'}]) |
1564 | + self.assertEqual( |
1565 | + self.resource_map.eval("resource_list.attr in ['value']"), |
1566 | + [{'attr': 'value'}]) |
1567 | + self.assertEqual( |
1568 | + self.resource_map.eval("resource_list.attr != 'value'"), |
1569 | + [{'attr': 'other-value'}]) |
1570 | + # The inequality operator used with a value that does not exist in the |
1571 | + # resource produces the full list of resources back. |
1572 | + self.assertEqual( |
1573 | + self.resource_map.eval("resource_list.attr != 'foo'"), |
1574 | + [{'attr': 'value'}, {'attr': 'other-value'}]) |
1575 | + |
1576 | + def test_eval_return_value_for_tuple_resources(self): |
1577 | + # Set of identical tests for resource_tuple |
1578 | + self.assertEqual( |
1579 | + self.resource_map.eval("resource_tuple.attr == 'value'"), |
1580 | + [{'attr': 'value'}]) |
1581 | + self.assertEqual( |
1582 | + self.resource_map.eval("resource_tuple.attr in ['value']"), |
1583 | + [{'attr': 'value'}]) |
1584 | + self.assertEqual( |
1585 | + self.resource_map.eval("resource_tuple.attr != 'value'"), |
1586 | + [{'attr': 'other-value'}]) |
1587 | + |
1588 | + def test_eval_return_value_for_dict_resources(self): |
1589 | + # Set of identical tests for resource_dict |
1590 | + self.assertEqual( |
1591 | + self.resource_map.eval("resource_dict.attr == 'value'"), |
1592 | + [{'attr': 'value'}]) |
1593 | + self.assertEqual( |
1594 | + self.resource_map.eval("resource_dict.attr in ['value']"), |
1595 | + [{'attr': 'value'}]) |
1596 | + # Here the result is slightly different. This is because there are no |
1597 | + # matches (there is no 'other-value' like in previous cases). In such |
1598 | + # case the whole expression does not evaluate to True and the return |
1599 | + # value is None. |
1600 | + self.assertEqual( |
1601 | + self.resource_map.eval("resource_dict.attr != 'value'"), |
1602 | + None) |
1603 | + |
1604 | + def test_eval_return_value_for_other_resources(self): |
1605 | + # Set of identical tests for resource_int |
1606 | + # |
1607 | + # Here resource_int is not wrapped in a ResourceIterator and unexpected |
1608 | + # things start to happen. There is no logic to modify the result in |
1609 | + # such case so although the result of the comparison is True the result |
1610 | + # of the eval() function is the empty results list. |
1611 | + # |
1612 | + # I suspect that such cases were never meant to happen and are an |
1613 | + # oversight from the initial implementation and lack of testing beyond |
1614 | + # the expected working cases. |
1615 | + self.assertEqual( |
1616 | + self.resource_map.eval("resource_int == 42"), |
1617 | + []) |
1618 | + # Confusingly enough, but consistently, when the expression evaluates |
1619 | + # the False the eval() function returns None. |
1620 | + self.assertEqual( |
1621 | + self.resource_map.eval("resource_int != 42"), |
1622 | + None) |
1623 | + |
1624 | + def test_eval_return_logic_bool(self): |
1625 | + # There is some extra logic in eval() that should be documented. |
1626 | + # The return value of the low-level eval() call inside the |
1627 | + # ResourceMap.eval() method is passed to a set of tests to determine if |
1628 | + # it is 'true enough' to return the results. Those tests include: |
1629 | + # 1) A boolean value which is True |
1630 | + self.assertEqual([], self.empty_map.eval("True")) |
1631 | + self.assertEqual(None, self.empty_map.eval("False")) |
1632 | + |
1633 | + def test_eval_return_logic_int(self): |
1634 | + # 2) A non-zero integer |
1635 | + self.assertEqual([], self.empty_map.eval("1")) |
1636 | + self.assertEqual(None, self.empty_map.eval("0")) |
1637 | + |
1638 | + def test_eval_return_logic_tuple(self): |
1639 | + # 3) A tuple with at least one True object |
1640 | + self.assertEqual([], self.empty_map.eval("(True,)")) |
1641 | + self.assertEqual([], self.empty_map.eval("(False, True, 7)")) |
1642 | + self.assertEqual(None, self.empty_map.eval("(False, 7)")) |
1643 | + self.assertEqual(None, self.empty_map.eval("(7,)")) |
1644 | + self.assertEqual(None, self.empty_map.eval("()")) |
1645 | + |
1646 | + def test_eval_return_logic_list(self): |
1647 | + # Sadly this does not apply to lists |
1648 | + self.assertEqual(None, self.empty_map.eval("[True]")) |
1649 | |
1650 | === modified file 'checkbox/tests/__init__.py' |
1651 | --- checkbox/tests/__init__.py 2007-09-18 15:26:03 +0000 |
1652 | +++ checkbox/tests/__init__.py 2013-05-09 20:11:45 +0000 |
1653 | @@ -0,0 +1,49 @@ |
1654 | +# This file is part of Checkbox. |
1655 | +# |
1656 | +# Copyright 2013 Canonical Ltd. |
1657 | +# Written by: |
1658 | +# Zygmunt Krynicki <zygmunt.krynicki@canonical.com> |
1659 | +# |
1660 | +# Checkbox is free software: you can redistribute it and/or modify |
1661 | +# it under the terms of the GNU General Public License as published by |
1662 | +# the Free Software Foundation, either version 3 of the License, or |
1663 | +# (at your option) any later version. |
1664 | +# |
1665 | +# Checkbox is distributed in the hope that it will be useful, |
1666 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1667 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1668 | +# GNU General Public License for more details. |
1669 | +# |
1670 | +# You should have received a copy of the GNU General Public License |
1671 | +# along with Checkbox. If not, see <http://www.gnu.org/licenses/>. |
1672 | + |
1673 | +""" |
1674 | +:mod:`checkbox.tests` -- auxiliary test loaders for checkbox |
1675 | +============================================================ |
1676 | +""" |
1677 | + |
1678 | +from inspect import getabsfile |
1679 | +from unittest.loader import defaultTestLoader |
1680 | +import os |
1681 | + |
1682 | +import checkbox |
1683 | + |
1684 | + |
1685 | +def load_unit_tests(): |
1686 | + """ |
1687 | + Load all unit tests and return a TestSuite object |
1688 | + """ |
1689 | + # Discover all unit tests. By simple convention those are kept in |
1690 | + # python modules that start with the word 'test_' . |
1691 | + return defaultTestLoader.discover( |
1692 | + os.path.dirname(getabsfile(checkbox))) |
1693 | + |
1694 | + |
1695 | +def test_suite(): |
1696 | + """ |
1697 | + Test suite function used by setuptools test loader. |
1698 | + |
1699 | + Uses unittest test discovery system to get a list of test cases defined |
1700 | + inside checkbox. See setup.py setup(test_suite=...) for a matching entry |
1701 | + """ |
1702 | + return load_unit_tests() |
1703 | |
1704 | === modified file 'checkbox/tests/test_job.py' |
1705 | --- checkbox/tests/test_job.py 2012-10-09 13:32:06 +0000 |
1706 | +++ checkbox/tests/test_job.py 2013-05-09 20:11:45 +0000 |
1707 | @@ -16,22 +16,23 @@ |
1708 | # You should have received a copy of the GNU General Public License |
1709 | # along with Checkbox. If not, see <http://www.gnu.org/licenses/>. |
1710 | # |
1711 | -import os |
1712 | import unittest |
1713 | + |
1714 | from checkbox.job import Job |
1715 | |
1716 | + |
1717 | class JobTest(unittest.TestCase): |
1718 | |
1719 | def test_command_not_found(self): |
1720 | - job = Job('xwonkt','',10) |
1721 | + job = Job('xwonkt', '', 10) |
1722 | status, data, duration = job.execute() |
1723 | #data is expected to be bytes |
1724 | self.assertTrue(isinstance(data, bytes)) |
1725 | |
1726 | def test_existing_command(self): |
1727 | test_string = 'checkbox' |
1728 | - job = Job('echo -n "%s"' % test_string,'',10) |
1729 | + job = Job('echo -n "%s"' % test_string, '', 10) |
1730 | status, data, duration = job.execute() |
1731 | #data is expected to be bytes |
1732 | self.assertTrue(isinstance(data, bytes)) |
1733 | - self.assertEquals(data, test_string.encode()) |
1734 | + self.assertEqual(data, test_string.encode()) |
1735 | |
1736 | === modified file 'checkbox/tests/test_message_files.py' |
1737 | --- checkbox/tests/test_message_files.py 2012-12-12 13:13:12 +0000 |
1738 | +++ checkbox/tests/test_message_files.py 2013-05-09 20:11:45 +0000 |
1739 | @@ -74,13 +74,14 @@ |
1740 | if 'environ' in message: |
1741 | environ_variables = re.findall(environ_variables_regex, |
1742 | message['environ']) |
1743 | - self.assertEquals(set(environ_variables), |
1744 | + self.assertEqual(set(environ_variables), |
1745 | set(shell_variables), |
1746 | message['name']) |
1747 | |
1748 | def test_jobs_comply_with_schema(self): |
1749 | globals = {} |
1750 | - exec(open("plugins/jobs_info.py").read(), globals) |
1751 | + with open("plugins/jobs_info.py", "rt") as stream: |
1752 | + exec(stream.read(), globals) |
1753 | job_schema = globals["job_schema"] |
1754 | for message in self.messages: |
1755 | long_ext = "_extended" |
1756 | |
1757 | === modified file 'checkbox/tests/test_setup_files.py' |
1758 | --- checkbox/tests/test_setup_files.py 2012-10-09 13:32:06 +0000 |
1759 | +++ checkbox/tests/test_setup_files.py 2013-05-09 20:11:45 +0000 |
1760 | @@ -37,7 +37,8 @@ |
1761 | self.assertEqual(rfc822deb_from_config, existing_files) |
1762 | |
1763 | def test_job_files_in_potfiles(self): |
1764 | - potfile_lines = [line.strip() for line in open('po/POTFILES.in','r')] |
1765 | + with open('po/POTFILES.in', 'rt') as stream: |
1766 | + potfile_lines = [line.strip() for line in stream] |
1767 | potfile_jobfiles = [file for file in potfile_lines if "rfc822deb" in file] |
1768 | potfile_jobfiles = [line.split(']')[1].strip() |
1769 | for line in potfile_jobfiles if ']' in line] |
1770 | @@ -47,7 +48,8 @@ |
1771 | self.assertEqual(potfile_jobfiles, existing_files) |
1772 | |
1773 | def test_job_files_in_local_txt(self): |
1774 | - local_lines = [line.strip() for line in open('jobs/local.txt.in','r')] |
1775 | + with open('jobs/local.txt.in','rt') as stream: |
1776 | + local_lines = [line.strip() for line in stream] |
1777 | local_jobfiles = [file for file in local_lines if "$CHECKBOX_SHARE/jobs" in file] |
1778 | local_jobfiles = [re.search('\$CHECKBOX_SHARE\/(?P<job_file>jobs\/(.+)\.txt)\?.*', |
1779 | file).group('job_file')+".in" for file in local_jobfiles] |
1780 | |
1781 | === modified file 'checkbox/user_interface.py' |
1782 | --- checkbox/user_interface.py 2012-10-17 19:00:19 +0000 |
1783 | +++ checkbox/user_interface.py 2013-05-09 20:11:45 +0000 |
1784 | @@ -16,25 +16,20 @@ |
1785 | # You should have received a copy of the GNU General Public License |
1786 | # along with Checkbox. If not, see <http://www.gnu.org/licenses/>. |
1787 | # |
1788 | -import re |
1789 | +import gettext |
1790 | +import logging |
1791 | import os |
1792 | import pwd |
1793 | -import sys |
1794 | -import logging |
1795 | +import re |
1796 | import subprocess |
1797 | import webbrowser |
1798 | |
1799 | -import gettext |
1800 | -from gettext import gettext as _ |
1801 | - |
1802 | from checkbox.contrib.REThread import REThread |
1803 | - |
1804 | from checkbox.lib.environ import ( |
1805 | add_variable, |
1806 | get_variable, |
1807 | remove_variable, |
1808 | ) |
1809 | - |
1810 | from checkbox.job import ( |
1811 | FAIL, |
1812 | PASS, |
1813 | @@ -134,10 +129,10 @@ |
1814 | return |
1815 | |
1816 | def show_text(self, text, previous=None, next=None): |
1817 | - return |
1818 | + print(text) |
1819 | |
1820 | - def show_entry(self, text, value, label=None, previous=None, next=None): |
1821 | - return value |
1822 | + def show_entry(self, text, value, label=None, showSubmitToHexr=False, previous=None, next=None): |
1823 | + return (value, False) |
1824 | |
1825 | def show_check(self, text, options=[], default=[]): |
1826 | return default |
1827 | |
1828 | === modified file 'checkbox/variables.py' |
1829 | --- checkbox/variables.py 2012-06-01 15:45:08 +0000 |
1830 | +++ checkbox/variables.py 2013-05-09 20:11:45 +0000 |
1831 | @@ -215,7 +215,7 @@ |
1832 | for schema in self._schemas: |
1833 | try: |
1834 | # Only check that the value can be coerced |
1835 | - dummy = schema(value=value).get() |
1836 | + schema(value=value).get() |
1837 | return value |
1838 | except ValueError: |
1839 | pass |
1840 | @@ -287,6 +287,7 @@ |
1841 | def get_variable(obj, attribute): |
1842 | return get_variables(obj)[attribute] |
1843 | |
1844 | + |
1845 | def get_variables(obj): |
1846 | from checkbox.attribute import get_attributes |
1847 | |
1848 | |
1849 | === modified file 'checkbox_cli/cli_interface.py' |
1850 | --- checkbox_cli/cli_interface.py 2012-10-14 01:04:59 +0000 |
1851 | +++ checkbox_cli/cli_interface.py 2013-05-09 20:11:45 +0000 |
1852 | @@ -342,10 +342,10 @@ |
1853 | dialog = CLIChoiceDialog(text) |
1854 | dialog.run() |
1855 | |
1856 | - def show_entry(self, text, value, label=None, previous=None, next=None): |
1857 | + def show_entry(self, text, value, showSubmitToHexr=False, label=None, previous=None, next=None): |
1858 | dialog = CLILineDialog(text) |
1859 | |
1860 | - return dialog.run() |
1861 | + return (dialog.run(), False) |
1862 | |
1863 | def show_check(self, text, options=[], default=[]): |
1864 | dialog = CLIChoiceDialog(text) |
1865 | @@ -363,7 +363,7 @@ |
1866 | result = options[response] |
1867 | self._toggle_results(result, options, results) |
1868 | |
1869 | - return results |
1870 | + return (results, False) |
1871 | |
1872 | def show_radio(self, text, options=[], default=None): |
1873 | dialog = CLIChoiceDialog(text) |
1874 | |
1875 | === modified file 'checkbox_gtk/gtk_interface.py' |
1876 | --- checkbox_gtk/gtk_interface.py 2012-06-12 15:03:42 +0000 |
1877 | +++ checkbox_gtk/gtk_interface.py 2013-05-09 20:11:45 +0000 |
1878 | @@ -288,7 +288,7 @@ |
1879 | self._set_button("button_next", next_state) |
1880 | |
1881 | @GTKHack |
1882 | - def show_entry(self, text, value, label=None, previous=None, next=None): |
1883 | + def show_entry(self, text, value, showSubmitToHexr=False, label=None, previous=None, next=None): |
1884 | #Reset window title |
1885 | self._set_main_title() |
1886 | # Set buttons |
1887 | @@ -310,7 +310,7 @@ |
1888 | |
1889 | entered_value = self._get_text("entry") |
1890 | self._set_text("entry","") |
1891 | - return entered_value |
1892 | + return (entered_value, False) |
1893 | |
1894 | @GTKHack |
1895 | def show_check(self, text, options=[], default=[]): |
1896 | |
1897 | === modified file 'checkbox_qt/qt_interface.py' |
1898 | --- checkbox_qt/qt_interface.py 2012-09-27 15:27:01 +0000 |
1899 | +++ checkbox_qt/qt_interface.py 2013-05-09 20:11:45 +0000 |
1900 | @@ -111,7 +111,7 @@ |
1901 | self.qtiface.showText(text) |
1902 | self.wait_on_signals(fullTestsClicked=onFullTestsClicked) |
1903 | |
1904 | - def show_entry(self, text, value, label='', previous=None, next=None): |
1905 | + def show_entry(self, text, value, label='', showSubmitToHexr=False, previous=None, next=None): |
1906 | def onSubmitTestsClicked(): |
1907 | self.loop.quit() |
1908 | |
1909 | @@ -127,9 +127,9 @@ |
1910 | if value is None: |
1911 | value = '' |
1912 | |
1913 | - self.qtiface.showEntry(text, value, label) |
1914 | + self.qtiface.showEntry(text, value, label, showSubmitToHexr) |
1915 | self.wait_on_signals(submitTestsClicked=onSubmitTestsClicked) |
1916 | - return self.qtiface.getSubmissionData() |
1917 | + return (self.qtiface.getSubmissionData(), self.qtiface.getSubmitToHexr()) |
1918 | |
1919 | def show_check(self, text, options=[], default=[]): |
1920 | return False |
1921 | |
1922 | === modified file 'checkbox_urwid/urwid_interface.py' |
1923 | --- checkbox_urwid/urwid_interface.py 2012-06-12 15:03:42 +0000 |
1924 | +++ checkbox_urwid/urwid_interface.py 2013-05-09 20:11:45 +0000 |
1925 | @@ -977,10 +977,10 @@ |
1926 | return dialog.response |
1927 | |
1928 | |
1929 | - def show_entry(self, text, value, label=None, previous=None, next=None): |
1930 | + def show_entry(self, text, value, showSubmitToHexr=False, label=None, previous=None, next=None): |
1931 | dialog = InputDialog(text).run() |
1932 | self.direction = dialog.direction |
1933 | - return dialog.response |
1934 | + return (dialog.response, False) |
1935 | |
1936 | |
1937 | def show_check(self, text, options=[], default=None): |
1938 | |
1939 | === added file 'data/whitelists/hwsubmit.whitelist' |
1940 | --- data/whitelists/hwsubmit.whitelist 1970-01-01 00:00:00 +0000 |
1941 | +++ data/whitelists/hwsubmit.whitelist 2013-05-09 20:11:45 +0000 |
1942 | @@ -0,0 +1,24 @@ |
1943 | +cdimage |
1944 | +cpuinfo |
1945 | +device |
1946 | +dmi |
1947 | +dpkg |
1948 | +gconf |
1949 | +lsb |
1950 | +meminfo |
1951 | +module |
1952 | +package |
1953 | +uname |
1954 | +usb |
1955 | +__info__ |
1956 | +cpuinfo_attachment |
1957 | +dmesg_attachment |
1958 | +dmi_attachment |
1959 | +dmidecode_attachment |
1960 | +lsmod_attachment |
1961 | +lspci_attachment |
1962 | +modprobe_attachment |
1963 | +modules_attachment |
1964 | +sysfs_attachment |
1965 | +sysctl_attachment |
1966 | +udev_attachment |
1967 | |
1968 | === added file 'data/whitelists/sru.whitelist' |
1969 | --- data/whitelists/sru.whitelist 1970-01-01 00:00:00 +0000 |
1970 | +++ data/whitelists/sru.whitelist 2013-05-09 20:11:45 +0000 |
1971 | @@ -0,0 +1,114 @@ |
1972 | +## This whitelist contains tests that are useful for validating a Stable |
1973 | +## Release Update (SRU) on Ubuntu Certified systems. This whitelist is not |
1974 | +## recommended for, nor will it be accepted for self-testing purposes. |
1975 | +cpuinfo |
1976 | +cdimage |
1977 | +dmi |
1978 | +dpkg |
1979 | +efi |
1980 | +environment |
1981 | +gconf |
1982 | +lsb |
1983 | +meminfo |
1984 | +memory_card |
1985 | +module |
1986 | +package |
1987 | +device |
1988 | +uname |
1989 | +sleep |
1990 | +block_device |
1991 | +xinput |
1992 | +#File Attachment Jobs |
1993 | +__info__ |
1994 | +acpi_sleep_attachment |
1995 | +codecs_attachment |
1996 | +cpuinfo_attachment |
1997 | +dmesg_attachment |
1998 | +dmi_attachment |
1999 | +dmidecode_attachment |
2000 | +efi_attachment |
2001 | +lspci_attachment |
2002 | +meminfo_attachment |
2003 | +modprobe_attachment |
2004 | +modules_attachment |
2005 | +sysctl_attachment |
2006 | +sysfs_attachment |
2007 | +udev_attachment |
2008 | +lsmod_attachment |
2009 | +#SRU Test Suite Jobs |
2010 | +__audio__ |
2011 | +audio/alsa_record_playback_automated |
2012 | +__bluetooth__ |
2013 | +bluetooth/detect-output |
2014 | +__camera__ |
2015 | +camera/multiple-resolution-images |
2016 | +__cpu__ |
2017 | +cpu/scaling_test |
2018 | +cpu/scaling_test-log-attach |
2019 | +cpu/offlining_test |
2020 | +cpu/topology |
2021 | +__disk__ |
2022 | +disk/read_performance |
2023 | +disk/read_performance_.* |
2024 | +__graphics__ |
2025 | +graphics/xorg-version |
2026 | +graphics/compiz_check |
2027 | +graphics/xorg-failsafe |
2028 | +graphics/xorg-process |
2029 | +graphics/screenshot |
2030 | +screenshot.jpg |
2031 | +graphics/screenshot_fullscreen_video |
2032 | +screenshot_fullscreen_video.jpg |
2033 | +__install__ |
2034 | +install/apt-get-gets-updates |
2035 | +__mediacard__ |
2036 | +mediacard/sd-preinserted |
2037 | +__memory__ |
2038 | +memory/info |
2039 | +memory/check |
2040 | +__networking__ |
2041 | +networking/detect |
2042 | +networking/http |
2043 | +networking/internet |
2044 | +networking/ping |
2045 | +__power-management__ |
2046 | +power-management/tickless_idle |
2047 | +power-management/rtc |
2048 | +power-management/fwts_wakealarm |
2049 | +power-management/fwts_wakealarm-log-attach |
2050 | +__usb__ |
2051 | +usb/detect |
2052 | +usb/storage-preinserted |
2053 | +__wireless__ |
2054 | +wireless/wireless_scanning |
2055 | +wireless/wireless_connection_wpa_bg |
2056 | +wireless/wireless_connection_open_bg |
2057 | +wireless/wireless_connection_wpa_n |
2058 | +wireless/wireless_connection_open_n |
2059 | +wireless/monitor_wireless_connection_udp |
2060 | +__suspend__ |
2061 | +suspend/audio_before_suspend |
2062 | +suspend/bluetooth_obex_send_before_suspend |
2063 | +suspend/bluetooth_obex_browse_before_suspend |
2064 | +suspend/bluetooth_obex_get_before_suspend |
2065 | +suspend/cpu_before_suspend |
2066 | +suspend/network_before_suspend |
2067 | +suspend/memory_before_suspend |
2068 | +suspend/suspend_advanced_auto |
2069 | +suspend/suspend-single-log-check |
2070 | +suspend/audio_after_suspend_auto |
2071 | +suspend/network_resume_time_auto |
2072 | +suspend/wifi_resume_time_auto |
2073 | +suspend/record_playback_after_suspend_auto |
2074 | +suspend/bluetooth_obex_send_after_suspend_auto |
2075 | +suspend/bluetooth_obex_browse_after_suspend_auto |
2076 | +suspend/bluetooth_obex_get_after_suspend_auto |
2077 | +suspend/cpu_after_suspend_auto |
2078 | +suspend/memory_after_suspend_auto |
2079 | +suspend/wireless_connection_after_suspend_wpa_bg_auto |
2080 | +suspend/wireless_connection_after_suspend_open_bg_auto |
2081 | +suspend/wireless_connection_after_suspend_wpa_n_auto |
2082 | +suspend/wireless_connection_after_suspend_open_n_auto |
2083 | +suspend/gpu_lockup_after_suspend |
2084 | +suspend/screenshot_after_suspend |
2085 | +screenshot_after_suspend.jpg |
2086 | |
2087 | === modified file 'debian/changelog' |
2088 | --- debian/changelog 2013-03-22 16:14:06 +0000 |
2089 | +++ debian/changelog 2013-05-09 20:11:45 +0000 |
2090 | @@ -1,3 +1,145 @@ |
2091 | +checkbox (0.16) saucy; urgency=low |
2092 | + |
2093 | + * New upstream release (LP: #1178403): |
2094 | + |
2095 | + * Launchpad automated translation updates |
2096 | + |
2097 | + [ Jeff Lane ] |
2098 | + * scripts/cpu_offlining: Modified script to no longer offline cpu0 to resolve |
2099 | + a bug on ARM. Modified output so most of it is redirected to stderr for |
2100 | + fail cases, we don't need that much for success cases. (LP: #1078897) |
2101 | + * jobs/mediacard.txt.in: Modified test instructions to be less confusing |
2102 | + (LP: #970857) |
2103 | + * scripts/cpu_topology: define the cpuinfo nested dicts on creation rather |
2104 | + than define elements during parsing of /proc/cpuinfo (LP: #1111878) |
2105 | + * scripts/lsmod_info: Corrected error handling for the check_output() call to |
2106 | + trap the correct error. (LP: #1103647) |
2107 | + * jobs/camera.txt.in: removed an extraneous requres line for gir1.2 |
2108 | + scripts/camera_test: added code to determine what version of gst we're |
2109 | + using and set video type and plugin accordingly. (LP: #1100594) |
2110 | + * scripts/network_check: added ability to specify custom target URL for |
2111 | + debugging failures (LP: #1128017) |
2112 | + * scripts/sleep_test_log_check: added new script to parse fwts logs for |
2113 | + errors |
2114 | + jobs/hibernate.txt.in, jobs/stress.txt.in, jobs/suspend.txt.in: added jobs |
2115 | + to use the sleep_test_log_check script after s3/s4 tests. Modified current |
2116 | + s3/s4 tests to use the new None fail level for fwts_test |
2117 | + scripts/fwts_test: no longer fails on fwts errors if "-f none" is chosen. |
2118 | + Now it should only fail by manual indication if the actual sleep action |
2119 | + fails. (LP: #1169922) |
2120 | + * scripts/bluetooth_test: test no longer generates odd Broken Pipe error when |
2121 | + the dpkg bit verifies obexftp is installed (LP: #1169488) |
2122 | + * jobs/networking.txt.in: fixed networking/info jobs that were not being run |
2123 | + because $output was being resolved too early (LP: #1065983) |
2124 | + * scripts/memory_compare: cleaned up the output to be more explanatory and |
2125 | + easier to visually parse (LP: #1072666) |
2126 | + * jobs/miscellanea.txt.in: Added jobs for manual verification of PXE boot and |
2127 | + remote IPMI to improve server test coverage. |
2128 | + * jobs/led.txt.in: Modified Jobs: led/power, led/wlan, led/wlan-disabled. New |
2129 | + jobs: led/power-blink-suspend, led/suspend, led/mute |
2130 | + jobs/keys.txt.in: modified keys/wireless |
2131 | + * plugins/lock_prompt.py: added a lock release to cleanly clear lock on stop. |
2132 | + plugins/persist_prompt.py: promoted save to run before lock release. |
2133 | + checkbox/lib/fifo.py: trap OSError exception at close when the input/output |
2134 | + fifo fds disappear before fifo.close() can get to them. (LP: #115561) |
2135 | + * jobs/info.txt.in: fixed bad driver name in audio_codecs job (LP: #1165215) |
2136 | + * jobs/mediacard.txt.in: reduce test file size for MMC to 64MB (LP: #1167214) |
2137 | + * jobs/led.txt.in, jobs/suspend.txt.in: removed bits about WLAN LED flashing |
2138 | + from the WLAN jobs as that no longer happens on data tx/rx (LP: #1157606) |
2139 | + * jobs/power-management.txt.in: added manual reboot and shutdown tests for |
2140 | + server and Xen testing. Took the opportunity to correct punctuation in the |
2141 | + descriptions or other manual jobs. |
2142 | + jobs/virtualization.txt.in: added virtualization/xen_ok and |
2143 | + virtualization/xen_check_vms jobs for Xen testing |
2144 | + scripts/xen_test: added script to perform Xen testing |
2145 | + * jobs/various: Changed the jobs that use removable_storage_watcher to |
2146 | + generate ~256MB files to combat problems where the files are cached and not |
2147 | + written directly to devices during test. (LP: #1149213) |
2148 | + |
2149 | + |
2150 | + [ Sylvain Pineau ] |
2151 | + * jobs/suspend.txt.in, scripts/gpu_test: Remove the need of running the script |
2152 | + with the root user, restore the workspaces switch and the HTML5 video |
2153 | + playback ; remove the extra suspend/resume (LP: #1172851) |
2154 | + * checkbox/parsers/udevadm.py: Only filter devices without product AND vendor |
2155 | + information (LP: #1167733) |
2156 | + * debian/control: Added python3-mock as a build dependency. |
2157 | + * debian/rules: Clean __pycache__ directory after running scripts unit tests. |
2158 | + * scripts/gputest_benchmark: Added a wrapper for the Geeks3D GpuTest |
2159 | + benchmark. |
2160 | + * jobs/benchmarks.txt.in: Added the corresponding GpuTest jobs (Furmark, |
2161 | + Gimark and Tessmark) |
2162 | + |
2163 | + [ Brendan Donegan ] |
2164 | + * scripts/rendercheck_test - change nargs='+' to action='append' for blacklist |
2165 | + option so it works as expected. |
2166 | + jobs/rendercheck.txt.in - blacklist gradients test as it is known to produce |
2167 | + false positives. (LP: #1093718) |
2168 | + * plugins/hexr_transport.py - added plugin for submitting to HEXR and |
2169 | + certification based on certify_new_transport from checkbox-certification. |
2170 | + examples/checkbox-qt.ini - blacklisted hexr_transport as we won't use it |
2171 | + examples/checkbox-cli.ini - blacklisted hexr_transport as we won't use it |
2172 | + examples/checkbox-urwid.ini - blacklisted hexr_transport as we won't use it |
2173 | + * Add hidden 'Submit to HEXR' checkbox on submission screen, so that it can |
2174 | + be utilised in checkbox-certification. |
2175 | + * checkbox/user_interface.py - fixed keyword argument in show_entry. |
2176 | + checkbox_cli/cli_interface.py - return tuple as expected. (LP: #1173103) |
2177 | + * scripts/sources_test - modified script so that it takes sources list |
2178 | + location and repository list as arguments |
2179 | + * jobs/miscellanea.txt.in - provide REPOSITORY and SOURCES_LIST environment |
2180 | + variables to the sources_test script (LP: #1149288) |
2181 | + * Added mobile broadband tests and updated create_connection script to allow |
2182 | + creation of mobile broadband connections. |
2183 | + * scripts/rendercheck_test, scripts/graphics_stress_test, |
2184 | + jobs/rendercheck.txt.in, jobs/stress.txt.in - Allow blacklisting of |
2185 | + specific rendercheck tests and use this to exclude the 'repeat' test |
2186 | + from the set of rendercheck tests that run (LP: #1164566) |
2187 | + * jobs/benchmarks.txt.in - fix typo in command field of |
2188 | + benchmarks/graphics/globs job (LP: #1157615) |
2189 | + * data/whitelists/sru.whitelist - remove bluetooth_obex_before_suspend |
2190 | + as it is made redundant by browse/get/send (LP: #1155325) |
2191 | + |
2192 | + [ Po-Hsu Lin ] |
2193 | + * jobs/led.txt.in: Modified the description of led/power-blink-suspend test to |
2194 | + cover more cases. |
2195 | + jobs/suspend.txt.in: Modified the description of suspend/suspend_advanced |
2196 | + test cover more cases. (LP: #1172108) |
2197 | + * jobs/monitor.txt.in: Modified the description of dim_brightness test to make |
2198 | + it consistent with the code. (LP: #1170244) |
2199 | + |
2200 | + [ Daniel Manrique ] |
2201 | + * scripts/alsa_record_playback: Replaced alsasrc with autoaudiosrc |
2202 | + (LP: #1059544) |
2203 | + * checkbox/parsers/submission.py: Fixed incorrect context for memory |
2204 | + parsing, which resulted in absent memory information when parsing |
2205 | + xml files. |
2206 | + * scripts/glob_test: Fixed swapping of repetitions and time parameters. |
2207 | + jobs/benchmarks.txt.in: Set a 26 FPS threshold for passing globs |
2208 | + benchmark. |
2209 | + * Added sru.whitelist used to test stable release update kernels. |
2210 | + |
2211 | + [ Jeff Marcom ] |
2212 | + * scripts/network: added new script for testing and retrieving information for |
2213 | + network interfaces. |
2214 | + * configs,examples/network.cfg: added config file |
2215 | + for network test configuration and setup |
2216 | + * scripts/virtualization - Fixes issue where console terminal would |
2217 | + remain hijacked by child kvm process (LP: #1164028) |
2218 | + * jobs/input.txt.in: Added manual check job for accelerometer hardware |
2219 | + * scripts/virtualization: Fixed issue where specifying test timeout via |
2220 | + vitualization.cfg was pulled in as a string rather than integer. |
2221 | + * scripts/virtualization: Added classmethod for generating cloud |
2222 | + config data based on ISO in use |
2223 | + |
2224 | + [ Zygmunt Krynicki ] |
2225 | + * jobs/graphics.txt.in, jobs/suspend.txt.in: convert package resource |
2226 | + programs to be compatible with plainbox |
2227 | + * debian/control: add missing build dependency on python3-setuptools |
2228 | + * debian/control: add another missing build dependency on python-setuptools |
2229 | + (apparently needed because dh_auth_xxx) poke setup.py as python2) |
2230 | + |
2231 | + -- Daniel Manrique <roadmr@ubuntu.com> Thu, 09 May 2013 14:39:23 -0400 |
2232 | + |
2233 | checkbox (0.15.5) raring; urgency=low |
2234 | |
2235 | * New upstream release (LP: #1158798) |
2236 | |
2237 | === added file 'debian/checkbox-hw-collection.install' |
2238 | --- debian/checkbox-hw-collection.install 1970-01-01 00:00:00 +0000 |
2239 | +++ debian/checkbox-hw-collection.install 2013-05-09 20:11:45 +0000 |
2240 | @@ -0,0 +1,2 @@ |
2241 | +usr/bin/checkbox-hw-collection |
2242 | +usr/share/checkbox/examples/checkbox-hw-collection.ini |
2243 | |
2244 | === added file 'debian/checkbox-hw-collection.links' |
2245 | --- debian/checkbox-hw-collection.links 1970-01-01 00:00:00 +0000 |
2246 | +++ debian/checkbox-hw-collection.links 2013-05-09 20:11:45 +0000 |
2247 | @@ -0,0 +1,1 @@ |
2248 | +usr/share/man/man1/checkbox.1.gz usr/share/man/man1/checkbox-hw-collection.1.gz |
2249 | |
2250 | === added file 'debian/checkbox-hw-collection.postinst' |
2251 | --- debian/checkbox-hw-collection.postinst 1970-01-01 00:00:00 +0000 |
2252 | +++ debian/checkbox-hw-collection.postinst 2013-05-09 20:11:45 +0000 |
2253 | @@ -0,0 +1,7 @@ |
2254 | +#! /bin/sh -e |
2255 | + |
2256 | +base_package="checkbox" |
2257 | +. /usr/share/debconf/confmodule |
2258 | +. /usr/share/checkbox/install/postinst |
2259 | + |
2260 | +#DEBHELPER# |
2261 | |
2262 | === modified file 'debian/checkbox.install' |
2263 | --- debian/checkbox.install 2012-07-12 16:35:37 +0000 |
2264 | +++ debian/checkbox.install 2013-05-09 20:11:45 +0000 |
2265 | @@ -10,6 +10,7 @@ |
2266 | usr/share/checkbox/plugins/* |
2267 | usr/share/checkbox/report/* |
2268 | usr/share/checkbox/examples/checkbox.ini |
2269 | +usr/share/checkbox/examples/network.cfg |
2270 | usr/lib/python*/*-packages/checkbox/* |
2271 | usr/lib/checkbox/bin/* |
2272 | usr/share/apport/package-hooks/source_checkbox.py |
2273 | |
2274 | === modified file 'debian/control' |
2275 | --- debian/control 2013-01-09 21:20:03 +0000 |
2276 | +++ debian/control 2013-05-09 20:11:45 +0000 |
2277 | @@ -10,10 +10,13 @@ |
2278 | po-debconf, |
2279 | python, |
2280 | python-distutils-extra, |
2281 | + python-setuptools, |
2282 | + python3-setuptools, |
2283 | python3-all, |
2284 | python3-distutils-extra, |
2285 | python3-gi, |
2286 | python3-lxml, |
2287 | + python3-mock, |
2288 | python3-pkg-resources, |
2289 | qt4-qmake |
2290 | Vcs-Bzr: https://code.launchpad.net/~hardware-certification/checkbox/trunk |
2291 | @@ -41,6 +44,7 @@ |
2292 | Suggests: bonnie++, |
2293 | bootchart, |
2294 | checkbox-cli | checkbox-gtk, |
2295 | + curl, |
2296 | ethtool, |
2297 | fwts, |
2298 | git-core, |
2299 | @@ -110,3 +114,12 @@ |
2300 | results can then be sent to Launchpad. |
2301 | . |
2302 | This package provides a QT4 interface for answering tests. |
2303 | + |
2304 | +Package: checkbox-hw-collection |
2305 | +Architecture: any |
2306 | +Depends: checkbox (>= ${source:Version}), |
2307 | + ${misc:Depends} |
2308 | +Description: CLI tool for collecting HW information from a system |
2309 | + . |
2310 | + This package provides a tool for collecting hardware information from |
2311 | + a system and sending it to the HEXR hardware database. |
2312 | |
2313 | === modified file 'debian/po/ast.po' |
2314 | --- debian/po/ast.po 2013-03-22 16:14:06 +0000 |
2315 | +++ debian/po/ast.po 2013-05-09 20:11:45 +0000 |
2316 | @@ -6,17 +6,16 @@ |
2317 | msgid "" |
2318 | msgstr "" |
2319 | "Project-Id-Version: checkbox\n" |
2320 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2321 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2322 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2323 | "PO-Revision-Date: 2012-03-21 15:41+0000\n" |
2324 | "Last-Translator: Xandru <xandru@softastur.org>\n" |
2325 | "Language-Team: Asturian <ast@li.org>\n" |
2326 | -"Language: ast\n" |
2327 | "MIME-Version: 1.0\n" |
2328 | "Content-Type: text/plain; charset=UTF-8\n" |
2329 | "Content-Transfer-Encoding: 8bit\n" |
2330 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2331 | -"X-Generator: Launchpad (build 16506)\n" |
2332 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2333 | +"X-Generator: Launchpad (build 16580)\n" |
2334 | |
2335 | #. Type: string |
2336 | #. Description |
2337 | |
2338 | === modified file 'debian/po/cs.po' |
2339 | --- debian/po/cs.po 2013-03-22 16:14:06 +0000 |
2340 | +++ debian/po/cs.po 2013-05-09 20:11:45 +0000 |
2341 | @@ -6,17 +6,16 @@ |
2342 | msgid "" |
2343 | msgstr "" |
2344 | "Project-Id-Version: checkbox\n" |
2345 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2346 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2347 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2348 | "PO-Revision-Date: 2012-03-05 19:27+0000\n" |
2349 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2350 | "Language-Team: Czech <cs@li.org>\n" |
2351 | -"Language: cs\n" |
2352 | "MIME-Version: 1.0\n" |
2353 | "Content-Type: text/plain; charset=UTF-8\n" |
2354 | "Content-Transfer-Encoding: 8bit\n" |
2355 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2356 | -"X-Generator: Launchpad (build 16506)\n" |
2357 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2358 | +"X-Generator: Launchpad (build 16580)\n" |
2359 | |
2360 | #. Type: string |
2361 | #. Description |
2362 | |
2363 | === modified file 'debian/po/de.po' |
2364 | --- debian/po/de.po 2013-03-22 16:14:06 +0000 |
2365 | +++ debian/po/de.po 2013-05-09 20:11:45 +0000 |
2366 | @@ -6,17 +6,16 @@ |
2367 | msgid "" |
2368 | msgstr "" |
2369 | "Project-Id-Version: checkbox\n" |
2370 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2371 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2372 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2373 | "PO-Revision-Date: 2012-10-06 22:02+0000\n" |
2374 | "Last-Translator: Dennis Baudys <Unknown>\n" |
2375 | "Language-Team: German <de@li.org>\n" |
2376 | -"Language: de\n" |
2377 | "MIME-Version: 1.0\n" |
2378 | "Content-Type: text/plain; charset=UTF-8\n" |
2379 | "Content-Transfer-Encoding: 8bit\n" |
2380 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2381 | -"X-Generator: Launchpad (build 16506)\n" |
2382 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2383 | +"X-Generator: Launchpad (build 16580)\n" |
2384 | |
2385 | #. Type: string |
2386 | #. Description |
2387 | @@ -204,7 +203,8 @@ |
2388 | #. Description |
2389 | #: ../checkbox.templates:15001 |
2390 | msgid "The SSID of the 802.11n router with open security." |
2391 | -msgstr "Die SSID des 802.11n-Routers mit »Open«-Sicherheitsmodell (unsicher)." |
2392 | +msgstr "" |
2393 | +"Die SSID des 802.11n-Routers mit »Open«-Sicherheitsmodell (unsicher)." |
2394 | |
2395 | #. Type: string |
2396 | #. Description |
2397 | |
2398 | === modified file 'debian/po/en_AU.po' |
2399 | --- debian/po/en_AU.po 2013-03-22 16:14:06 +0000 |
2400 | +++ debian/po/en_AU.po 2013-05-09 20:11:45 +0000 |
2401 | @@ -6,17 +6,16 @@ |
2402 | msgid "" |
2403 | msgstr "" |
2404 | "Project-Id-Version: checkbox\n" |
2405 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2406 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2407 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2408 | "PO-Revision-Date: 2011-07-21 02:39+0000\n" |
2409 | "Last-Translator: Jared Norris <jrnorris@gmail.com>\n" |
2410 | "Language-Team: English (Australia) <en_AU@li.org>\n" |
2411 | -"Language: \n" |
2412 | "MIME-Version: 1.0\n" |
2413 | "Content-Type: text/plain; charset=UTF-8\n" |
2414 | "Content-Transfer-Encoding: 8bit\n" |
2415 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2416 | -"X-Generator: Launchpad (build 16506)\n" |
2417 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2418 | +"X-Generator: Launchpad (build 16580)\n" |
2419 | |
2420 | #. Type: string |
2421 | #. Description |
2422 | |
2423 | === modified file 'debian/po/en_GB.po' |
2424 | --- debian/po/en_GB.po 2013-03-22 16:14:06 +0000 |
2425 | +++ debian/po/en_GB.po 2013-05-09 20:11:45 +0000 |
2426 | @@ -6,17 +6,16 @@ |
2427 | msgid "" |
2428 | msgstr "" |
2429 | "Project-Id-Version: checkbox\n" |
2430 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2431 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2432 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2433 | "PO-Revision-Date: 2012-09-26 09:33+0000\n" |
2434 | "Last-Translator: Biffaboy <Unknown>\n" |
2435 | "Language-Team: English (United Kingdom) <en_GB@li.org>\n" |
2436 | -"Language: \n" |
2437 | "MIME-Version: 1.0\n" |
2438 | "Content-Type: text/plain; charset=UTF-8\n" |
2439 | "Content-Transfer-Encoding: 8bit\n" |
2440 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2441 | -"X-Generator: Launchpad (build 16506)\n" |
2442 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2443 | +"X-Generator: Launchpad (build 16580)\n" |
2444 | |
2445 | #. Type: string |
2446 | #. Description |
2447 | |
2448 | === modified file 'debian/po/es.po' |
2449 | --- debian/po/es.po 2013-03-22 16:14:06 +0000 |
2450 | +++ debian/po/es.po 2013-05-09 20:11:45 +0000 |
2451 | @@ -6,17 +6,16 @@ |
2452 | msgid "" |
2453 | msgstr "" |
2454 | "Project-Id-Version: checkbox\n" |
2455 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2456 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2457 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2458 | "PO-Revision-Date: 2012-09-21 18:40+0000\n" |
2459 | "Last-Translator: Daniel Manrique <daniel.manrique@canonical.com>\n" |
2460 | "Language-Team: Spanish <es@li.org>\n" |
2461 | -"Language: es\n" |
2462 | "MIME-Version: 1.0\n" |
2463 | "Content-Type: text/plain; charset=UTF-8\n" |
2464 | "Content-Transfer-Encoding: 8bit\n" |
2465 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2466 | -"X-Generator: Launchpad (build 16506)\n" |
2467 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2468 | +"X-Generator: Launchpad (build 16580)\n" |
2469 | |
2470 | #. Type: string |
2471 | #. Description |
2472 | @@ -42,7 +41,8 @@ |
2473 | #. Description |
2474 | #: ../checkbox.templates:2001 |
2475 | msgid "List of jobs to run when testing with checkbox." |
2476 | -msgstr "Lista de tareas a ejecutar mientras se realizan pruebas con checkbox." |
2477 | +msgstr "" |
2478 | +"Lista de tareas a ejecutar mientras se realizan pruebas con checkbox." |
2479 | |
2480 | #. Type: string |
2481 | #. Description |
2482 | @@ -151,7 +151,8 @@ |
2483 | #. Description |
2484 | #: ../checkbox.templates:11001 |
2485 | msgid "The PSK of the 802.11b/g router with WPA security." |
2486 | -msgstr "Llave de encriptación (PSK) del enrutador 802.11b/g con seguridad WPA." |
2487 | +msgstr "" |
2488 | +"Llave de encriptación (PSK) del enrutador 802.11b/g con seguridad WPA." |
2489 | |
2490 | #. Type: string |
2491 | #. Description |
2492 | |
2493 | === modified file 'debian/po/fr.po' |
2494 | --- debian/po/fr.po 2013-03-22 16:14:06 +0000 |
2495 | +++ debian/po/fr.po 2013-05-09 20:11:45 +0000 |
2496 | @@ -6,17 +6,16 @@ |
2497 | msgid "" |
2498 | msgstr "" |
2499 | "Project-Id-Version: checkbox\n" |
2500 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2501 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2502 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2503 | "PO-Revision-Date: 2012-09-25 09:16+0000\n" |
2504 | "Last-Translator: Sylvie Gallet <Unknown>\n" |
2505 | "Language-Team: French <fr@li.org>\n" |
2506 | -"Language: fr\n" |
2507 | "MIME-Version: 1.0\n" |
2508 | "Content-Type: text/plain; charset=UTF-8\n" |
2509 | "Content-Transfer-Encoding: 8bit\n" |
2510 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2511 | -"X-Generator: Launchpad (build 16506)\n" |
2512 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2513 | +"X-Generator: Launchpad (build 16580)\n" |
2514 | |
2515 | #. Type: string |
2516 | #. Description |
2517 | |
2518 | === modified file 'debian/po/gl.po' |
2519 | --- debian/po/gl.po 2013-03-22 16:14:06 +0000 |
2520 | +++ debian/po/gl.po 2013-05-09 20:11:45 +0000 |
2521 | @@ -6,17 +6,16 @@ |
2522 | msgid "" |
2523 | msgstr "" |
2524 | "Project-Id-Version: checkbox\n" |
2525 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2526 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2527 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2528 | "PO-Revision-Date: 2012-10-03 21:33+0000\n" |
2529 | "Last-Translator: Antón Méixome <meixome@gmail.com>\n" |
2530 | "Language-Team: Galician <gl@li.org>\n" |
2531 | -"Language: gl\n" |
2532 | "MIME-Version: 1.0\n" |
2533 | "Content-Type: text/plain; charset=UTF-8\n" |
2534 | "Content-Transfer-Encoding: 8bit\n" |
2535 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2536 | -"X-Generator: Launchpad (build 16506)\n" |
2537 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2538 | +"X-Generator: Launchpad (build 16580)\n" |
2539 | |
2540 | #. Type: string |
2541 | #. Description |
2542 | |
2543 | === modified file 'debian/po/he.po' |
2544 | --- debian/po/he.po 2013-03-22 16:14:06 +0000 |
2545 | +++ debian/po/he.po 2013-05-09 20:11:45 +0000 |
2546 | @@ -6,17 +6,16 @@ |
2547 | msgid "" |
2548 | msgstr "" |
2549 | "Project-Id-Version: checkbox\n" |
2550 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2551 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2552 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2553 | "PO-Revision-Date: 2011-07-26 09:45+0000\n" |
2554 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2555 | "Language-Team: Hebrew <he@li.org>\n" |
2556 | -"Language: he\n" |
2557 | "MIME-Version: 1.0\n" |
2558 | "Content-Type: text/plain; charset=UTF-8\n" |
2559 | "Content-Transfer-Encoding: 8bit\n" |
2560 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2561 | -"X-Generator: Launchpad (build 16506)\n" |
2562 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2563 | +"X-Generator: Launchpad (build 16580)\n" |
2564 | |
2565 | #. Type: string |
2566 | #. Description |
2567 | |
2568 | === modified file 'debian/po/hu.po' |
2569 | --- debian/po/hu.po 2013-03-22 16:14:06 +0000 |
2570 | +++ debian/po/hu.po 2013-05-09 20:11:45 +0000 |
2571 | @@ -6,17 +6,16 @@ |
2572 | msgid "" |
2573 | msgstr "" |
2574 | "Project-Id-Version: checkbox\n" |
2575 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2576 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2577 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2578 | "PO-Revision-Date: 2011-07-18 12:57+0000\n" |
2579 | "Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n" |
2580 | "Language-Team: Hungarian <hu@li.org>\n" |
2581 | -"Language: hu\n" |
2582 | "MIME-Version: 1.0\n" |
2583 | "Content-Type: text/plain; charset=UTF-8\n" |
2584 | "Content-Transfer-Encoding: 8bit\n" |
2585 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2586 | -"X-Generator: Launchpad (build 16506)\n" |
2587 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2588 | +"X-Generator: Launchpad (build 16580)\n" |
2589 | |
2590 | #. Type: string |
2591 | #. Description |
2592 | |
2593 | === modified file 'debian/po/id.po' |
2594 | --- debian/po/id.po 2013-03-22 16:14:06 +0000 |
2595 | +++ debian/po/id.po 2013-05-09 20:11:45 +0000 |
2596 | @@ -6,17 +6,16 @@ |
2597 | msgid "" |
2598 | msgstr "" |
2599 | "Project-Id-Version: checkbox\n" |
2600 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2601 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2602 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2603 | "PO-Revision-Date: 2012-08-13 10:30+0000\n" |
2604 | "Last-Translator: Mei Hua Song <Unknown>\n" |
2605 | "Language-Team: Indonesian <id@li.org>\n" |
2606 | -"Language: id\n" |
2607 | "MIME-Version: 1.0\n" |
2608 | "Content-Type: text/plain; charset=UTF-8\n" |
2609 | "Content-Transfer-Encoding: 8bit\n" |
2610 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2611 | -"X-Generator: Launchpad (build 16506)\n" |
2612 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2613 | +"X-Generator: Launchpad (build 16580)\n" |
2614 | |
2615 | #. Type: string |
2616 | #. Description |
2617 | |
2618 | === modified file 'debian/po/it.po' |
2619 | --- debian/po/it.po 2013-03-22 16:14:06 +0000 |
2620 | +++ debian/po/it.po 2013-05-09 20:11:45 +0000 |
2621 | @@ -6,17 +6,16 @@ |
2622 | msgid "" |
2623 | msgstr "" |
2624 | "Project-Id-Version: checkbox\n" |
2625 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2626 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2627 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2628 | "PO-Revision-Date: 2011-09-22 14:07+0000\n" |
2629 | "Last-Translator: Sergio Zanchetta <primes2h@ubuntu.com>\n" |
2630 | "Language-Team: Italian <it@li.org>\n" |
2631 | -"Language: it\n" |
2632 | "MIME-Version: 1.0\n" |
2633 | "Content-Type: text/plain; charset=UTF-8\n" |
2634 | "Content-Transfer-Encoding: 8bit\n" |
2635 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2636 | -"X-Generator: Launchpad (build 16506)\n" |
2637 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2638 | +"X-Generator: Launchpad (build 16580)\n" |
2639 | |
2640 | #. Type: string |
2641 | #. Description |
2642 | |
2643 | === modified file 'debian/po/ja.po' |
2644 | --- debian/po/ja.po 2013-03-22 16:14:06 +0000 |
2645 | +++ debian/po/ja.po 2013-05-09 20:11:45 +0000 |
2646 | @@ -6,17 +6,16 @@ |
2647 | msgid "" |
2648 | msgstr "" |
2649 | "Project-Id-Version: checkbox\n" |
2650 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2651 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2652 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2653 | "PO-Revision-Date: 2011-07-25 17:03+0000\n" |
2654 | "Last-Translator: Fumihito YOSHIDA <hito@kugutsu.org>\n" |
2655 | "Language-Team: Japanese <ja@li.org>\n" |
2656 | -"Language: ja\n" |
2657 | "MIME-Version: 1.0\n" |
2658 | "Content-Type: text/plain; charset=UTF-8\n" |
2659 | "Content-Transfer-Encoding: 8bit\n" |
2660 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2661 | -"X-Generator: Launchpad (build 16506)\n" |
2662 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2663 | +"X-Generator: Launchpad (build 16580)\n" |
2664 | |
2665 | #. Type: string |
2666 | #. Description |
2667 | |
2668 | === modified file 'debian/po/nl.po' |
2669 | --- debian/po/nl.po 2013-03-22 16:14:06 +0000 |
2670 | +++ debian/po/nl.po 2013-05-09 20:11:45 +0000 |
2671 | @@ -6,17 +6,16 @@ |
2672 | msgid "" |
2673 | msgstr "" |
2674 | "Project-Id-Version: checkbox\n" |
2675 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2676 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2677 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2678 | "PO-Revision-Date: 2011-08-17 12:02+0000\n" |
2679 | "Last-Translator: Rachid <Unknown>\n" |
2680 | "Language-Team: Dutch <nl@li.org>\n" |
2681 | -"Language: nl\n" |
2682 | "MIME-Version: 1.0\n" |
2683 | "Content-Type: text/plain; charset=UTF-8\n" |
2684 | "Content-Transfer-Encoding: 8bit\n" |
2685 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2686 | -"X-Generator: Launchpad (build 16506)\n" |
2687 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2688 | +"X-Generator: Launchpad (build 16580)\n" |
2689 | |
2690 | #. Type: string |
2691 | #. Description |
2692 | |
2693 | === modified file 'debian/po/oc.po' |
2694 | --- debian/po/oc.po 2013-03-22 16:14:06 +0000 |
2695 | +++ debian/po/oc.po 2013-05-09 20:11:45 +0000 |
2696 | @@ -6,17 +6,16 @@ |
2697 | msgid "" |
2698 | msgstr "" |
2699 | "Project-Id-Version: checkbox\n" |
2700 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2701 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2702 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2703 | "PO-Revision-Date: 2012-02-24 07:45+0000\n" |
2704 | "Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n" |
2705 | "Language-Team: Occitan (post 1500) <oc@li.org>\n" |
2706 | -"Language: \n" |
2707 | "MIME-Version: 1.0\n" |
2708 | "Content-Type: text/plain; charset=UTF-8\n" |
2709 | "Content-Transfer-Encoding: 8bit\n" |
2710 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2711 | -"X-Generator: Launchpad (build 16506)\n" |
2712 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2713 | +"X-Generator: Launchpad (build 16580)\n" |
2714 | |
2715 | #. Type: string |
2716 | #. Description |
2717 | |
2718 | === modified file 'debian/po/pl.po' |
2719 | --- debian/po/pl.po 2013-03-22 16:14:06 +0000 |
2720 | +++ debian/po/pl.po 2013-05-09 20:11:45 +0000 |
2721 | @@ -6,17 +6,16 @@ |
2722 | msgid "" |
2723 | msgstr "" |
2724 | "Project-Id-Version: checkbox\n" |
2725 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2726 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2727 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2728 | "PO-Revision-Date: 2011-07-18 21:11+0000\n" |
2729 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2730 | "Language-Team: Polish <pl@li.org>\n" |
2731 | -"Language: pl\n" |
2732 | "MIME-Version: 1.0\n" |
2733 | "Content-Type: text/plain; charset=UTF-8\n" |
2734 | "Content-Transfer-Encoding: 8bit\n" |
2735 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2736 | -"X-Generator: Launchpad (build 16506)\n" |
2737 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2738 | +"X-Generator: Launchpad (build 16580)\n" |
2739 | |
2740 | #. Type: string |
2741 | #. Description |
2742 | |
2743 | === modified file 'debian/po/pt_BR.po' |
2744 | --- debian/po/pt_BR.po 2013-03-22 16:14:06 +0000 |
2745 | +++ debian/po/pt_BR.po 2013-05-09 20:11:45 +0000 |
2746 | @@ -6,17 +6,16 @@ |
2747 | msgid "" |
2748 | msgstr "" |
2749 | "Project-Id-Version: checkbox\n" |
2750 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2751 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2752 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2753 | "PO-Revision-Date: 2012-05-12 03:33+0000\n" |
2754 | "Last-Translator: eniomarconcini <Unknown>\n" |
2755 | "Language-Team: Brazilian Portuguese <pt_BR@li.org>\n" |
2756 | -"Language: pt_BR\n" |
2757 | "MIME-Version: 1.0\n" |
2758 | "Content-Type: text/plain; charset=UTF-8\n" |
2759 | "Content-Transfer-Encoding: 8bit\n" |
2760 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2761 | -"X-Generator: Launchpad (build 16506)\n" |
2762 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2763 | +"X-Generator: Launchpad (build 16580)\n" |
2764 | |
2765 | #. Type: string |
2766 | #. Description |
2767 | |
2768 | === modified file 'debian/po/ro.po' |
2769 | --- debian/po/ro.po 2013-03-22 16:14:06 +0000 |
2770 | +++ debian/po/ro.po 2013-05-09 20:11:45 +0000 |
2771 | @@ -6,17 +6,16 @@ |
2772 | msgid "" |
2773 | msgstr "" |
2774 | "Project-Id-Version: checkbox\n" |
2775 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2776 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2777 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2778 | "PO-Revision-Date: 2011-10-27 20:38+0000\n" |
2779 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2780 | "Language-Team: Romanian <ro@li.org>\n" |
2781 | -"Language: ro\n" |
2782 | "MIME-Version: 1.0\n" |
2783 | "Content-Type: text/plain; charset=UTF-8\n" |
2784 | "Content-Transfer-Encoding: 8bit\n" |
2785 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2786 | -"X-Generator: Launchpad (build 16506)\n" |
2787 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2788 | +"X-Generator: Launchpad (build 16580)\n" |
2789 | |
2790 | #. Type: string |
2791 | #. Description |
2792 | |
2793 | === modified file 'debian/po/ru.po' |
2794 | --- debian/po/ru.po 2013-03-22 16:14:06 +0000 |
2795 | +++ debian/po/ru.po 2013-05-09 20:11:45 +0000 |
2796 | @@ -6,17 +6,16 @@ |
2797 | msgid "" |
2798 | msgstr "" |
2799 | "Project-Id-Version: checkbox\n" |
2800 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2801 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2802 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2803 | "PO-Revision-Date: 2011-07-18 12:09+0000\n" |
2804 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2805 | "Language-Team: Russian <ru@li.org>\n" |
2806 | -"Language: ru\n" |
2807 | "MIME-Version: 1.0\n" |
2808 | "Content-Type: text/plain; charset=UTF-8\n" |
2809 | "Content-Transfer-Encoding: 8bit\n" |
2810 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2811 | -"X-Generator: Launchpad (build 16506)\n" |
2812 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2813 | +"X-Generator: Launchpad (build 16580)\n" |
2814 | |
2815 | #. Type: string |
2816 | #. Description |
2817 | |
2818 | === modified file 'debian/po/tr.po' |
2819 | --- debian/po/tr.po 2013-03-22 16:14:06 +0000 |
2820 | +++ debian/po/tr.po 2013-05-09 20:11:45 +0000 |
2821 | @@ -6,17 +6,16 @@ |
2822 | msgid "" |
2823 | msgstr "" |
2824 | "Project-Id-Version: checkbox\n" |
2825 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2826 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2827 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2828 | "PO-Revision-Date: 2012-05-18 12:51+0000\n" |
2829 | "Last-Translator: Hasan Yılmaz <iletisim@hasanyilmaz.net>\n" |
2830 | "Language-Team: Turkish <tr@li.org>\n" |
2831 | -"Language: tr\n" |
2832 | "MIME-Version: 1.0\n" |
2833 | "Content-Type: text/plain; charset=UTF-8\n" |
2834 | "Content-Transfer-Encoding: 8bit\n" |
2835 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2836 | -"X-Generator: Launchpad (build 16506)\n" |
2837 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2838 | +"X-Generator: Launchpad (build 16580)\n" |
2839 | |
2840 | #. Type: string |
2841 | #. Description |
2842 | |
2843 | === modified file 'debian/po/uk.po' |
2844 | --- debian/po/uk.po 2013-03-22 16:14:06 +0000 |
2845 | +++ debian/po/uk.po 2013-05-09 20:11:45 +0000 |
2846 | @@ -6,17 +6,16 @@ |
2847 | msgid "" |
2848 | msgstr "" |
2849 | "Project-Id-Version: checkbox\n" |
2850 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2851 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2852 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2853 | "PO-Revision-Date: 2012-01-21 07:24+0000\n" |
2854 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2855 | "Language-Team: Ukrainian <uk@li.org>\n" |
2856 | -"Language: uk\n" |
2857 | "MIME-Version: 1.0\n" |
2858 | "Content-Type: text/plain; charset=UTF-8\n" |
2859 | "Content-Transfer-Encoding: 8bit\n" |
2860 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2861 | -"X-Generator: Launchpad (build 16506)\n" |
2862 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2863 | +"X-Generator: Launchpad (build 16580)\n" |
2864 | |
2865 | #. Type: string |
2866 | #. Description |
2867 | |
2868 | === modified file 'debian/po/zh_CN.po' |
2869 | --- debian/po/zh_CN.po 2013-03-22 16:14:06 +0000 |
2870 | +++ debian/po/zh_CN.po 2013-05-09 20:11:45 +0000 |
2871 | @@ -6,17 +6,16 @@ |
2872 | msgid "" |
2873 | msgstr "" |
2874 | "Project-Id-Version: checkbox\n" |
2875 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2876 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2877 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2878 | "PO-Revision-Date: 2012-05-09 02:09+0000\n" |
2879 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2880 | "Language-Team: Chinese (Simplified) <zh_CN@li.org>\n" |
2881 | -"Language: \n" |
2882 | "MIME-Version: 1.0\n" |
2883 | "Content-Type: text/plain; charset=UTF-8\n" |
2884 | "Content-Transfer-Encoding: 8bit\n" |
2885 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2886 | -"X-Generator: Launchpad (build 16506)\n" |
2887 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2888 | +"X-Generator: Launchpad (build 16580)\n" |
2889 | |
2890 | #. Type: string |
2891 | #. Description |
2892 | |
2893 | === modified file 'debian/po/zh_TW.po' |
2894 | --- debian/po/zh_TW.po 2013-03-22 16:14:06 +0000 |
2895 | +++ debian/po/zh_TW.po 2013-05-09 20:11:45 +0000 |
2896 | @@ -6,17 +6,16 @@ |
2897 | msgid "" |
2898 | msgstr "" |
2899 | "Project-Id-Version: checkbox\n" |
2900 | -"Report-Msgid-Bugs-To: checkbox@packages.debian.org\n" |
2901 | +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2902 | "POT-Creation-Date: 2012-09-21 11:25-0400\n" |
2903 | "PO-Revision-Date: 2011-07-26 15:03+0000\n" |
2904 | "Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n" |
2905 | "Language-Team: Chinese (Traditional) <zh_TW@li.org>\n" |
2906 | -"Language: \n" |
2907 | "MIME-Version: 1.0\n" |
2908 | "Content-Type: text/plain; charset=UTF-8\n" |
2909 | "Content-Transfer-Encoding: 8bit\n" |
2910 | -"X-Launchpad-Export-Date: 2013-02-23 04:42+0000\n" |
2911 | -"X-Generator: Launchpad (build 16506)\n" |
2912 | +"X-Launchpad-Export-Date: 2013-05-01 04:40+0000\n" |
2913 | +"X-Generator: Launchpad (build 16580)\n" |
2914 | |
2915 | #. Type: string |
2916 | #. Description |
2917 | |
2918 | === modified file 'debian/rules' |
2919 | --- debian/rules 2012-10-11 20:12:47 +0000 |
2920 | +++ debian/rules 2013-05-09 20:11:45 +0000 |
2921 | @@ -20,6 +20,7 @@ |
2922 | # drop LD_PRELOAD to avoid running under fakeroot; drop TMPDIR to work |
2923 | # around LP#972324 (set by autopkgtest) |
2924 | env -u LD_PRELOAD -u TMPDIR CHECKBOX_PACKAGING=1 ./test |
2925 | + rm -rf scripts/__pycache__ |
2926 | endif |
2927 | |
2928 | override_dh_installdeb: |
2929 | |
2930 | === modified file 'examples/checkbox-cli.ini' |
2931 | --- examples/checkbox-cli.ini 2008-09-01 01:32:14 +0000 |
2932 | +++ examples/checkbox-cli.ini 2013-05-09 20:11:45 +0000 |
2933 | @@ -12,3 +12,6 @@ |
2934 | # Class implementing the UserInterface interface. |
2935 | interface_class = CLIInterface |
2936 | |
2937 | +[checkbox/plugins] |
2938 | + |
2939 | +blacklist = hexr_prompt hexr_transport |
2940 | |
2941 | === added file 'examples/checkbox-hw-collection.ini' |
2942 | --- examples/checkbox-hw-collection.ini 1970-01-01 00:00:00 +0000 |
2943 | +++ examples/checkbox-hw-collection.ini 2013-05-09 20:11:45 +0000 |
2944 | @@ -0,0 +1,18 @@ |
2945 | +[DEFAULT] |
2946 | + |
2947 | +# Space separated list of files to include as a dependency |
2948 | +includes = %(checkbox_share)s/configs/checkbox.ini |
2949 | + |
2950 | +[checkbox/plugins/user_interface] |
2951 | + |
2952 | +# Module where the user interface implementation is defined. |
2953 | +interface_module = checkbox.user_interface |
2954 | + |
2955 | +# Class implementing the UserInterface interface. |
2956 | +interface_class = UserInterface |
2957 | + |
2958 | +[checkbox/plugins/intro_prompt] |
2959 | +welcome_text = Gathering hardware information. You may be prompted for your sudo password. This process will take approximately 20 seconds and you will be provided with a URL through which you can confirm and register your hardware submission. |
2960 | + |
2961 | +[checkbox/plugins] |
2962 | +blacklist = launchpad_prompt launchpad_exchange final_prompt |
2963 | |
2964 | === modified file 'examples/checkbox-qt.ini' |
2965 | --- examples/checkbox-qt.ini 2012-05-16 11:36:56 +0000 |
2966 | +++ examples/checkbox-qt.ini 2013-05-09 20:11:45 +0000 |
2967 | @@ -14,3 +14,7 @@ |
2968 | |
2969 | # Path where qt files are stored. |
2970 | data_path = %(checkbox_share)s/qt |
2971 | + |
2972 | +[checkbox/plugins] |
2973 | + |
2974 | +blacklist = hexr_prompt hexr_transport |
2975 | |
2976 | === modified file 'examples/checkbox-urwid.ini' |
2977 | --- examples/checkbox-urwid.ini 2010-05-20 09:00:22 +0000 |
2978 | +++ examples/checkbox-urwid.ini 2013-05-09 20:11:45 +0000 |
2979 | @@ -12,3 +12,6 @@ |
2980 | # Class implementing the UserInterface interface. |
2981 | interface_class = UrwidInterface |
2982 | |
2983 | +[checkbox/plugins] |
2984 | + |
2985 | +blacklist = hexr_prompt hexr_transport |
2986 | |
2987 | === added file 'examples/network.cfg' |
2988 | --- examples/network.cfg 1970-01-01 00:00:00 +0000 |
2989 | +++ examples/network.cfg 2013-05-09 20:11:45 +0000 |
2990 | @@ -0,0 +1,4 @@ |
2991 | +[FTP] |
2992 | +Target: canonical.com |
2993 | +User: anonymous |
2994 | +Pass: |
2995 | |
2996 | === modified file 'jobs/audio.txt.in' |
2997 | --- jobs/audio.txt.in 2012-12-03 22:24:40 +0000 |
2998 | +++ jobs/audio.txt.in 2013-05-09 20:11:45 +0000 |
2999 | @@ -68,6 +68,7 @@ |
3000 | device.category == 'AUDIO' |
3001 | package.name == 'alsa-base' |
3002 | package.name == 'pulseaudio-utils' |
3003 | + package.name == 'gstreamer1.0-plugins-good' or package.name == 'gstreamer0.10-plugins-good' |
3004 | command: audio_settings store --file=$CHECKBOX_DATA/pulseaudio_settings; audio_settings set --device=pci --volume=50; alsa_record_playback; EXIT_CODE=$?; audio_settings restore --file=$CHECKBOX_DATA/pulseaudio_settings; exit $EXIT_CODE |
3005 | _description: |
3006 | PURPOSE: |
3007 | @@ -86,6 +87,7 @@ |
3008 | device.category == 'AUDIO' |
3009 | package.name == 'alsa-base' |
3010 | package.name == 'pulseaudio-utils' |
3011 | + package.name == 'gstreamer1.0-plugins-good' or package.name == 'gstreamer0.10-plugins-good' |
3012 | command: audio_settings store --file=$CHECKBOX_DATA/pulseaudio_settings; audio_settings set --device=pci --volume=50; alsa_record_playback; EXIT_CODE=$?; audio_settings restore --file=$CHECKBOX_DATA/pulseaudio_settings; exit $EXIT_CODE |
3013 | _description: |
3014 | PURPOSE: |
3015 | @@ -103,6 +105,7 @@ |
3016 | device.category == 'AUDIO' |
3017 | package.name == 'alsa-base' |
3018 | package.name == 'pulseaudio-utils' |
3019 | + package.name == 'gstreamer1.0-plugins-good' or package.name == 'gstreamer0.10-plugins-good' |
3020 | command: audio_settings store --file=$CHECKBOX_DATA/pulseaudio_settings; audio_settings set --device=usb --volume=50; alsa_record_playback; EXIT_CODE=$?; audio_settings restore --file=$CHECKBOX_DATA/pulseaudio_settings; exit $EXIT_CODE |
3021 | _description: |
3022 | PURPOSE: |
3023 | @@ -202,6 +205,7 @@ |
3024 | device.category == 'AUDIO' |
3025 | package.name == 'alsa-base' |
3026 | package.name == 'pulseaudio-utils' |
3027 | + package.name == 'gstreamer1.0-plugins-good' or package.name == 'gstreamer0.10-plugins-good' |
3028 | command: audio_settings store --file=$CHECKBOX_DATA/pulseaudio_settings; audio_settings set --device=pci --volume=50; alsa_record_playback; EXIT_CODE=$?; audio_settings restore --file=$CHECKBOX_DATA/pulseaudio_settings; exit $EXIT_CODE |
3029 | _description: |
3030 | PURPOSE: |
3031 | |
3032 | === modified file 'jobs/benchmarks.txt.in' |
3033 | --- jobs/benchmarks.txt.in 2012-10-09 15:21:35 +0000 |
3034 | +++ jobs/benchmarks.txt.in 2013-05-09 20:11:45 +0000 |
3035 | @@ -83,6 +83,14 @@ |
3036 | _description: Run GLmark2 benchmark |
3037 | |
3038 | plugin: shell |
3039 | +name: benchmarks/graphics/globs |
3040 | +requires: |
3041 | + package.name == 'globs' |
3042 | + cpuinfo.platform in ("i386", "x86_64") |
3043 | +command: glob_test --min-fps=26 --ignore-problems |
3044 | +_description: Run globs benchmark |
3045 | + |
3046 | +plugin: shell |
3047 | name: benchmarks/graphics/unigine-sanctuary |
3048 | requires: package.name == 'phoronix-test-suite' |
3049 | command: pts_run unigine-sanctuary |
3050 | @@ -213,3 +221,63 @@ |
3051 | requires: package.name == 'sysstat' |
3052 | command: iostat -x -m 1 10 | python3 -c 'import sys, re; lines="".join(sys.stdin.readlines()); l=[float(n) for n in (re.findall("util\n.*?(\S+)\n", lines))]; print(sum(l)/len(l),"%")' |
3053 | _description: Disk utilization on an idle system. |
3054 | + |
3055 | +plugin: shell |
3056 | +name: benchmarks/graphics/gputest_furmark_fullscreen_1920x1080 |
3057 | +requires: |
3058 | + package.name == 'gputest' |
3059 | + cpuinfo.platform == 'x86_64' |
3060 | +command: gputest_benchmark fur --width 1920 --height 1080 -f |
3061 | +_description: |
3062 | + Run a stress test based on FurMark (OpenGL 2.1 or 3.2) |
3063 | + Fullscreen 1920x1080 no antialiasing |
3064 | + |
3065 | +plugin: shell |
3066 | +name: benchmarks/graphics/gputest_furmark_windowed_1024x640 |
3067 | +requires: |
3068 | + package.name == 'gputest' |
3069 | + cpuinfo.platform == 'x86_64' |
3070 | +command: gputest_benchmark fur |
3071 | +_description: |
3072 | + Run a stress test based on FurMark (OpenGL 2.1 or 3.2) |
3073 | + Windowed 1024x640 no antialiasing |
3074 | + |
3075 | +plugin: shell |
3076 | +name: benchmarks/graphics/gputest_gimark_fullscreen_1920x1080 |
3077 | +requires: |
3078 | + package.name == 'gputest' |
3079 | + cpuinfo.platform == 'x86_64' |
3080 | +command: gputest_benchmark gi --width 1920 --height 1080 -f |
3081 | +_description: |
3082 | + Run GiMark, a geometry instancing test (OpenGL 3.3) |
3083 | + Fullscreen 1920x1080 no antialiasing |
3084 | + |
3085 | +plugin: shell |
3086 | +name: benchmarks/graphics/gputest_gimark_windowed_1024x640 |
3087 | +requires: |
3088 | + package.name == 'gputest' |
3089 | + cpuinfo.platform == 'x86_64' |
3090 | +command: gputest_benchmark gi |
3091 | +_description: |
3092 | + Run GiMark, a geometry instancing test (OpenGL 3.3) |
3093 | + Windowed 1024x640 no antialiasing |
3094 | + |
3095 | +plugin: shell |
3096 | +name: benchmarks/graphics/gputest_tessmark_fullscreen_1920x1080 |
3097 | +requires: |
3098 | + package.name == 'gputest' |
3099 | + cpuinfo.platform == 'x86_64' |
3100 | +command: gputest_benchmark tess --width 1920 --height 1080 -f |
3101 | +_description: |
3102 | + Run a tessellation test based on TessMark (OpenGL 4.0) |
3103 | + Fullscreen 1920x1080 no antialiasing |
3104 | + |
3105 | +plugin: shell |
3106 | +name: benchmarks/graphics/gputest_tessmark_windowed_1024x640 |
3107 | +requires: |
3108 | + package.name == 'gputest' |
3109 | + cpuinfo.platform == 'x86_64' |
3110 | +command: gputest_benchmark tess |
3111 | +_description: |
3112 | + Run a tessellation test based on TessMark (OpenGL 4.0) |
3113 | + Windowed 1024x640 no antialiasing |
3114 | |
3115 | === modified file 'jobs/camera.txt.in' |
3116 | --- jobs/camera.txt.in 2012-11-06 17:11:49 +0000 |
3117 | +++ jobs/camera.txt.in 2013-05-09 20:11:45 +0000 |
3118 | @@ -9,7 +9,6 @@ |
3119 | name: camera/display |
3120 | depends: camera/detect |
3121 | requires: |
3122 | - package.name == 'gir1.2-gst-plugins-base-0.10' or package.name == 'gir1.2-gst-plugins-base-1.0' |
3123 | device.category == 'CAPTURE' |
3124 | command: camera_test display |
3125 | _description: |
3126 | |
3127 | === modified file 'jobs/esata.txt.in' |
3128 | --- jobs/esata.txt.in 2012-11-12 15:32:12 +0000 |
3129 | +++ jobs/esata.txt.in 2013-05-09 20:11:45 +0000 |
3130 | @@ -16,7 +16,7 @@ |
3131 | name: esata/storage-test |
3132 | user: root |
3133 | depends: esata/insert |
3134 | -command: removable_storage_test ata_serial_esata |
3135 | +command: removable_storage_test -s 268400000 ata_serial_esata |
3136 | _description: |
3137 | This is an automated test which performs read/write operations on an attached |
3138 | eSATA HDD |
3139 | |
3140 | === modified file 'jobs/firewire.txt.in' |
3141 | --- jobs/firewire.txt.in 2012-11-12 15:32:12 +0000 |
3142 | +++ jobs/firewire.txt.in 2013-05-09 20:11:45 +0000 |
3143 | @@ -16,7 +16,7 @@ |
3144 | name: firewire/storage-test |
3145 | user: root |
3146 | depends: firewire/insert |
3147 | -command: removable_storage_test firewire |
3148 | +command: removable_storage_test -s 268400000 firewire |
3149 | _description: |
3150 | This is an automated test which performs read/write operations on an attached |
3151 | FireWire HDD |
3152 | |
3153 | === modified file 'jobs/graphics.txt.in' |
3154 | --- jobs/graphics.txt.in 2013-03-07 15:52:02 +0000 |
3155 | +++ jobs/graphics.txt.in 2013-05-09 20:11:45 +0000 |
3156 | @@ -26,7 +26,9 @@ |
3157 | |
3158 | plugin: shell |
3159 | name: graphics/xorg-process |
3160 | -requires: package.name == 'xorg' and package.name == 'procps' |
3161 | +requires: |
3162 | + package.name == 'xorg' |
3163 | + package.name == 'procps' |
3164 | command: pgrep -f '/usr/bin/X' >/dev/null |
3165 | _description: Test that the X process is running. |
3166 | |
3167 | |
3168 | === modified file 'jobs/hibernate.txt.in' |
3169 | --- jobs/hibernate.txt.in 2013-01-03 14:58:32 +0000 |
3170 | +++ jobs/hibernate.txt.in 2013-05-09 20:11:45 +0000 |
3171 | @@ -6,7 +6,7 @@ |
3172 | command: |
3173 | if type -P fwts >/dev/null; then |
3174 | echo "Calling fwts" |
3175 | - fwts_test -l $CHECKBOX_DATA/hibernate-single -s s4 --s4-device-check --s4-device-check-delay=45 --s4-sleep-delay=120 |
3176 | + fwts_test -l $CHECKBOX_DATA/hibernate-single -f none -s s4 --s4-device-check --s4-device-check-delay=45 --s4-sleep-delay=120 |
3177 | else |
3178 | echo "Calling sleep_test" |
3179 | sleep_test -s disk -w 120 |
3180 | @@ -22,7 +22,13 @@ |
3181 | VERIFICATION: |
3182 | Did the system successfully hibernate and did it work properly after waking up? |
3183 | |
3184 | +plugin: shell |
3185 | +name: power-management/hibernate-single-log-check |
3186 | +command: [ -e $CHECKBOX_DATA/hibernate-single.log ] && sleep_test_log_check -v s4 $CHECKBOX_DATA/hibernate-single.log |
3187 | +_description: |
3188 | + Automated check of the hibernate log for errors discovered by fwts |
3189 | + |
3190 | plugin: attachment |
3191 | name: power-management/hibernate-single-log-attach |
3192 | -command: [ -e $CHECKBOX_DATA/hibernate-single.log ] && cat $CHECBOX_DATA/hibernate-single.log |
3193 | +command: [ -e $CHECKBOX_DATA/hibernate-single.log ] && cat $CHECKBOX_DATA/hibernate-single.log |
3194 | description: attaches log from single hibernate/resume test to results |
3195 | |
3196 | === modified file 'jobs/info.txt.in' |
3197 | --- jobs/info.txt.in 2012-12-17 21:41:58 +0000 |
3198 | +++ jobs/info.txt.in 2013-05-09 20:11:45 +0000 |
3199 | @@ -1,6 +1,6 @@ |
3200 | name: codecs_attachment |
3201 | plugin: attachment |
3202 | -requires: device.driver == 'HDA Intel' |
3203 | +requires: device.driver == 'snd_hda_intel' |
3204 | command: cat /proc/asound/card*/codec#* |
3205 | _description: Attaches a report of installed codecs for Intel HDA |
3206 | |
3207 | |
3208 | === modified file 'jobs/input.txt.in' |
3209 | --- jobs/input.txt.in 2013-03-07 15:52:02 +0000 |
3210 | +++ jobs/input.txt.in 2013-05-09 20:11:45 +0000 |
3211 | @@ -41,10 +41,20 @@ |
3212 | VERIFICATION: |
3213 | Is your keyboard working properly? |
3214 | |
3215 | +plugin: manual |
3216 | +name: input/accelerometer_verify |
3217 | +_description: |
3218 | + PURPOSE: |
3219 | + Manual detection of accelerometer. |
3220 | + STEPS: |
3221 | + 1. Look at the specifications for your system. |
3222 | + VERIFICATION: |
3223 | + Is this system supposed to have an accelerometer? |
3224 | + |
3225 | plugin: user-interact |
3226 | name: input/accelerometer |
3227 | user: root |
3228 | -requires: module.name in ['hdaps', 'hp_accel'] |
3229 | +depends: input/accelerometer_verify |
3230 | command: accelerometer_test -m |
3231 | _description: |
3232 | PURPOSE: |
3233 | |
3234 | === modified file 'jobs/keys.txt.in' |
3235 | --- jobs/keys.txt.in 2012-11-07 21:33:08 +0000 |
3236 | +++ jobs/keys.txt.in 2013-05-09 20:11:45 +0000 |
3237 | @@ -78,9 +78,15 @@ |
3238 | This test will test the wireless key |
3239 | STEPS: |
3240 | 1. Press the wireless key on the keyboard |
3241 | - 2. Press the same key again |
3242 | + 2. Check that the wifi LED turns off or changes color |
3243 | + 3. Check that wireless is disabled |
3244 | + 4. Press the same key again |
3245 | + 5. Check that the wifi LED turns on or changes color |
3246 | + 6. Check that wireless is enabled |
3247 | VERIFICATION: |
3248 | - Did the wireless go off on the first press and on again on the second? |
3249 | + Did the wireless turn off on the first press and on again on the second? |
3250 | + (NOTE: the LED functionality will be reviewed in a following test. Please |
3251 | + only consider the functionality of the wifi itself here.) |
3252 | |
3253 | plugin: user-interact |
3254 | name: keys/media-control |
3255 | |
3256 | === modified file 'jobs/led.txt.in' |
3257 | --- jobs/led.txt.in 2012-10-27 10:33:23 +0000 |
3258 | +++ jobs/led.txt.in 2013-05-09 20:11:45 +0000 |
3259 | @@ -9,6 +9,29 @@ |
3260 | Does the power LED light as expected? |
3261 | |
3262 | plugin: manual |
3263 | +name: led/power-blink-suspend |
3264 | +depends: suspend/suspend_advanced |
3265 | +_description: |
3266 | + PURPOSE: |
3267 | + Power LED verification |
3268 | + STEPS: |
3269 | + 1. The Power LED should blink or change color while the system is suspended |
3270 | + VERIFICATION: |
3271 | + Did the Power LED blink or change color while the system was suspended for the previous suspend test? |
3272 | + |
3273 | +plugin: manual |
3274 | +name: led/suspend |
3275 | +_description: |
3276 | + PURPOSE: |
3277 | + Suspend LED verification. If your system does not have a dedicated Suspend |
3278 | + LED, skip this test. |
3279 | + STEPS: |
3280 | + 1. The Suspend LED should blink or change color while the system is |
3281 | + supended |
3282 | + VERIFICATION |
3283 | + Did the Suspend LED blink or change color while the system was suspended? |
3284 | + |
3285 | +plugin: manual |
3286 | name: led/battery-charging |
3287 | _description: |
3288 | PURPOSE: |
3289 | @@ -81,33 +104,29 @@ |
3290 | |
3291 | plugin: manual |
3292 | name: led/wlan |
3293 | -depends: wireless/wireless_connection |
3294 | -requires: package.name == 'firefox' |
3295 | -command: firefox http://www.ubuntu.com |
3296 | +depends: keys/wireless |
3297 | _description: |
3298 | PURPOSE: |
3299 | WLAN LED verification |
3300 | STEPS: |
3301 | - 1. Make sure WLAN connection is established |
3302 | - 2. WLAN LED should light |
3303 | - 3. Select Test to open Firefox |
3304 | - 4. WLAN LED should flash while downloading data |
3305 | + 1. During the keys/wireless test you should have observed the |
3306 | + wireless LED while turning wireless back on. |
3307 | + 2. WLAN LED should light or change color when wireless is turned on |
3308 | VERIFICATION: |
3309 | - Did the WLAN LED light and flash as expected? |
3310 | + Did the WLAN LED turn on or change color as expected? |
3311 | |
3312 | plugin: manual |
3313 | name: led/wlan-disabled |
3314 | -depends: wireless/wireless_connection |
3315 | +depends: keys/wireless |
3316 | _description: |
3317 | PURPOSE: |
3318 | Validate that WLAN LED shuts off when disabled |
3319 | STEPS: |
3320 | - 1. Connect to AP |
3321 | - 2. Use Physical switch to disable WLAN |
3322 | - 3. Re-enable |
3323 | - 4. Use Network-Manager to disable WLAN |
3324 | + 1. During the keys/wireless test you should have observed the WLAN LED |
3325 | + while performing that test after turning wireless off. |
3326 | + 2. WLAN LED should turn off or change color when wireless is turned off |
3327 | VERIFICATION: |
3328 | - Did the LED turn off then WLAN is disabled? |
3329 | + Did the WLAN LED turn off or change color as expected? |
3330 | |
3331 | plugin: manual |
3332 | name: led/bluetooth |
3333 | @@ -164,3 +183,15 @@ |
3334 | VERIFICATION: |
3335 | Did the WLAN/Bluetooth LED light as expected? |
3336 | |
3337 | +plugin: manual |
3338 | +name: led/mute |
3339 | +depends: keys/mute |
3340 | +_description: |
3341 | + PURPOSE: |
3342 | + Audio Mute LED verification. Skip this test if your system does not have |
3343 | + a special Audio Mute LED |
3344 | + STEPS: |
3345 | + 1. Press the Mute key twice and observe the Audio LED to determine if it |
3346 | + either turned off and on or changed colors. |
3347 | + VERIFICATION: |
3348 | + Did the Audio LED turn on and off change color as expected? |
3349 | |
3350 | === modified file 'jobs/local.txt.in' |
3351 | --- jobs/local.txt.in 2012-10-23 21:52:31 +0000 |
3352 | +++ jobs/local.txt.in 2013-05-09 20:11:45 +0000 |
3353 | @@ -278,6 +278,13 @@ |
3354 | shopt -s extglob |
3355 | cat $CHECKBOX_SHARE/jobs/wireless.txt?(.in) |
3356 | |
3357 | +name: __mobilebroadband__ |
3358 | +plugin: local |
3359 | +_description: Mobile broadband tests |
3360 | +command: |
3361 | + shopt -s extglob |
3362 | + cat $CHECKBOX_SHARE/jobs/mobilebroadband.txt?(.in) |
3363 | + |
3364 | name: __stress__ |
3365 | plugin: local |
3366 | _description: Stress tests |
3367 | |
3368 | === modified file 'jobs/mediacard.txt.in' |
3369 | --- jobs/mediacard.txt.in 2012-11-16 04:25:09 +0000 |
3370 | +++ jobs/mediacard.txt.in 2013-05-09 20:11:45 +0000 |
3371 | @@ -7,8 +7,9 @@ |
3372 | detect the insertion of a Multimedia Card (MMC) media |
3373 | STEPS: |
3374 | 1. Click "Test" and insert an MMC card into the reader. |
3375 | + If a file browser opens up, you can safely close it. |
3376 | (Note: this test will time-out after 20 seconds.) |
3377 | - 2. Do not unplug the device after the test. |
3378 | + 2. Do not remove the device after this test. |
3379 | VERIFICATION: |
3380 | The verification of this test is automated. Do not change the |
3381 | automatically selected result. |
3382 | @@ -17,7 +18,7 @@ |
3383 | name: mediacard/mmc-storage |
3384 | depends: mediacard/mmc-insert |
3385 | user: root |
3386 | -command: removable_storage_test --memorycard sdio usb scsi |
3387 | +command: removable_storage_test -s 67120000 --memorycard sdio usb scsi |
3388 | _description: |
3389 | This test is automated and executes after the mediacard/mmc-insert |
3390 | test is run. It tests reading and writing to the MMC card. |
3391 | @@ -47,8 +48,9 @@ |
3392 | detect the insertion of an MMC card after the system has been suspended |
3393 | STEPS: |
3394 | 1. Click "Test" and insert an MMC card into the reader. |
3395 | + If a file browser opens up, you can safely close it. |
3396 | (Note: this test will time-out after 20 seconds.) |
3397 | - 2. Do not unplug the device after the test. |
3398 | + 2. Do not remove the device after this test. |
3399 | VERIFICATION: |
3400 | The verification of this test is automated. Do not change the |
3401 | automatically selected result. |
3402 | @@ -57,7 +59,7 @@ |
3403 | name: mediacard/mmc-storage-after-suspend |
3404 | depends: mediacard/mmc-insert-after-suspend |
3405 | user: root |
3406 | -command: removable_storage_test --memorycard sdio usb scsi |
3407 | +command: removable_storage_test -s 67120000 --memorycard sdio usb scsi |
3408 | _description: |
3409 | This test is automated and executes after the mediacard/mmc-insert-after-suspend test |
3410 | is run. It tests reading and writing to the MMC card after the system has been suspended. |
3411 | @@ -86,8 +88,9 @@ |
3412 | detect the insertion of a Secure Digital (SD) media card |
3413 | STEPS: |
3414 | 1. Click "Test" and insert an SD card into the reader. |
3415 | + If a file browser opens up, you can safely close it. |
3416 | (Note: this test will time-out after 20 seconds.) |
3417 | - 2. Do not unplug the device after the test. |
3418 | + 2. Do not remove the device after this test. |
3419 | VERIFICATION: |
3420 | The verification of this test is automated. Do not change the |
3421 | automatically selected result. |
3422 | @@ -96,7 +99,7 @@ |
3423 | name: mediacard/sd-storage |
3424 | depends: mediacard/sd-insert |
3425 | user: root |
3426 | -command: removable_storage_test --memorycard sdio usb scsi |
3427 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3428 | _description: |
3429 | This test is automated and executes after the mediacard/sd-insert |
3430 | test is run. It tests reading and writing to the SD card. |
3431 | @@ -126,8 +129,9 @@ |
3432 | detect the insertion of an SD card after the system has been suspended |
3433 | STEPS: |
3434 | 1. Click "Test" and insert an SD card into the reader. |
3435 | + If a file browser opens up, you can safely close it. |
3436 | (Note: this test will time-out after 20 seconds.) |
3437 | - 2. Do not unplug the device after the test. |
3438 | + 2. Do not remove the device after this test. |
3439 | VERIFICATION: |
3440 | The verification of this test is automated. Do not change the |
3441 | automatically selected result. |
3442 | @@ -136,7 +140,7 @@ |
3443 | name: mediacard/sd-storage-after-suspend |
3444 | depends: mediacard/sd-insert-after-suspend |
3445 | user: root |
3446 | -command: removable_storage_test --memorycard sdio usb scsi |
3447 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3448 | _description: |
3449 | This test is automated and executes after the mediacard/sd-insert-after-suspend test |
3450 | is run. It tests reading and writing to the SD card after the system has been suspended. |
3451 | @@ -160,7 +164,7 @@ |
3452 | name: mediacard/sd-preinserted |
3453 | user: root |
3454 | requires: device.category == 'CARDREADER' |
3455 | -command: removable_storage_test --memorycard -l sdio usb scsi && removable_storage_test --memorycard sdio usb scsi |
3456 | +command: removable_storage_test -s 268400000 --memorycard -l sdio usb scsi && removable_storage_test --memorycard sdio usb scsi |
3457 | _description: |
3458 | This is a fully automated version of mediacard/sd-automated and assumes that the |
3459 | system under test has a memory card device plugged in prior to checkbox execution. |
3460 | @@ -175,8 +179,9 @@ |
3461 | detect the insertion of a Secure Digital High-Capacity (SDHC) media card |
3462 | STEPS: |
3463 | 1. Click "Test" and insert an SDHC card into the reader. |
3464 | + If a file browser opens up, you can safely close it. |
3465 | (Note: this test will time-out after 20 seconds.) |
3466 | - 2. Do not unplug the device after the test. |
3467 | + 2. Do not remove the device after this test. |
3468 | VERIFICATION: |
3469 | The verification of this test is automated. Do not change the |
3470 | automatically selected result. |
3471 | @@ -185,7 +190,7 @@ |
3472 | name: mediacard/sdhc-storage |
3473 | depends: mediacard/sdhc-insert |
3474 | user: root |
3475 | -command: removable_storage_test --memorycard sdio usb scsi |
3476 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3477 | _description: |
3478 | This test is automated and executes after the mediacard/sdhc-insert |
3479 | test is run. It tests reading and writing to the SDHC card. |
3480 | @@ -215,8 +220,9 @@ |
3481 | detect the insertion of an SDHC media card after the system has been suspended |
3482 | STEPS: |
3483 | 1. Click "Test" and insert an SDHC card into the reader. |
3484 | + If a file browser opens up, you can safely close it. |
3485 | (Note: this test will time-out after 20 seconds.) |
3486 | - 2. Do not unplug the device after the test. |
3487 | + 2. Do not remove the device after this test. |
3488 | VERIFICATION: |
3489 | The verification of this test is automated. Do not change the |
3490 | automatically selected result. |
3491 | @@ -225,7 +231,7 @@ |
3492 | name: mediacard/sdhc-storage-after-suspend |
3493 | depends: mediacard/sdhc-insert-after-suspend |
3494 | user: root |
3495 | -command: removable_storage_test --memorycard sdio usb scsi |
3496 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3497 | _description: |
3498 | This test is automated and executes after the mediacard/sdhc-insert-after-suspend test |
3499 | is run. It tests reading and writing to the SDHC card after the system has been suspended. |
3500 | @@ -254,8 +260,9 @@ |
3501 | detect the insertion of a Compact Flash (CF) media card |
3502 | STEPS: |
3503 | 1. Click "Test" and insert a CF card into the reader. |
3504 | + If a file browser opens up, you can safely close it. |
3505 | (Note: this test will time-out after 20 seconds.) |
3506 | - 2. Do not unplug the device after the test. |
3507 | + 2. Do not remove the device after this test. |
3508 | VERIFICATION: |
3509 | The verification of this test is automated. Do not change the |
3510 | automatically selected result. |
3511 | @@ -264,7 +271,7 @@ |
3512 | name: mediacard/cf-storage |
3513 | depends: mediacard/cf-insert |
3514 | user: root |
3515 | -command: removable_storage_test --memorycard sdio usb scsi |
3516 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3517 | _description: |
3518 | This test is automated and executes after the mediacard/cf-insert |
3519 | test is run. It tests reading and writing to the CF card. |
3520 | @@ -294,8 +301,9 @@ |
3521 | detect the insertion of a CF card after the system has been suspended |
3522 | STEPS: |
3523 | 1. Click "Test" and insert a CF card into the reader. |
3524 | + If a file browser opens up, you can safely close it. |
3525 | (Note: this test will time-out after 20 seconds.) |
3526 | - 2. Do not unplug the device after the test. |
3527 | + 2. Do not remove the device after this test. |
3528 | VERIFICATION: |
3529 | The verification of this test is automated. Do not change the |
3530 | automatically selected result. |
3531 | @@ -304,7 +312,7 @@ |
3532 | name: mediacard/cf-storage-after-suspend |
3533 | depends: mediacard/cf-insert-after-suspend |
3534 | user: root |
3535 | -command: removable_storage_test --memorycard sdio usb scsi |
3536 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3537 | _description: |
3538 | This test is automated and executes after the mediacard/cf-insert-after-suspend test |
3539 | is run. It tests reading and writing to the CF card after the system has been suspended. |
3540 | @@ -333,8 +341,9 @@ |
3541 | detect the insertion of a Secure Digital Extended Capacity (SDXC) media card |
3542 | STEPS: |
3543 | 1. Click "Test" and insert a SDXC card into the reader. |
3544 | + If a file browser opens up, you can safely close it. |
3545 | (Note: this test will time-out after 20 seconds.) |
3546 | - 2. Do not unplug the device after the test. |
3547 | + 2. Do not remove the device after this test. |
3548 | VERIFICATION: |
3549 | The verification of this test is automated. Do not change the |
3550 | automatically selected result. |
3551 | @@ -343,7 +352,7 @@ |
3552 | name: mediacard/sdxc-storage |
3553 | depends: mediacard/sdxc-insert |
3554 | user: root |
3555 | -command: removable_storage_test --memorycard sdio usb scsi |
3556 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3557 | _description: |
3558 | This test is automated and executes after the mediacard/sdxc-insert |
3559 | test is run. It tests reading and writing to the SDXC card. |
3560 | @@ -373,8 +382,9 @@ |
3561 | detect the insertion of a SDXC card after the system has been suspended |
3562 | STEPS: |
3563 | 1. Click "Test" and insert a SDXC card into the reader. |
3564 | + If a file browser opens up, you can safely close it. |
3565 | (Note: this test will time-out after 20 seconds.) |
3566 | - 2. Do not unplug the device after the test. |
3567 | + 2. Do not remove the device after this test. |
3568 | VERIFICATION: |
3569 | The verification of this test is automated. Do not change the |
3570 | automatically selected result. |
3571 | @@ -383,7 +393,7 @@ |
3572 | name: mediacard/sdxc-storage-after-suspend |
3573 | depends: mediacard/sdxc-insert-after-suspend |
3574 | user: root |
3575 | -command: removable_storage_test --memorycard sdio usb scsi |
3576 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3577 | _description: |
3578 | This test is automated and executes after the mediacard/sdxc-insert-after-suspend test |
3579 | is run. It tests reading and writing to the SDXC card after the system has been suspended. |
3580 | @@ -398,6 +408,7 @@ |
3581 | of a SDXC card from the systems card reader after the system has been suspended. |
3582 | STEPS: |
3583 | 1. Click "Test" and remove the SDXC card from the reader. |
3584 | + If a file browser opens up, you can safely close it. |
3585 | (Note: this test will time-out after 20 seconds.) |
3586 | VERIFICATION: |
3587 | The verification of this test is automated. Do not change the |
3588 | @@ -412,8 +423,9 @@ |
3589 | detect the insertion of a Memory Stick (MS) media card |
3590 | STEPS: |
3591 | 1. Click "Test" and insert a MS card into the reader. |
3592 | + If a file browser opens up, you can safely close it. |
3593 | (Note: this test will time-out after 20 seconds.) |
3594 | - 2. Do not unplug the device after the test. |
3595 | + 2. Do not remove the device after this test. |
3596 | VERIFICATION: |
3597 | The verification of this test is automated. Do not change the |
3598 | automatically selected result. |
3599 | @@ -422,7 +434,7 @@ |
3600 | name: mediacard/ms-storage |
3601 | depends: mediacard/ms-insert |
3602 | user: root |
3603 | -command: removable_storage_test --memorycard sdio usb scsi |
3604 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3605 | _description: |
3606 | This test is automated and executes after the mediacard/ms-insert |
3607 | test is run. It tests reading and writing to the MS card. |
3608 | @@ -452,8 +464,9 @@ |
3609 | detect the insertion of a MS card after the system has been suspended |
3610 | STEPS: |
3611 | 1. Click "Test" and insert a MS card into the reader. |
3612 | + If a file browser opens up, you can safely close it. |
3613 | (Note: this test will time-out after 20 seconds.) |
3614 | - 2. Do not unplug the device after the test. |
3615 | + 2. Do not remove the device after this test. |
3616 | VERIFICATION: |
3617 | The verification of this test is automated. Do not change the |
3618 | automatically selected result. |
3619 | @@ -462,7 +475,7 @@ |
3620 | name: mediacard/ms-storage-after-suspend |
3621 | depends: mediacard/ms-insert-after-suspend |
3622 | user: root |
3623 | -command: removable_storage_test --memorycard sdio usb scsi |
3624 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3625 | _description: |
3626 | This test is automated and executes after the mediacard/ms-insert-after-suspend test |
3627 | is run. It tests reading and writing to the MS card after the system has been suspended. |
3628 | @@ -491,8 +504,9 @@ |
3629 | detect the insertion of a Memory Stick Pro (MSP) media card |
3630 | STEPS: |
3631 | 1. Click "Test" and insert a MSP card into the reader. |
3632 | + If a file browser opens up, you can safely close it. |
3633 | (Note: this test will time-out after 20 seconds.) |
3634 | - 2. Do not unplug the device after the test. |
3635 | + 2. Do not remove the device after this test. |
3636 | VERIFICATION: |
3637 | The verification of this test is automated. Do not change the |
3638 | automatically selected result. |
3639 | @@ -501,7 +515,7 @@ |
3640 | name: mediacard/msp-storage |
3641 | depends: mediacard/msp-insert |
3642 | user: root |
3643 | -command: removable_storage_test --memorycard sdio usb scsi |
3644 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3645 | _description: |
3646 | This test is automated and executes after the mediacard/msp-insert |
3647 | test is run. It tests reading and writing to the MSP card. |
3648 | @@ -531,8 +545,9 @@ |
3649 | detect the insertion of a MSP card after the system has been suspended |
3650 | STEPS: |
3651 | 1. Click "Test" and insert a MSP card into the reader. |
3652 | + If a file browser opens up, you can safely close it. |
3653 | (Note: this test will time-out after 20 seconds.) |
3654 | - 2. Do not unplug the device after the test. |
3655 | + 2. Do not remove the device after this test. |
3656 | VERIFICATION: |
3657 | The verification of this test is automated. Do not change the |
3658 | automatically selected result. |
3659 | @@ -541,7 +556,7 @@ |
3660 | name: mediacard/msp-storage-after-suspend |
3661 | depends: mediacard/msp-insert-after-suspend |
3662 | user: root |
3663 | -command: removable_storage_test --memorycard sdio usb scsi |
3664 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3665 | _description: |
3666 | This test is automated and executes after the mediacard/msp-insert-after-suspend test |
3667 | is run. It tests reading and writing to the MSP card after the system has been suspended. |
3668 | @@ -570,8 +585,9 @@ |
3669 | detect the insertion of a Extreme Digital (xD) media card |
3670 | STEPS: |
3671 | 1. Click "Test" and insert a xD card into the reader. |
3672 | + If a file browser opens up, you can safely close it. |
3673 | (Note: this test will time-out after 20 seconds.) |
3674 | - 2. Do not unplug the device after the test. |
3675 | + 2. Do not remove the device after this test. |
3676 | VERIFICATION: |
3677 | The verification of this test is automated. Do not change the |
3678 | automatically selected result. |
3679 | @@ -580,7 +596,7 @@ |
3680 | name: mediacard/xd-storage |
3681 | depends: mediacard/xd-insert |
3682 | user: root |
3683 | -command: removable_storage_test --memorycard sdio usb scsi |
3684 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3685 | _description: |
3686 | This test is automated and executes after the mediacard/xd-insert |
3687 | test is run. It tests reading and writing to the xD card. |
3688 | @@ -610,8 +626,9 @@ |
3689 | detect the insertion of a xD card after the system has been suspended |
3690 | STEPS: |
3691 | 1. Click "Test" and insert a xD card into the reader. |
3692 | + If a file browser opens up, you can safely close it. |
3693 | (Note: this test will time-out after 20 seconds.) |
3694 | - 2. Do not unplug the device after the test. |
3695 | + 2. Do not remove the device after this test. |
3696 | VERIFICATION: |
3697 | The verification of this test is automated. Do not change the |
3698 | automatically selected result. |
3699 | @@ -620,7 +637,7 @@ |
3700 | name: mediacard/xd-storage-after-suspend |
3701 | depends: mediacard/xd-insert-after-suspend |
3702 | user: root |
3703 | -command: removable_storage_test --memorycard sdio usb scsi |
3704 | +command: removable_storage_test -s 268400000 --memorycard sdio usb scsi |
3705 | _description: |
3706 | This test is automated and executes after the mediacard/xd-insert-after-suspend test |
3707 | is run. It tests reading and writing to the xD card after the system has been suspended. |
3708 | |
3709 | === modified file 'jobs/miscellanea.txt.in' |
3710 | --- jobs/miscellanea.txt.in 2013-01-07 08:53:00 +0000 |
3711 | +++ jobs/miscellanea.txt.in 2013-05-09 20:11:45 +0000 |
3712 | @@ -67,5 +67,56 @@ |
3713 | |
3714 | plugin: shell |
3715 | name: miscellanea/sources-list |
3716 | -command: sources_test |
3717 | +command: sources_test $SOURCES_LIST "$REPOSITORIES" |
3718 | _description: Checks that a specified sources list file contains the requested repositories |
3719 | + |
3720 | +plugin: local |
3721 | +name: miscellanea/pxe_boot |
3722 | +requires: device.category == 'NETWORK' |
3723 | +_description: Automated job to generate the PXE verification test for each NIC. |
3724 | +command: |
3725 | + cat <<'EOF' | run_templates -s 'udev_resource | filter_templates -w "category=NETWORK" | awk "/path: / { print \$2 }" | xargs -n 1 sh -c "for i in \`ls /sys\$0/net 2>/dev/null\`; do echo \$0 \$i; done"' |
3726 | + plugin: manual |
3727 | + name: miscellanea/pxe_boot_$2 |
3728 | + description: |
3729 | + PURPOSE: |
3730 | + This test will verify that you have attempted to PXE boot this machine from |
3731 | + the network device $2. |
3732 | + STEPS: |
3733 | + 1. Prior to running this test, you should have attempted to boot this system via PXE on every Network Port available. |
3734 | + VERIFICATION: |
3735 | + 1. Select Yes if you successfully used PXE boot this system using the NIC $2 |
3736 | + 2. Select No if you did not attempt to PXE boot this system using the NIC $2 |
3737 | + 3. Select No if you attempted to PXE boot via $2 and it failed for some reason. |
3738 | + EOF |
3739 | + |
3740 | +plugin: local |
3741 | +name: miscellanea/remote_shared_ipmi |
3742 | +requires: device.category == 'NETWORK' |
3743 | +_description: Automated job to generate the Remote Shared IPMI verification test for each NIC. |
3744 | +command: |
3745 | + cat <<'EOF' | run_templates -s 'udev_resource | filter_templates -w "category=NETWORK" | awk "/path: / { print \$2 }" | xargs -n 1 sh -c "for i in \`ls /sys\$0/net 2>/dev/null\`; do echo \$0 \$i; done"' |
3746 | + plugin: manual |
3747 | + name: miscellanea/remote_shared_ipmi_$2 |
3748 | + description: |
3749 | + PURPOSE: |
3750 | + This test will verify that you have attempted IPMI control of this machine from the network device $2. |
3751 | + STEPS: |
3752 | + 1. Prior to running this test, you should have configured and used IPMI to power this machine off and on using every Network Port available. |
3753 | + VERIFICATION: |
3754 | + 1. Select Yes if you successfully used IPMI to remotely power this system off and on using the NIC $2 |
3755 | + 2. Select No if you did not attempt to use IPMI to remotely power this sytem off and on via the NIC $2 |
3756 | + 3. Select No if you attempted to use IPMI to remotely power off/on this system via $2 and it failed for some reason. |
3757 | + EOF |
3758 | + |
3759 | +plugin: manual |
3760 | +name: miscellanea/remote_dedicated_ipmi |
3761 | +_description: |
3762 | + PURPOSE: |
3763 | + Some systems do not share IPMI over all NICs but instead have a dedicated management port directly connected to the BMC. This test verifies that you have used that port for remote IPMI connections and actions. |
3764 | + STEPS: |
3765 | + 1. Prior to running the test, you should have configured and used the Dedicated Management Port to remotely power off/on this sytem. |
3766 | + VERIFICATION: |
3767 | + 1. Select Yes if you successfully used IPMI to remotely power this system off and on using the dedicated management port. |
3768 | + 2. Select No if you attempted to use the dedicated management port to remotely power this system off/on and it failed for some reason. |
3769 | + 3. Skip this test if this system ONLY uses shared management/ethernet ports OR if this system does not have a BMC (Management Console) |
3770 | |
3771 | === added file 'jobs/mobilebroadband.txt.in' |
3772 | --- jobs/mobilebroadband.txt.in 1970-01-01 00:00:00 +0000 |
3773 | +++ jobs/mobilebroadband.txt.in 2013-05-09 20:11:45 +0000 |
3774 | @@ -0,0 +1,21 @@ |
3775 | +plugin: shell |
3776 | +name: mobilebroadband/gsm_connection |
3777 | +requires: |
3778 | + package.name == 'network-manager' |
3779 | + package.name == 'modemmanager' |
3780 | + mobilebroadband.gsm == 'supported' |
3781 | +user: root |
3782 | +environ: GSM_CONN_NAME GSM_APN GSM_USERNAME GSM_PASSWORD |
3783 | +command: trap "nmcli con delete id $GSM_CONN_NAME" EXIT; create_connection mobilebroadband gsm `if [ ${GSM_APN} ]; then echo "--apn=$GSM_APN"; fi` `if [ ${GSM_CONN_NAME} ]; then echo "--name=$GSM_CONN_NAME"; fi` `if [ ${GSM_USERNAME} ]; then echo "--username=$GSM_USERNAME"; fi` `if [ ${GSM_PASSWORD} ]; then echo "--password=$GSM_PASSWORD"; fi` && curl http://start.ubuntu.com/connectivity-check.html --interface `nmcli dev status | awk '/gsm/ {print $1}'` |
3784 | +_description: Creates a mobile broadband connection for a GSM based modem and checks the connection to ensure it's working. |
3785 | + |
3786 | +plugin: shell |
3787 | +name: mobilebroadband/cdma_connection |
3788 | +requires: |
3789 | + package.name == 'network-manager' |
3790 | + package.name == 'modemmanager' |
3791 | + mobilebroadband.cdma == 'supported' |
3792 | +user: root |
3793 | +environ: CDMA_CONN_NAME CDMA_USERNAME CDMA_PASSWORD |
3794 | +command: trap "nmcli con delete id $CDMA_CONN_NAME" EXIT; create_connection mobilebroadband cdma `if [ ${CDMA_CONN_NAME} ]; then echo "--name=$CDMA_CONN_NAME"; fi` `if [ ${CDMA_USERNAME} ]; then echo "--username=$CDMA_USERNAME"; fi` `if [ ${CDMA_PASSWORD} ]; then echo "--password=$CDMA_PASSWORD"; fi` && curl http://start.ubuntu.com/connectivity-check.html --interface `nmcli dev status | awk '/gsm/ {print $1}'` |
3795 | +_description: Creates a mobile broadband connection for a CDMA based modem and checks the connection to ensure it's working. |
3796 | |
3797 | === modified file 'jobs/monitor.txt.in' |
3798 | --- jobs/monitor.txt.in 2013-01-30 21:43:05 +0000 |
3799 | +++ jobs/monitor.txt.in 2013-05-09 20:11:45 +0000 |
3800 | @@ -66,7 +66,7 @@ |
3801 | |
3802 | plugin: manual |
3803 | name: monitor/multi-head |
3804 | -requires: dmi.product not in ['Notebook','Laptop','Portable'] |
3805 | +requires: dmi.product in ['Desktop','Low Profile Desktop','Tower','Mini Tower'] |
3806 | _description: |
3807 | PURPOSE: |
3808 | This test verifies that multi-monitor output works on your desktop system. This is NOT the same test as the external monitor tests you would run on your laptop. If your video card does not support multiple monitors, please skip this test. You will need two monitors to perform this test. |
3809 | @@ -98,8 +98,8 @@ |
3810 | PURPOSE: |
3811 | This test will test changes to screen brightness |
3812 | STEPS: |
3813 | - 1. Click "Test" to try the to dim the screen. |
3814 | - 2. Check if the screen was dimmed approximately by half. |
3815 | + 1. Click "Test" to try to dim the screen. |
3816 | + 2. Check if the screen was dimmed approximately to half of the maximum brightness. |
3817 | 3. The screen will go back to the original brightness in 2 seconds. |
3818 | VERIFICATION: |
3819 | - Was your screen dimmed approximately by half? |
3820 | + Was your screen dimmed approximately to half of the maximum brightness? |
3821 | |
3822 | === modified file 'jobs/networking.txt.in' |
3823 | --- jobs/networking.txt.in 2012-12-13 18:35:08 +0000 |
3824 | +++ jobs/networking.txt.in 2013-05-09 20:11:45 +0000 |
3825 | @@ -15,10 +15,10 @@ |
3826 | |
3827 | plugin: local |
3828 | name: networking/info |
3829 | -requires: device.category == 'NETWORK' or device.category == 'WIRELESS' |
3830 | +requires: device.category == 'NETWORK' |
3831 | _description: Network Information |
3832 | command: |
3833 | - cat <<'EOF' | run_templates -s 'udev_resource | filter_templates -w "category=WIRELESS" -w "category=NETWORK" | awk "/path: / { print \$2 }" | xargs -n 1 sh -c "for i in \`ls /sys\$0/net 2>/dev/null\`; do echo \$0 \$i; done"' |
3834 | + cat <<'EOF' | run_templates -s 'udev_resource | filter_templates -w "category=NETWORK" | awk "/path: / { print \$2 }" | xargs -n 1 sh -c "for i in \`ls /sys\$0/net 2>/dev/null\`; do echo \$0 \$i; done"' |
3835 | plugin: manual |
3836 | name: networking/info_$2 |
3837 | requires: device.path == "$1" |
3838 | @@ -29,7 +29,7 @@ |
3839 | STEPS: |
3840 | 1. Please verify the following information for NIC $2 |
3841 | INFO: |
3842 | - $output |
3843 | + \$output |
3844 | VERIFICATION: |
3845 | Is this correct? |
3846 | EOF |
3847 | @@ -117,7 +117,7 @@ |
3848 | package.name == 'ethtool' and package.name == 'nmap' |
3849 | device.path == "$1" |
3850 | user: root |
3851 | - command: ethtool $2 | tail -1 | grep "detected: yes" && network_bandwidth_test --interface=$2 --scan=3 --log-level=debug || ( echo "ERROR: $2 is either not configured or not connected." >&2 && exit 1 ) |
3852 | + command: network test -i $2 -t ftp |
3853 | description: |
3854 | Testing for NIC $2 |
3855 | EOF |
3856 | |
3857 | === modified file 'jobs/power-management.txt.in' |
3858 | --- jobs/power-management.txt.in 2012-12-03 14:30:41 +0000 |
3859 | +++ jobs/power-management.txt.in 2013-05-09 20:11:45 +0000 |
3860 | @@ -2,11 +2,11 @@ |
3861 | name: power-management/shutdown-boot |
3862 | _description: |
3863 | PURPOSE: |
3864 | - This test will check your system shutdown/booting cycle |
3865 | + This test will check your system shutdown/booting cycle. |
3866 | STEPS: |
3867 | - 1. Shutdown your machine |
3868 | - 2. Boot your machine |
3869 | - 3. Repeat steps 1 and 2 at least 5 times |
3870 | + 1. Shutdown your machine. |
3871 | + 2. Boot your machine. |
3872 | + 3. Repeat steps 1 and 2 at least 5 times. |
3873 | VERIFICATION: |
3874 | Did the system shutdown and rebooted correctly? |
3875 | |
3876 | @@ -44,9 +44,10 @@ |
3877 | 2. The machine will shut down. |
3878 | 3. Power the machine back on. |
3879 | 4. After rebooting, wait for the test prompts to inform you that the test is complete. |
3880 | - 5. Once the test has completed, restart checkbox and select Re-Run when prompted |
3881 | + 5. Once the test has completed, restart checkbox and select 'Re-run' when prompted. |
3882 | VERIFICATION: |
3883 | - If the machine successfully shuts down and boots, select Yes then select Next. |
3884 | + If the machine successfully shuts down and boots, select 'Yes', otherwise, |
3885 | + select 'No'. |
3886 | |
3887 | plugin: attachment |
3888 | name: power-management/poweroff-log-attach |
3889 | @@ -69,7 +70,7 @@ |
3890 | 1. Select "Test" to begin. |
3891 | 2. The machine will reboot. |
3892 | 3. After rebooting, wait for the test prompts to inform you that the test is complete. |
3893 | - 4. Once the test has completed, restart checkbox and select Re-Run when prompted |
3894 | + 4. Once the test has completed, restart checkbox and select Re-Run when prompted. |
3895 | VERIFICATION: |
3896 | If the machine successfully reboots, select Yes then select Next. |
3897 | |
3898 | @@ -83,9 +84,9 @@ |
3899 | name: power-management/lid |
3900 | _description: |
3901 | PURPOSE: |
3902 | - This test will check your lid sensors |
3903 | + This test will check your lid sensors. |
3904 | STEPS: |
3905 | - 1. Close your laptop lid |
3906 | + 1. Close your laptop lid. |
3907 | VERIFICATION: |
3908 | Does closing your laptop lid cause your system to suspend? |
3909 | |
3910 | @@ -102,8 +103,8 @@ |
3911 | PURPOSE: |
3912 | This test will check your lid sensors |
3913 | STEPS: |
3914 | - 1. Click "Test" |
3915 | - 2. Close and open the lid |
3916 | + 1. Click "Test". |
3917 | + 2. Close and open the lid. |
3918 | VERIFICATION: |
3919 | Did the screen turn off while the lid was closed? |
3920 | |
3921 | @@ -118,12 +119,12 @@ |
3922 | exit 1 |
3923 | _description: |
3924 | PURPOSE: |
3925 | - This test will check your lid sensors |
3926 | + This test will check your lid sensors. |
3927 | STEPS: |
3928 | - 1. Click "Test" |
3929 | - 2. Close the lid |
3930 | - 3. Wait 5 seconds with the lid closed |
3931 | - 4. Open the lid |
3932 | + 1. Click "Test". |
3933 | + 2. Close the lid. |
3934 | + 3. Wait 5 seconds with the lid closed. |
3935 | + 4. Open the lid. |
3936 | VERIFICATION: |
3937 | Did the system resume when the lid was opened? |
3938 | |
3939 | @@ -144,10 +145,9 @@ |
3940 | name: power-management/unplug_ac |
3941 | _description: |
3942 | PURPOSE: |
3943 | - This test will ensure that the AC is unplugged for the battery drain tests |
3944 | - to run. |
3945 | + This test will ensure that the AC is unplugged for the battery drain tests to run. |
3946 | STEPS: |
3947 | - 1. Unplug laptop from AC |
3948 | + 1. Unplug laptop from AC. |
3949 | VERIFICATION: |
3950 | Was the laptop unplugged from AC? |
3951 | |
3952 | @@ -187,9 +187,45 @@ |
3953 | depends: power-management/battery_drain_idle power-management/battery_drain_movie power-management/battery_drain_sleep |
3954 | _description: |
3955 | PURPOSE: |
3956 | - This test will ensure that the AC is plugged back in after the battery |
3957 | + This test will ensure that the AC is plugged back in after the battery. |
3958 | tests |
3959 | STEPS: |
3960 | - 1. Plug laptop into AC |
3961 | + 1. Plug laptop into AC. |
3962 | VERIFICATION: |
3963 | Was the laptop plugged into AC? |
3964 | + |
3965 | +plugin: manual |
3966 | +name: power-management/reboot_manual |
3967 | +user:root |
3968 | +command: shutdown -r now |
3969 | +_description: |
3970 | + PURPOSE: |
3971 | + This test will verify that your system can successfully reboot. |
3972 | + STEPS: |
3973 | + 1. Select 'Test' to initiate a system reboot. |
3974 | + 2. When the grub boot menu is displayed, boot into Ubuntu (Or allow the |
3975 | + system to automatically boot on its own). |
3976 | + 3. Once the system has restarted, log in and restart checkbox-certification-server. |
3977 | + 4. Select 'Re-Run' to return to this test. |
3978 | + 5. Select 'Yes' to indicate the test has passed if the system rebooted |
3979 | + successfully, otherwise, select 'No' to indicate there was a problem. |
3980 | + VERIFICATION: |
3981 | + Did the system reboot correctly? |
3982 | + |
3983 | +plugin: manual |
3984 | +name: power-management/shutdown_manual |
3985 | +user: root |
3986 | +command: shutdown -h now |
3987 | +_description: |
3988 | + PURPOSE: |
3989 | + This test will check your system shutdown/booting cycle |
3990 | + STEPS: |
3991 | + 1. Select 'Test' to initiate a system shutdown. |
3992 | + 2. Power the system back on. |
3993 | + 3. From the grub menu, boot into the Xen Hypervisor. |
3994 | + 4. When the system has restarted, log in and restart checkbox-certification-server. |
3995 | + 5. Select 'Re-Run' to return to this test. |
3996 | + 6. Select 'Yes' to indicate the test has passed if the machine shut down |
3997 | + successfully otherwise, Select 'No' to indicate there was a problem. |
3998 | + VERIFICATION: |
3999 | + Did the system shutdown and boot correctly? |
4000 | |
4001 | === modified file 'jobs/rendercheck.txt.in' |
4002 | --- jobs/rendercheck.txt.in 2013-02-08 17:02:12 +0000 |
4003 | +++ jobs/rendercheck.txt.in 2013-05-09 20:11:45 +0000 |
4004 | @@ -2,7 +2,7 @@ |
4005 | name: rendercheck/tests |
4006 | requires: |
4007 | package.name == 'x11-apps' |
4008 | -command: ( rendercheck_test -d -o $CHECKBOX_DATA/rendercheck-results && echo "Rendercheck tests completed successfully" ) || ( echo "Error running rendercheck. Please see the log $CHECKBOX_DATA/rendercheck-results for details" >&2 && false ) |
4009 | +command: ( rendercheck_test -b repeat -b gradients -d -o $CHECKBOX_DATA/rendercheck-results && echo "Rendercheck tests completed successfully" ) || ( echo "Error running rendercheck. Please see the log $CHECKBOX_DATA/rendercheck-results for details" >&2 && false ) |
4010 | _description: |
4011 | Runs all of the rendercheck test suites. This test can take a few minutes. |
4012 | |
4013 | |
4014 | === modified file 'jobs/resource.txt.in' |
4015 | --- jobs/resource.txt.in 2013-02-22 16:26:25 +0000 |
4016 | +++ jobs/resource.txt.in 2013-05-09 20:11:45 +0000 |
4017 | @@ -109,3 +109,16 @@ |
4018 | for e in `env | sed 's/=/:/g'`; do |
4019 | echo $e | awk -F':' '{print $1 ": " $2}' |
4020 | done |
4021 | + |
4022 | +name: mobilebroadband |
4023 | +plugin: resource |
4024 | +description: Create resource for mobile broadband devices |
4025 | +command: |
4026 | + if mm-test --no-scan | grep -q 'GSM modem' |
4027 | + then |
4028 | + echo "gsm: supported" |
4029 | + fi |
4030 | + if mm-test --no-scan | grep -q 'CDMA modem' |
4031 | + then |
4032 | + echo "cdma: supported" |
4033 | + fi |
4034 | |
4035 | === modified file 'jobs/stress.txt.in' |
4036 | --- jobs/stress.txt.in 2013-01-03 20:46:04 +0000 |
4037 | +++ jobs/stress.txt.in 2013-05-09 20:11:45 +0000 |
4038 | @@ -16,7 +16,7 @@ |
4039 | command: |
4040 | if type -P fwts >/dev/null; then |
4041 | echo "Calling fwts" |
4042 | - fwts_test -l $CHECKBOX_DATA/hibernate_30_cycles -s s4 --s4-device-check --s4-device-check-delay=45 --s4-sleep-delay=120 --s4-multiple=30 |
4043 | + fwts_test -l $CHECKBOX_DATA/hibernate_30_cycles -f none -s s4 --s4-device-check --s4-device-check-delay=45 --s4-sleep-delay=120 --s4-multiple=30 |
4044 | else |
4045 | echo "Calling sleep_test" |
4046 | sleep_test -s disk -i 30 -w 120 |
4047 | @@ -25,6 +25,12 @@ |
4048 | PURPOSE: |
4049 | This is an automated stress test that will force the system to hibernate/resume for 30 cycles |
4050 | |
4051 | +plugin: shell |
4052 | +name: power-management/hibernate-30-cycles-log-check |
4053 | +command: [ -e $CHECKBOX_DATA/hibernate_30_cycles.log ] && sleep_test_log_check -v s4 $CHECKBOX_DATA/hibernate_30_cycles.log |
4054 | +_description: |
4055 | + Automated check of the 30 cycle hibernate log for errors detected by fwts. |
4056 | + |
4057 | plugin: attachment |
4058 | name: power-management/hibernate-30-cycle-log-attach |
4059 | command: [ -e $CHECKBOX_DATA/hibernate_30_cycles.log ] && cat $CHECKBOX_DATA/hibernate_30_cycles.log |
4060 | @@ -39,7 +45,7 @@ |
4061 | command: |
4062 | if type -P fwts >/dev/null; then |
4063 | echo "Calling fwts" |
4064 | - set -o pipefail; fwts_test -l $CHECKBOX_DATA/suspend_30_cycles -s s3 --s3-device-check --s3-device-check-delay=45 --s3-sleep-delay=30 --s3-multiple=30 | tee $CHECKBOX_DATA/suspend_30_cycles_times.log |
4065 | + set -o pipefail; fwts_test -l $CHECKBOX_DATA/suspend_30_cycles -f none -s s3 --s3-device-check --s3-device-check-delay=45 --s3-sleep-delay=30 --s3-multiple=30 | tee $CHECKBOX_DATA/suspend_30_cycles_times.log |
4066 | else |
4067 | echo "Calling sleep_test" |
4068 | set -o pipefail; sleep_test -p s mem -i 30 | tee $CHECKBOX_DATA/suspend_30_cycles_times.log |
4069 | @@ -48,6 +54,12 @@ |
4070 | PURPOSE: |
4071 | This is an automated stress test that will force the system to suspend/resume for 30 cycles. |
4072 | |
4073 | +plugin: shell |
4074 | +name: power-management/suspend-30-cycles-log-check |
4075 | +command: [ -e $CHECKBOX_DATA/suspend_30_cycles.log ] && sleep_test_log_check -v s3 $CHECKBOX_DATA/suspend_30_cycles.log |
4076 | +_description: |
4077 | + Automated check of the 30 cycle hibernate log for errors detected by fwts. |
4078 | + |
4079 | plugin: attachment |
4080 | name: power-management/suspend-30-cycle-log-attach |
4081 | command: [ -e $CHECKBOX_DATA/suspend_30_cycles.log ] && cat $CHECKBOX_DATA/suspend_30_cycles.log |
4082 | @@ -172,7 +184,7 @@ |
4083 | package.name == 'x11-apps' |
4084 | user: root |
4085 | environ: CHECKBOX_DATA |
4086 | -command: graphics_stress_test -d -o $CHECKBOX_DATA/graphics-stress-results && echo "Graphics Stress Test completed successfully" || echo "Graphics Stress Test completed, but there are errors. Please see the log $CHECKBOX_DATA/graphics-stress-results for details" && false |
4087 | +command: graphics_stress_test -b repeat -d -o $CHECKBOX_DATA/graphics-stress-results && echo "Graphics Stress Test completed successfully" || echo "Graphics Stress Test completed, but there are errors. Please see the log $CHECKBOX_DATA/graphics-stress-results for details" && false |
4088 | _description: |
4089 | Run the graphics stress test. This test can take a few minutes. |
4090 | |
4091 | |
4092 | === modified file 'jobs/suspend.txt.in' |
4093 | --- jobs/suspend.txt.in 2013-03-07 15:52:02 +0000 |
4094 | +++ jobs/suspend.txt.in 2013-05-09 20:11:45 +0000 |
4095 | @@ -40,7 +40,8 @@ |
4096 | plugin: shell |
4097 | name: suspend/bluetooth_obex_before_suspend |
4098 | requires: |
4099 | - package.name == 'bluez' and package.name == 'obexd-client' |
4100 | + package.name == 'bluez' |
4101 | + package.name == 'obexd-client' |
4102 | device.category == 'BLUETOOTH' |
4103 | command: |
4104 | if [ -z "$BTDEVADDR" ] |
4105 | @@ -65,7 +66,8 @@ |
4106 | plugin: shell |
4107 | name: suspend/bluetooth_obex_send_before_suspend |
4108 | requires: |
4109 | - package.name == 'bluez' and package.name == 'obexftp' |
4110 | + package.name == 'bluez' |
4111 | + package.name == 'obexftp' |
4112 | device.category == 'BLUETOOTH' |
4113 | command: |
4114 | if [ -z "$BTDEVADDR" ] |
4115 | @@ -90,7 +92,8 @@ |
4116 | plugin: shell |
4117 | name: suspend/bluetooth_obex_browse_before_suspend |
4118 | requires: |
4119 | - package.name == 'bluez' and package.name == 'obexftp' |
4120 | + package.name == 'bluez' |
4121 | + package.name == 'obexftp' |
4122 | device.category == 'BLUETOOTH' |
4123 | command: |
4124 | if [ -z "$BTDEVADDR" ] |
4125 | @@ -115,7 +118,8 @@ |
4126 | plugin: shell |
4127 | name: suspend/bluetooth_obex_get_before_suspend |
4128 | requires: |
4129 | - package.name == 'bluez' and package.name == 'obexftp' |
4130 | + package.name == 'bluez' |
4131 | + package.name == 'obexftp' |
4132 | device.category == 'BLUETOOTH' |
4133 | command: |
4134 | if [ -z "$BTDEVADDR" ] |
4135 | @@ -140,7 +144,8 @@ |
4136 | plugin: manual |
4137 | name: suspend/bluetooth_obex_before_suspend_manual |
4138 | requires: |
4139 | - package.name == 'bluez' and package.name == 'obexd-client' |
4140 | + package.name == 'bluez' |
4141 | + package.name == 'obexd-client' |
4142 | device.category == 'BLUETOOTH' |
4143 | command: rfkill unblock bluetooth; obex_send `bluetooth_scan` $CHECKBOX_SHARE/data/images/JPEG_Color_Image_Ubuntu.jpg |
4144 | _description: |
4145 | @@ -163,7 +168,7 @@ |
4146 | command: |
4147 | if type -P fwts >/dev/null; then |
4148 | echo "Calling fwts" |
4149 | - set -o pipefail; fwts_test -f critical -l $CHECKBOX_DATA/suspend_single -s s3 --s3-sleep-delay=30 --s3-device-check --s3-device-check-delay=45 | tee $CHECKBOX_DATA/suspend_single_times.log |
4150 | + set -o pipefail; fwts_test -f none -l $CHECKBOX_DATA/suspend_single -s s3 --s3-sleep-delay=30 --s3-device-check --s3-device-check-delay=45 | tee $CHECKBOX_DATA/suspend_single_times.log |
4151 | else |
4152 | echo "Calling sleep_test" |
4153 | set -o pipefail; sleep_test -p | tee $CHECKBOX_DATA/suspend_single_times.log |
4154 | @@ -173,10 +178,12 @@ |
4155 | This test will check suspend and resume |
4156 | STEPS: |
4157 | 1. Click "Test" and your system will suspend for about 30 - 60 seconds |
4158 | - 2. If your system does not wake itself up after 60 seconds, please press the power button momentarily to wake the system manually |
4159 | - 3. If your system fails to wake at all and must be rebooted, restart System Testing after reboot and mark this test as Failed |
4160 | + 2. Observe the Power LED to see if it blinks or changes color during suspend |
4161 | + 3. If your system does not wake itself up after 60 seconds, please press the power button momentarily to wake the system manually |
4162 | + 4. If your system fails to wake at all and must be rebooted, restart System Testing after reboot and mark this test as Failed |
4163 | VERIFICATION: |
4164 | Did your system suspend and resume correctly? |
4165 | + (NOTE: Please only consider whether the system successfully suspended and resumed. Power/Suspend LED verification will occur after this test is completed.) |
4166 | |
4167 | plugin: shell |
4168 | name: suspend/suspend_advanced_auto |
4169 | @@ -187,7 +194,13 @@ |
4170 | This is the automated version of suspend/suspend_advanced. |
4171 | user: root |
4172 | environ: CHECKBOX_DATA |
4173 | -command: set -o pipefail; fwts_test -f critical -l $CHECKBOX_DATA/suspend_single -s s3 --s3-sleep-delay=30 --s3-device-check --s3-device-check-delay=45 | tee $CHECKBOX_DATA/suspend_single_times.log |
4174 | +command: set -o pipefail; fwts_test -f none -l $CHECKBOX_DATA/suspend_single -s s3 --s3-sleep-delay=30 --s3-device-check --s3-device-check-delay=45 | tee $CHECKBOX_DATA/suspend_single_times.log |
4175 | + |
4176 | +plugin: shell |
4177 | +name: suspend/suspend-single-log-check |
4178 | +command: [ -e $CHECKBOX_DATA/suspend_single.log ] && sleep_test_log_check -v s3 $CHECKBOX_DATA/suspend_single.log |
4179 | +_description: |
4180 | + Automated check of the suspend log to look for errors reported by fwts |
4181 | |
4182 | plugin: attachment |
4183 | name: suspend/suspend-single-log-attach |
4184 | @@ -254,6 +267,16 @@ |
4185 | audio_settings store --file=$CHECKBOX_DATA/audio_settings_after_suspend; diff $CHECKBOX_DATA/audio_settings_before_suspend $CHECKBOX_DATA/audio_settings_after_suspend |
4186 | |
4187 | plugin: shell |
4188 | +name: suspend/audio_after_suspend_auto |
4189 | +requires: |
4190 | + device.category == 'AUDIO' |
4191 | + package.name == 'alsa-base' |
4192 | +depends: suspend/suspend_advanced_auto suspend/audio_before_suspend |
4193 | +_description: Verify that mixer settings after suspend are the same as before suspend. |
4194 | +command: |
4195 | + audio_settings store --file=$CHECKBOX_DATA/audio_settings_after_suspend; diff $CHECKBOX_DATA/audio_settings_before_suspend $CHECKBOX_DATA/audio_settings_after_suspend |
4196 | + |
4197 | +plugin: shell |
4198 | name: suspend/cpu_after_suspend |
4199 | depends: suspend/suspend_advanced suspend/cpu_before_suspend |
4200 | _description: Verify that all CPUs are online after resuming. |
4201 | @@ -309,7 +332,7 @@ |
4202 | environment.ROUTERS == 'multiple' |
4203 | user: root |
4204 | environ: WPA_BG_SSID WPA_BG_PSK |
4205 | -command: trap "rm -f /etc/NetworkManager/system-connections/$WPA_BG_SSID" EXIT; create_connection $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4206 | +command: trap "rm -f /etc/NetworkManager/system-connections/$WPA_BG_SSID" EXIT; create_connection wifi $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4207 | _description: |
4208 | Tests that the systems wireless hardware can connect to a router using WPA |
4209 | security and the 802.11b/g protocols after the system has been suspended. |
4210 | @@ -322,7 +345,7 @@ |
4211 | environment.ROUTERS == 'multiple' |
4212 | user: root |
4213 | environ: OPEN_BG_SSID |
4214 | -command: trap "rm -f /etc/NetworkManager/system-connections/$OPEN_BG_SSID" EXIT; create_connection $OPEN_BG_SSID; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4215 | +command: trap "rm -f /etc/NetworkManager/system-connections/$OPEN_BG_SSID" EXIT; create_connection wifi $OPEN_BG_SSID; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4216 | _description: |
4217 | Tests that the systems wireless hardware can connect to a router using no |
4218 | security and the 802.11b/g protocols after the system has been suspended. |
4219 | @@ -335,7 +358,7 @@ |
4220 | environment.ROUTERS == 'multiple' |
4221 | user: root |
4222 | environ: WPA_N_SSID WPA_N_PSK |
4223 | -command: trap "rm -f /etc/NetworkManager/system-connections/$WPA_N_SSID" EXIT; create_connection $WPA_N_SSID --security=wpa --key=$WPA_N_PSK; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4224 | +command: trap "rm -f /etc/NetworkManager/system-connections/$WPA_N_SSID" EXIT; create_connection wifi $WPA_N_SSID --security=wpa --key=$WPA_N_PSK; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4225 | _description: |
4226 | Tests that the systems wireless hardware can connect to a router using WPA |
4227 | security and the 802.11n protocol after the system has been suspended. |
4228 | @@ -348,7 +371,7 @@ |
4229 | environment.ROUTERS == 'multiple' |
4230 | user: root |
4231 | environ: OPEN_N_SSID |
4232 | -command: trap "rm -f /etc/NetworkManager/system-connections/$OPEN_N_SSID" EXIT; create_connection $OPEN_N_SSID; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4233 | +command: trap "rm -f /etc/NetworkManager/system-connections/$OPEN_N_SSID" EXIT; create_connection wifi $OPEN_N_SSID; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4234 | _description: |
4235 | Tests that the systems wireless hardware can connect to a router using no |
4236 | security and the 802.11n protocol after the system has been suspended. |
4237 | @@ -361,7 +384,7 @@ |
4238 | environment.ROUTERS == 'multiple' |
4239 | user: root |
4240 | environ: WPA_BG_SSID WPA_BG_PSK |
4241 | -command: trap "rm -f /etc/NetworkManager/system-connections/$WPA_BG_SSID" EXIT; create_connection $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4242 | +command: trap "rm -f /etc/NetworkManager/system-connections/$WPA_BG_SSID" EXIT; create_connection wifi $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4243 | _description: |
4244 | Tests that the systems wireless hardware can connect to a router using WPA |
4245 | security and the 802.11b/g protocols after the system has been suspended. |
4246 | @@ -374,7 +397,7 @@ |
4247 | environment.ROUTERS == 'multiple' |
4248 | user: root |
4249 | environ: OPEN_BG_SSID |
4250 | -command: trap "rm -f /etc/NetworkManager/system-connections/$OPEN_BG_SSID" EXIT; create_connection $OPEN_BG_SSID; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4251 | +command: trap "rm -f /etc/NetworkManager/system-connections/$OPEN_BG_SSID" EXIT; create_connection wifi $OPEN_BG_SSID; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4252 | _description: |
4253 | Tests that the systems wireless hardware can connect to a router using no |
4254 | security and the 802.11b/g protocols after the system has been suspended. |
4255 | @@ -387,7 +410,7 @@ |
4256 | environment.ROUTERS == 'multiple' |
4257 | user: root |
4258 | environ: WPA_N_SSID WPA_N_PSK |
4259 | -command: trap "rm -f /etc/NetworkManager/system-connections/$WPA_N_SSID" EXIT; create_connection $WPA_N_SSID --security=wpa --key=$WPA_N_PSK; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4260 | +command: trap "rm -f /etc/NetworkManager/system-connections/$WPA_N_SSID" EXIT; create_connection wifi $WPA_N_SSID --security=wpa --key=$WPA_N_PSK; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4261 | _description: |
4262 | Tests that the systems wireless hardware can connect to a router using WPA |
4263 | security and the 802.11n protocol after the system has been suspended. |
4264 | @@ -400,7 +423,7 @@ |
4265 | environment.ROUTERS == 'multiple' |
4266 | user: root |
4267 | environ: OPEN_N_SSID |
4268 | -command: trap "rm -f /etc/NetworkManager/system-connections/$OPEN_N_SSID" EXIT; create_connection $OPEN_N_SSID; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4269 | +command: trap "rm -f /etc/NetworkManager/system-connections/$OPEN_N_SSID" EXIT; create_connection wifi $OPEN_N_SSID; internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4270 | _description: |
4271 | Tests that the systems wireless hardware can connect to a router using no |
4272 | security and the 802.11n protocol after the system has been suspended. |
4273 | @@ -413,7 +436,7 @@ |
4274 | environment.ROUTERS == 'single' |
4275 | user: root |
4276 | environ: ROUTER_SSID ROUTER_PSK |
4277 | -command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection $ROUTER_SSID --security=wpa --key=$ROUTER_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4278 | +command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection wifi $ROUTER_SSID --security=wpa --key=$ROUTER_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4279 | _description: |
4280 | PURPOSE: |
4281 | Tests that the systems wireless hardware can connect to a router using WPA |
4282 | @@ -435,7 +458,7 @@ |
4283 | environment.ROUTERS == 'single' |
4284 | user: root |
4285 | environ: ROUTER_SSID |
4286 | -command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection $ROUTER_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4287 | +command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection wifi $ROUTER_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4288 | _description: |
4289 | PURPOSE: |
4290 | Tests that the systems wireless hardware can connect to a router using |
4291 | @@ -457,7 +480,7 @@ |
4292 | environment.ROUTERS == 'single' |
4293 | user: root |
4294 | environ: ROUTER_SSID ROUTER_PSK |
4295 | -command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection $ROUTER_SSID --security=wpa --key=$ROUTER_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4296 | +command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection wifi $ROUTER_SSID --security=wpa --key=$ROUTER_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4297 | _description: |
4298 | PURPOSE: |
4299 | Tests that the systems wireless hardware can connect to a router using WPA |
4300 | @@ -479,7 +502,7 @@ |
4301 | environment.ROUTERS == 'single' |
4302 | user: root |
4303 | environ: ROUTER_SSID |
4304 | -command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection $ROUTER_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4305 | +command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection wifi $ROUTER_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4306 | _description: |
4307 | PURPOSE: |
4308 | Tests that the systems wireless hardware can connect to a router using |
4309 | @@ -521,7 +544,8 @@ |
4310 | name: suspend/bluetooth_obex_after_suspend |
4311 | depends: suspend/suspend_advanced suspend/bluetooth_obex_before_suspend |
4312 | requires: |
4313 | - package.name == 'bluez' and package.name == 'obexd-client' |
4314 | + package.name == 'bluez' |
4315 | + package.name == 'obexd-client' |
4316 | device.category == 'BLUETOOTH' |
4317 | command: |
4318 | if [ -z "$BTDEVADDR" ] |
4319 | @@ -547,7 +571,8 @@ |
4320 | name: suspend/bluetooth_obex_after_suspend_auto |
4321 | depends: suspend/suspend_advanced_auto suspend/bluetooth_obex_before_suspend |
4322 | requires: |
4323 | - package.name == 'bluez' and package.name == 'obexd-client' |
4324 | + package.name == 'bluez' |
4325 | + package.name == 'obexd-client' |
4326 | device.category == 'BLUETOOTH' |
4327 | command: |
4328 | if [ -z "$BTDEVADDR" ] |
4329 | @@ -573,7 +598,8 @@ |
4330 | name: suspend/bluetooth_obex_send_after_suspend |
4331 | depends: suspend/suspend_advanced |
4332 | requires: |
4333 | - package.name == 'bluez' and package.name == 'obexftp' |
4334 | + package.name == 'bluez' |
4335 | + package.name == 'obexftp' |
4336 | device.category == 'BLUETOOTH' |
4337 | command: |
4338 | if [ -z "$BTDEVADDR" ] |
4339 | @@ -599,7 +625,8 @@ |
4340 | name: suspend/bluetooth_obex_send_after_suspend_auto |
4341 | depends: suspend/suspend_advanced_auto |
4342 | requires: |
4343 | - package.name == 'bluez' and package.name == 'obexftp' |
4344 | + package.name == 'bluez' |
4345 | + package.name == 'obexftp' |
4346 | device.category == 'BLUETOOTH' |
4347 | command: |
4348 | if [ -z "$BTDEVADDR" ] |
4349 | @@ -625,7 +652,8 @@ |
4350 | name: suspend/bluetooth_obex_browse_after_suspend |
4351 | depends: suspend/suspend_advanced |
4352 | requires: |
4353 | - package.name == 'bluez' and package.name == 'obexftp' |
4354 | + package.name == 'bluez' |
4355 | + package.name == 'obexftp' |
4356 | device.category == 'BLUETOOTH' |
4357 | command: |
4358 | if [ -z "$BTDEVADDR" ] |
4359 | @@ -651,7 +679,8 @@ |
4360 | name: suspend/bluetooth_obex_browse_after_suspend_auto |
4361 | depends: suspend/suspend_advanced_auto |
4362 | requires: |
4363 | - package.name == 'bluez' and package.name == 'obexftp' |
4364 | + package.name == 'bluez' |
4365 | + package.name == 'obexftp' |
4366 | device.category == 'BLUETOOTH' |
4367 | command: |
4368 | if [ -z "$BTDEVADDR" ] |
4369 | @@ -677,7 +706,8 @@ |
4370 | name: suspend/bluetooth_obex_get_after_suspend |
4371 | depends: suspend/suspend_advanced |
4372 | requires: |
4373 | - package.name == 'bluez' and package.name == 'obexftp' |
4374 | + package.name == 'bluez' |
4375 | + package.name == 'obexftp' |
4376 | device.category == 'BLUETOOTH' |
4377 | command: |
4378 | if [ -z "$BTDEVADDR" ] |
4379 | @@ -703,7 +733,8 @@ |
4380 | name: suspend/bluetooth_obex_get_after_suspend_auto |
4381 | depends: suspend/suspend_advanced_auto |
4382 | requires: |
4383 | - package.name == 'bluez' and package.name == 'obexftp' |
4384 | + package.name == 'bluez' |
4385 | + package.name == 'obexftp' |
4386 | device.category == 'BLUETOOTH' |
4387 | command: |
4388 | if [ -z "$BTDEVADDR" ] |
4389 | @@ -729,7 +760,8 @@ |
4390 | name: suspend/bluetooth_obex_after_suspend_manual |
4391 | depends: suspend/suspend_advanced suspend/bluetooth_obex_before_suspend_manual |
4392 | requires: |
4393 | - package.name == 'bluez' and package.name == 'obexd-client' |
4394 | + package.name == 'bluez' |
4395 | + package.name == 'obexd-client' |
4396 | device.category == 'BLUETOOTH' |
4397 | command: rfkill unblock bluetooth; obex_send `bluetooth_scan` $CHECKBOX_SHARE/data/images/JPEG_Color_Image_Ubuntu.jpg |
4398 | _description: |
4399 | @@ -780,6 +812,17 @@ |
4400 | _description: |
4401 | This will check to make sure that your audio device works properly after a suspend and resume. This may work fine with speakers and onboard microphone, however, it works best if used with a cable connecting the audio-out jack to the audio-in jack. |
4402 | |
4403 | +plugin: shell |
4404 | +name: suspend/record_playback_after_suspend_auto |
4405 | +depends: suspend/suspend_advanced_auto |
4406 | +requires: |
4407 | + device.category == 'AUDIO' |
4408 | + package.name == 'python-gst0.10' |
4409 | + package.name == 'alsa-base' |
4410 | +command: audio_test |
4411 | +_description: |
4412 | + This will check to make sure that your audio device works properly after a suspend and resume. This may work fine with speakers and onboard microphone, however, it works best if used with a cable connecting the audio-out jack to the audio-in jack. |
4413 | + |
4414 | plugin: attachment |
4415 | name: suspend/suspend-auto-single-log-attach |
4416 | command: [ -e $CHECKBOX_DATA/suspend_auto_single_log ] && cat $CHECKBOX_DATA/suspend_auto_single_log |
4417 | @@ -808,21 +851,17 @@ |
4418 | plugin: shell |
4419 | name: suspend/gpu_lockup_after_suspend |
4420 | requires: |
4421 | - package.name == 'fwts' |
4422 | package.name == 'wmctrl' |
4423 | package.name == 'mesa-utils' |
4424 | depends: suspend/suspend_advanced_auto |
4425 | -user: root |
4426 | command: gpu_test |
4427 | _description: |
4428 | PURPOSE: |
4429 | - Do some challenging operations, suspend the system, do more challenging |
4430 | - operations - then check for lockup on the GPU |
4431 | + Do some challenging operations then check for lockup on the GPU |
4432 | STEPS: |
4433 | 1. Create 2 glxgears windows and move them quickly |
4434 | - 2. Switch workspaces/viewports with wmctrl |
4435 | + 2. Switch workspaces with wmctrl |
4436 | 3. Launch an HTML5 video playback in firefox |
4437 | - 4. Suspend/resume |
4438 | VERIFICATION: |
4439 | After a 60s workload, check kern.log for reported GPU errors |
4440 | |
4441 | @@ -837,6 +876,16 @@ |
4442 | after a suspend/resume cycle. |
4443 | |
4444 | plugin: shell |
4445 | +name: suspend/wifi_resume_time_auto |
4446 | +depends: suspend/suspend_advanced_auto |
4447 | +requires: |
4448 | + device.category == 'WIRELESS' |
4449 | +command: network_reconnect_resume_test -t 20 -d wifi |
4450 | +_description: |
4451 | + Checks the length of time it takes to reconnect an existing wifi connection |
4452 | + after a suspend/resume cycle. |
4453 | + |
4454 | +plugin: shell |
4455 | name: suspend/network_resume_time |
4456 | depends: suspend/suspend_advanced |
4457 | requires: |
4458 | @@ -846,6 +895,16 @@ |
4459 | Checks the length of time it takes to reconnect an existing wired connection |
4460 | after a suspend/resume cycle. |
4461 | |
4462 | +plugin: shell |
4463 | +name: suspend/network_resume_time_auto |
4464 | +depends: suspend/suspend_advanced_auto |
4465 | +requires: |
4466 | + device.category == 'NETWORK' |
4467 | +command: network_reconnect_resume_test -t 10 -d wired |
4468 | +_description: |
4469 | + Checks the length of time it takes to reconnect an existing wired connection |
4470 | + after a suspend/resume cycle. |
4471 | + |
4472 | plugin: manual |
4473 | name: suspend/led_after_suspend/power |
4474 | depends: suspend/suspend_advanced |
4475 | @@ -943,10 +1002,8 @@ |
4476 | STEPS: |
4477 | 1. Make sure WLAN connection is established |
4478 | 2. WLAN LED should light |
4479 | - 3. Select Test to open Firefox |
4480 | - 4. WLAN LED should flash while downloading data |
4481 | VERIFICATION: |
4482 | - Did the WLAN LED light and flash as expected after resuming from suspend? |
4483 | + Did the WLAN LED light as expected after resuming from suspend? |
4484 | |
4485 | plugin: manual |
4486 | name: suspend/led_after_suspend/wlan-disabled |
4487 | |
4488 | === modified file 'jobs/usb.txt.in' |
4489 | --- jobs/usb.txt.in 2012-11-12 15:32:12 +0000 |
4490 | +++ jobs/usb.txt.in 2013-05-09 20:11:45 +0000 |
4491 | @@ -101,7 +101,7 @@ |
4492 | name: usb/storage-transfer |
4493 | depends: usb/insert |
4494 | user: root |
4495 | -command: removable_storage_test usb |
4496 | +command: removable_storage_test -s 268400000 usb |
4497 | _description: |
4498 | PURPOSE: |
4499 | This test will check your USB connection. |
4500 | @@ -119,7 +119,7 @@ |
4501 | usb.usb3 == 'supported' |
4502 | depends: usb3/insert |
4503 | user: root |
4504 | -command: removable_storage_test -m 500000000 -p 7 usb |
4505 | +command: removable_storage_test -s 268400000 -m 500000000 -p 7 usb |
4506 | _description: |
4507 | PURPOSE: |
4508 | This test will check your USB 3.0 connection. |
4509 | @@ -135,7 +135,7 @@ |
4510 | name: usb/storage-automated |
4511 | depends: usb/insert |
4512 | user: root |
4513 | -command: removable_storage_test usb |
4514 | +command: removable_storage_test -s 268400000 usb |
4515 | _description: |
4516 | This test is automated and executes after the usb/insert test is run. |
4517 | |
4518 | @@ -145,14 +145,14 @@ |
4519 | usb.usb3 == 'supported' |
4520 | depends: usb3/insert |
4521 | user: root |
4522 | -command: removable_storage_test -m 500000000 -p 7 usb |
4523 | +command: removable_storage_test -s 268400000 -m 500000000 -p 7 usb |
4524 | _description: |
4525 | This test is automated and executes after the usb3/insert test is run. |
4526 | |
4527 | plugin: shell |
4528 | name: usb/storage-preinserted |
4529 | user: root |
4530 | -command: removable_storage_test -l usb && removable_storage_test usb |
4531 | +command: removable_storage_test -l usb && removable_storage_test -s 268400000 usb |
4532 | _description: |
4533 | This is an automated version of usb/storage-automated and assumes that the |
4534 | server has usb storage devices plugged in prior to checkbox execution. It |
4535 | @@ -163,7 +163,7 @@ |
4536 | user: root |
4537 | requires: |
4538 | usb.usb3 == 'supported' |
4539 | -command: removable_storage_test -l usb && removable_storage_test -m 500000000 -p 7 usb |
4540 | +command: removable_storage_test -l usb && removable_storage_test -s 268400000 -m 500000000 -p 7 usb |
4541 | _description: |
4542 | This is an automated version of usb3/storage-automated and assumes that the |
4543 | server has usb 3.0 storage devices plugged in prior to checkbox execution. It |
4544 | |
4545 | === modified file 'jobs/virtualization.txt.in' |
4546 | --- jobs/virtualization.txt.in 2013-02-08 17:02:12 +0000 |
4547 | +++ jobs/virtualization.txt.in 2013-05-09 20:11:45 +0000 |
4548 | @@ -22,3 +22,19 @@ |
4549 | command: virtualization kvm --debug |
4550 | _description: |
4551 | Test to check that a cloud image boots and works properly with KVM |
4552 | + |
4553 | +plugin: shell |
4554 | +name: virtualization/xen_ok |
4555 | +requires: package.name == 'libvirt-bin' |
4556 | +user: root |
4557 | +command: virsh -c xen:/// domstate Domain-0 |
4558 | +_description: |
4559 | + Test to verify that the Xen Hypervisor is running. |
4560 | + |
4561 | +plugin: shell |
4562 | +name: virtualization/xen_check_vm |
4563 | +depends: virtualization/xen_ok |
4564 | +user: root |
4565 | +command: xen_test /images/xentest.img /images/xentest.xml |
4566 | +_description: |
4567 | + Test to check that a Xen domU image can boot and run on Xen on Ubuntu |
4568 | |
4569 | === modified file 'jobs/wireless.txt.in' |
4570 | --- jobs/wireless.txt.in 2012-10-16 20:45:22 +0000 |
4571 | +++ jobs/wireless.txt.in 2013-05-09 20:11:45 +0000 |
4572 | @@ -40,7 +40,7 @@ |
4573 | environment.ROUTERS == 'multiple' |
4574 | user: root |
4575 | environ: WPA_BG_SSID WPA_BG_PSK |
4576 | -command: trap "nmcli con delete id $WPA_BG_SSID" EXIT; create_connection $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4577 | +command: trap "nmcli con delete id $WPA_BG_SSID" EXIT; create_connection wifi $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4578 | _description: |
4579 | Tests that the systems wireless hardware can connect to a router using WPA |
4580 | security and the 802.11b/g protocols. |
4581 | @@ -52,7 +52,7 @@ |
4582 | environment.ROUTERS == 'multiple' |
4583 | user: root |
4584 | environ: OPEN_BG_SSID |
4585 | -command: trap "nmcli con delete id $OPEN_BG_SSID" EXIT; create_connection $OPEN_BG_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4586 | +command: trap "nmcli con delete id $OPEN_BG_SSID" EXIT; create_connection wifi $OPEN_BG_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4587 | _description: |
4588 | Tests that the systems wireless hardware can connect to a router using no |
4589 | security and the 802.11b/g protocols. |
4590 | @@ -64,7 +64,7 @@ |
4591 | environment.ROUTERS == 'multiple' |
4592 | user: root |
4593 | environ: WPA_N_SSID WPA_N_PSK |
4594 | -command: trap "nmcli con delete id $WPA_N_SSID" EXIT; create_connection $WPA_N_SSID --security=wpa --key=$WPA_N_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4595 | +command: trap "nmcli con delete id $WPA_N_SSID" EXIT; create_connection wifi $WPA_N_SSID --security=wpa --key=$WPA_N_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4596 | _description: |
4597 | Tests that the systems wireless hardware can connect to a router using WPA |
4598 | security and the 802.11n protocol. |
4599 | @@ -76,7 +76,7 @@ |
4600 | environment.ROUTERS == 'multiple' |
4601 | user: root |
4602 | environ: OPEN_N_SSID |
4603 | -command: trap "nmcli con delete id $OPEN_N_SSID" EXIT; create_connection $OPEN_N_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4604 | +command: trap "nmcli con delete id $OPEN_N_SSID" EXIT; create_connection wifi $OPEN_N_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4605 | _description: |
4606 | Tests that the systems wireless hardware can connect to a router using no |
4607 | security and the 802.11n protocol. |
4608 | @@ -88,7 +88,7 @@ |
4609 | environment.ROUTERS == 'single' |
4610 | user: root |
4611 | environ: ROUTER_SSID ROUTER_PSK |
4612 | -command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection $ROUTER_SSID --security=wpa --key=$ROUTER_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4613 | +command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection wifi $ROUTER_SSID --security=wpa --key=$ROUTER_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4614 | _description: |
4615 | PURPOSE: |
4616 | Tests that the systems wireless hardware can connect to a router using WPA |
4617 | @@ -109,7 +109,7 @@ |
4618 | environment.ROUTERS == 'single' |
4619 | user: root |
4620 | environ: ROUTER_SSID |
4621 | -command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection $ROUTER_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4622 | +command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection wifi $ROUTER_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4623 | _description: |
4624 | PURPOSE: |
4625 | Tests that the systems wireless hardware can connect to a router using |
4626 | @@ -130,7 +130,7 @@ |
4627 | environment.ROUTERS == 'single' |
4628 | user: root |
4629 | environ: ROUTER_SSID ROUTER_PSK |
4630 | -command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection $ROUTER_SSID --security=wpa --key=$ROUTER_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4631 | +command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection wifi $ROUTER_SSID --security=wpa --key=$ROUTER_PSK && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4632 | _description: |
4633 | PURPOSE: |
4634 | Tests that the systems wireless hardware can connect to a router using WPA |
4635 | @@ -151,7 +151,7 @@ |
4636 | environment.ROUTERS == 'single' |
4637 | user: root |
4638 | environ: ROUTER_SSID |
4639 | -command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection $ROUTER_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4640 | +command: trap "nmcli con delete id $ROUTER_SSID" EXIT; create_connection wifi $ROUTER_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4641 | _description: |
4642 | PURPOSE: |
4643 | Tests that the systems wireless hardware can connect to a router using |
4644 | @@ -172,7 +172,7 @@ |
4645 | device.category == 'WIRELESS' |
4646 | user: root |
4647 | environ: WPA_BG_SSID WPA_BG_PSK SERVER_IPERF |
4648 | -command: trap "nmcli con delete id $WPA_BG_SSID" EXIT; create_connection $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK && iperf -c $SERVER_IPERF -t 300 -i 30 |
4649 | +command: trap "nmcli con delete id $WPA_BG_SSID" EXIT; create_connection wifi $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK && iperf -c $SERVER_IPERF -t 300 -i 30 |
4650 | _description: |
4651 | Tests the performance of a systems wireless connection through the iperf tool. |
4652 | |
4653 | @@ -183,7 +183,7 @@ |
4654 | device.category == 'WIRELESS' |
4655 | user: root |
4656 | environ: WPA_BG_SSID WPA_BG_PSK SERVER_IPERF |
4657 | -command: trap "nmcli con delete id $WPA_BG_SSID" EXIT; create_connection $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK && iperf -c $SERVER_IPERF -t 300 -i 30 -u -b 100m -p 5050 |
4658 | +command: trap "nmcli con delete id $WPA_BG_SSID" EXIT; create_connection wifi $WPA_BG_SSID --security=wpa --key=$WPA_BG_PSK && iperf -c $SERVER_IPERF -t 300 -i 30 -u -b 100m -p 5050 |
4659 | _description: |
4660 | Tests the performance of a systems wireless connection through the iperf tool, using UDP packets. |
4661 | |
4662 | @@ -192,7 +192,7 @@ |
4663 | requires: device.category == 'WIRELESS' |
4664 | user: root |
4665 | environ: OPEN_A_SSID |
4666 | -command: trap "nmcli con delete id $OPEN_A_SSID" EXIT; create_connection $OPEN_A_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4667 | +command: trap "nmcli con delete id $OPEN_A_SSID" EXIT; create_connection wifi $OPEN_A_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4668 | _description: |
4669 | Test that the system's wireless hardware can connect to a router using the |
4670 | 802.11a protocol. This requires that you have a router pre-configured to only |
4671 | @@ -203,7 +203,7 @@ |
4672 | requires: device.category == 'WIRELESS' |
4673 | user: root |
4674 | environ: OPEN_B_SSID |
4675 | -command: trap "nmcli con delete id $OPEN_B_SSID" EXIT; create_connection $OPEN_B_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4676 | +command: trap "nmcli con delete id $OPEN_B_SSID" EXIT; create_connection wifi $OPEN_B_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4677 | _description: |
4678 | Test that the system's wireless hardware can connect to a router using the |
4679 | 802.11b protocol. This requires that you have a router pre-configured to only |
4680 | @@ -214,7 +214,7 @@ |
4681 | requires: device.category == 'WIRELESS' |
4682 | user: root |
4683 | environ: OPEN_G_SSID |
4684 | -command: trap "nmcli con delete id $OPEN_G_SSID" EXIT; create_connection $OPEN_G_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4685 | +command: trap "nmcli con delete id $OPEN_G_SSID" EXIT; create_connection wifi $OPEN_G_SSID && internet_test --interface=`nmcli dev status | awk '/802-11-wireless/ {print $1}'` |
4686 | _description: |
4687 | Test that the system's wireless hardware can connect to a router using the |
4688 | 802.11g protocol. This requires that you have a router pre-configured to only |
4689 | |
4690 | === modified file 'plainbox/.coveragerc' |
4691 | --- plainbox/.coveragerc 2012-12-03 16:15:23 +0000 |
4692 | +++ plainbox/.coveragerc 2013-05-09 20:11:45 +0000 |
4693 | @@ -1,6 +1,17 @@ |
4694 | [run] |
4695 | branch = True |
4696 | source = plainbox |
4697 | +omit = |
4698 | + plainbox/tests.py |
4699 | + plainbox/vendor/* |
4700 | + plainbox/test_* |
4701 | + plainbox/impl/test_* |
4702 | + plainbox/impl/integration_tests.py |
4703 | + plainbox/impl/commands/test_* |
4704 | + plainbox/impl/exporter/test_* |
4705 | + plainbox/impl/transport/test_* |
4706 | + plainbox/impl/secure/test_* |
4707 | + plainbox/testing_utils/test_* |
4708 | |
4709 | [report] |
4710 | exclude_lines = |
4711 | |
4712 | === modified file 'plainbox/MANIFEST.in' |
4713 | --- plainbox/MANIFEST.in 2012-12-03 16:15:23 +0000 |
4714 | +++ plainbox/MANIFEST.in 2013-05-09 20:11:45 +0000 |
4715 | @@ -1,3 +1,8 @@ |
4716 | include README.md |
4717 | include COPYING |
4718 | include mk-interesting-graphs.sh |
4719 | +recursive-include plainbox/test-data/ *.json *.xml *.txt |
4720 | +recursive-include docs *.rst |
4721 | +include docs/conf.py |
4722 | +include plainbox/data/report/hardware-1_0.rng |
4723 | +include plainbox/data/org.freedesktop.policykit.pkexec.policy |
4724 | |
4725 | === removed file 'plainbox/README.md' |
4726 | --- plainbox/README.md 2013-02-22 16:26:25 +0000 |
4727 | +++ plainbox/README.md 1970-01-01 00:00:00 +0000 |
4728 | @@ -1,122 +0,0 @@ |
4729 | -plainbox |
4730 | -======== |
4731 | - |
4732 | -plainbox is a plain replacement for checkbox |
4733 | - |
4734 | -[![Build Status](https://travis-ci.org/zyga/plainbox.png)](https://travis-ci.org/zyga/checkbox) |
4735 | - |
4736 | - |
4737 | -Hacking |
4738 | -======= |
4739 | - |
4740 | -To start hacking use virtualenv with python3. Three steps: |
4741 | - |
4742 | - |
4743 | -1. First install a couple of packages: |
4744 | - |
4745 | - $ sudo apt-get install python-virtualenv python3-dev |
4746 | - |
4747 | -2. Then set up the virtualenv. A convenience script is provided to do this for |
4748 | - you: |
4749 | - |
4750 | - $ ./mk-venv.sh /path/to/venv |
4751 | - |
4752 | -This will create a virtualenv under /tmp/venv and show the command to activate |
4753 | -it. |
4754 | - |
4755 | -You can also set this up manually: |
4756 | - |
4757 | - $ virtualenv -p python3 /path/to/venv |
4758 | - |
4759 | -If you do the manual setup and you're on Ubuntu, you'll need to update the |
4760 | -version of distribute that is installed inside the virtualenv to install |
4761 | -coverage. If you used the convenience script, it takes care of this part for |
4762 | -you. |
4763 | - |
4764 | - (venv) $ easy_install -U distribute |
4765 | - (venv) $ easy_install -U coverage |
4766 | - |
4767 | -3. Once your virtualenv is set up, you need to activate it: |
4768 | - |
4769 | - $ . /path/to/venv/bin/activate |
4770 | - |
4771 | - |
4772 | -Then 'develop' the package, this will setup proper path imports and create stub |
4773 | -executables for you. All imports will now use your directory (no need to set |
4774 | -PYTHONPATH to anything) |
4775 | - |
4776 | - (venv) $ python3 setup.py develop |
4777 | - |
4778 | -You will be now able to run plainbox: |
4779 | - |
4780 | - (venv) $ plainbox --help |
4781 | - |
4782 | -Testing |
4783 | -======= |
4784 | - |
4785 | -When hacking, run tests with code coverage (peek at .coveragerc): |
4786 | - |
4787 | - (venv) $ coverage run setup.py test |
4788 | - |
4789 | -You can also use the standard 'discover' command from python3 unittest module: |
4790 | - |
4791 | - (venv) $ coverage run -m unittest discover |
4792 | - |
4793 | -...then look at test report coverage in the console: |
4794 | - |
4795 | - (venv) $ coverage report |
4796 | - |
4797 | -...or in your browser: |
4798 | - |
4799 | - (venv) $ coverage html |
4800 | - (venv) $ xdg-open htmlcov/index.html |
4801 | - |
4802 | -Using the checkbox submodule |
4803 | -============================ |
4804 | - |
4805 | -This git tree uses the submodule system to put the entire checkbox source code |
4806 | -repository in the checkbox directory. To use it, after you get the plainbox |
4807 | -tree run the following commands: |
4808 | - |
4809 | - $ git submodule init |
4810 | - $ git submodule update |
4811 | - |
4812 | -You only need to run init once, and update each time the chcekbox submodule is |
4813 | -updated to point to new commit in the checkbox tree. If you use this all of |
4814 | -plainbox tests and actual code will run using the embedded copy of checkbox. If |
4815 | -you don't do this you need to install checkbox globally using a system package. |
4816 | - |
4817 | -VirtualEnv and checkbox Jobs |
4818 | -============================ |
4819 | - |
4820 | -When using checkbox inside virtualenv some jobs will fail as they need access |
4821 | -to system python libraries (most notably for dbus). checkbox jobs don't rewrite |
4822 | -their scripts shebang lines so when installed from the system package it will |
4823 | -fail inside a typical virtualenv. This will be addressed in the next release. |
4824 | - |
4825 | -To work around it, temporarily, you can install plainbox without virtualbox and |
4826 | -use it as is. This will work correctly (use the package from |
4827 | -ppa:checkbox-dev/ppa if possible) |
4828 | - |
4829 | -Known Issues |
4830 | -============ |
4831 | - |
4832 | -There are a few issues that we are currently aware of: |
4833 | - |
4834 | -1) Expressions are not evaluated the same way as they were in checkbox. This |
4835 | -affects only a few jobs and will be corrected in the next release. Most likely |
4836 | -we will adapt jobs to follow plainbox logic and leave the checkbox interpreter |
4837 | -as is as plainbox is less surprising and actually fixes one important bug where |
4838 | -an expression like: |
4839 | - |
4840 | - package.name == "foo" and package.version == "1.0" |
4841 | - |
4842 | -When executed inside checkbox it would match (evaluate as true) when the |
4843 | -package "foo" existed and any _other_ package with version 1.0 existed, thus |
4844 | -making the test worthless. In plainbox this test behaves as expected but it is |
4845 | -non the less not doing what checkbox did so it causes some problems. |
4846 | - |
4847 | -2) Many job types are still not supported. The only supported jobs are: shell, resource, |
4848 | -local and manual |
4849 | - |
4850 | -3) Jobs that use the environ and user keys are not supported. Those keys are ignored |
4851 | |
4852 | === added file 'plainbox/README.rst' |
4853 | --- plainbox/README.rst 1970-01-01 00:00:00 +0000 |
4854 | +++ plainbox/README.rst 2013-05-09 20:11:45 +0000 |
4855 | @@ -0,0 +1,23 @@ |
4856 | +PlainBox |
4857 | +======== |
4858 | + |
4859 | +PlainBox is a hardware testing tool useful for certifying laptops, desktops and |
4860 | +servers with Ubuntu. It is a replacement for the current certification tool, |
4861 | +CheckBox. |
4862 | + |
4863 | +PlainBox complements CheckBox. It uses all the hardware test definitions, |
4864 | +scripts and libraries from CheckBox. PlainBox is currently in alpha stages, |
4865 | +having mostly but not entirely complete core and a developer-centric command |
4866 | +line interface. |
4867 | + |
4868 | +External Documentation Links |
4869 | +============================ |
4870 | + |
4871 | +* `Using PlainBox <http://pythonhosted.org/plainbox/usage.html>`_ |
4872 | +* `Hacking on PlainBox <http://pythonhosted.org/plainbox/dev/intro.html>`_ |
4873 | +* `Testing PlainBox <http://pythonhosted.org/plainbox/dev/intro.html#running-plainbox-tests>`_ |
4874 | + |
4875 | +Known Issues |
4876 | +============ |
4877 | + |
4878 | +`List of bugs tagged with 'plainbox' on lp:checkbox <https://bugs.launchpad.net/checkbox/+bugs?field.searchtext=&orderby=-importance&field.status%3Alist=NEW&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_commenter=&field.subscriber=&field.structural_subscriber=&field.tag=plainbox&field.tags_combinator=ANY&field.has_cve.used=&field.omit_dupes.used=&field.omit_dupes=on&field.affects_me.used=&field.has_patch.used=&field.has_branches.used=&field.has_branches=on&field.has_no_branches.used=&field.has_no_branches=on&field.has_blueprints.used=&field.has_blueprints=on&field.has_no_blueprints.used=&field.has_no_blueprints=on&search=Search>`_ |
4879 | |
4880 | === added file 'plainbox/Vagrantfile' |
4881 | --- plainbox/Vagrantfile 1970-01-01 00:00:00 +0000 |
4882 | +++ plainbox/Vagrantfile 2013-05-09 20:11:45 +0000 |
4883 | @@ -0,0 +1,42 @@ |
4884 | +# -*- mode: ruby -*- |
4885 | +# vi: set ft=ruby sw=2 ts=2 : |
4886 | + |
4887 | +Vagrant::Config.run do |config| |
4888 | + |
4889 | + config.ssh.timeout = 60 |
4890 | + |
4891 | + # Define a Ubuntu Server image (cloud) for the 12.04 release (precise) |
4892 | + config.vm.define :precise do |precise_config| |
4893 | + precise_config.vm.box = "precise-cloud-i386" |
4894 | + precise_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-i386-vagrant-disk1.box" |
4895 | + end |
4896 | + |
4897 | + # Define a Ubuntu Server image (cloud) for the 12.10 release (quantal) |
4898 | + config.vm.define :quantal do |quantal_config| |
4899 | + quantal_config.vm.box = "quantal-cloud-i386" |
4900 | + quantal_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/quantal/current/quantal-server-cloudimg-i386-vagrant-disk1.box" |
4901 | + end |
4902 | + |
4903 | + # Define a Ubuntu Server image (cloud) for the 13.04 release (raring) |
4904 | + config.vm.define :raring do |raring_config| |
4905 | + raring_config.vm.box = "raring-cloud-i386" |
4906 | + raring_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box" |
4907 | + end |
4908 | + |
4909 | + # For debugging and later future GUI testing |
4910 | + if ENV.key? "VAGRANT_GUI" |
4911 | + config.vm.boot_mode = :gui |
4912 | + end |
4913 | + |
4914 | + # Setup an apt cache if one is available |
4915 | + if ENV.key? "VAGRANT_APT_CACHE" |
4916 | + config.vm.provision :shell, :inline => "echo 'Acquire::http { Proxy \"#{ENV['VAGRANT_APT_CACHE']}\"; };' > /etc/apt/apt.conf" |
4917 | + end |
4918 | + |
4919 | + # Update to have the latest packages, this is needed because the image comes |
4920 | + # with an old (and no longer working) apt cache and links to many packages no |
4921 | + # longer work. |
4922 | + config.vm.provision :shell, :inline => "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade --yes" |
4923 | + # Create a cool symlink so that everyone knows where to go to |
4924 | + config.vm.provision :shell, :inline => "ln --no-dereference --force --symbolic /vagrant /home/vagrant/plainbox" |
4925 | +end |
4926 | |
4927 | === added directory 'plainbox/daily-package-testing' |
4928 | === added file 'plainbox/daily-package-testing/README' |
4929 | --- plainbox/daily-package-testing/README 1970-01-01 00:00:00 +0000 |
4930 | +++ plainbox/daily-package-testing/README 2013-05-09 20:11:45 +0000 |
4931 | @@ -0,0 +1,18 @@ |
4932 | +About |
4933 | +===== |
4934 | + |
4935 | +This Vagrantfile can be used to see how packaged version of plainbox from the |
4936 | +ppa looks like. |
4937 | + |
4938 | +The package is built with this recipe: |
4939 | +https://code.launchpad.net/~checkbox-dev/+recipe/plainbox-daily |
4940 | + |
4941 | +Usage instructions |
4942 | +================== |
4943 | + |
4944 | +$TARGET is either precise or quantal |
4945 | + |
4946 | +$ vagrant up $TARGET |
4947 | +$ vagrant ssh $TARGET |
4948 | +$ plainbox --help |
4949 | +$ exit |
4950 | |
4951 | === added file 'plainbox/daily-package-testing/Vagrantfile' |
4952 | --- plainbox/daily-package-testing/Vagrantfile 1970-01-01 00:00:00 +0000 |
4953 | +++ plainbox/daily-package-testing/Vagrantfile 2013-05-09 20:11:45 +0000 |
4954 | @@ -0,0 +1,48 @@ |
4955 | +# -*- mode: ruby -*- |
4956 | +# vi: set ft=ruby sw=2 ts=2 : |
4957 | + |
4958 | +Vagrant::Config.run do |config| |
4959 | + |
4960 | + config.ssh.timeout = 60 |
4961 | + |
4962 | + # Define a Ubuntu Server image (cloud) for the 12.04 release (precise) |
4963 | + config.vm.define :precise do |precise_config| |
4964 | + precise_config.vm.box = "precise-cloud-i386" |
4965 | + precise_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-i386-vagrant-disk1.box" |
4966 | + end |
4967 | + |
4968 | + # Define a Ubuntu Server image (cloud) for the 12.10 release (quantal) |
4969 | + config.vm.define :quantal do |quantal_config| |
4970 | + quantal_config.vm.box = "quantal-cloud-i386" |
4971 | + quantal_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/quantal/current/quantal-server-cloudimg-i386-vagrant-disk1.box" |
4972 | + end |
4973 | + |
4974 | + # Define a Ubuntu Server image (cloud) for the 13.04 release (raring) |
4975 | + config.vm.define :raring do |raring_config| |
4976 | + raring_config.vm.box = "raring-cloud-i386" |
4977 | + raring_config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box" |
4978 | + end |
4979 | + |
4980 | + # For debugging and later future GUI testing |
4981 | + if ENV.key? "VAGRANT_GUI" |
4982 | + config.vm.boot_mode = :gui |
4983 | + end |
4984 | + |
4985 | + # Setup an apt cache if one is available |
4986 | + if ENV.key? "VAGRANT_APT_CACHE" |
4987 | + config.vm.provision :shell, :inline => "echo 'Acquire::http { Proxy \"#{ENV['VAGRANT_APT_CACHE']}\"; };' > /etc/apt/apt.conf" |
4988 | + end |
4989 | + |
4990 | + # Update to have the latest packages, this is needed because the image comes |
4991 | + # with an old (and no longer working) apt cache and links to many packages no |
4992 | + # longer work. |
4993 | + config.vm.provision :shell, :inline => "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade --yes" |
4994 | + # Install package that provides add-apt-repository |
4995 | + config.vm.provision :shell, :inline => "apt-get install --yes python-software-properties" |
4996 | + # Add the checkbox-dev/ppa ppa with daily builds |
4997 | + config.vm.provision :shell, :inline => "add-apt-repository ppa:checkbox-dev/ppa" |
4998 | + # Update apt cache again |
4999 | + config.vm.provision :shell, :inline => "apt-get update" |
5000 | + # Install plainbox |
The diff has been truncated for viewing.
Self-approving.