Lomiri
fixture_setup.py
1 # -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
2 #
3 # Lomiri Autopilot Test Suite
4 # Copyright (C) 2014, 2015 Canonical Ltd.
5 #
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #
19 
20 """Set up and clean up fixtures for the Lomiri acceptance tests."""
21 
22 import os
23 import subprocess
24 import sysconfig
25 
26 import fixtures
27 
28 import lomiri
29 
30 
31 class Tutorial(fixtures.Fixture):
32 
33  def __init__(self, enable):
34  super().__init__()
35  self.enable = enable
36 
37  def setUp(self):
38  super().setUp()
39  original_state = self._is_tutorial_enabled()
40  if self.enable != original_state:
41  self.addCleanup(self._set_tutorial, original_state)
42  self._set_tutorial(self.enable)
43 
44  def _is_tutorial_enabled(self):
45  command = [
46  'dbus-send', '--system', '--print-reply',
47  '--dest=org.freedesktop.Accounts',
48  '/org/freedesktop/Accounts/User32011',
49  'org.freedesktop.DBus.Properties.Get',
50  'string:com.lomiri.shell.AccountsService',
51  'string:DemoEdges2'
52  ]
53  output = subprocess.check_output(command, universal_newlines=True)
54  return True if output.count('true') else False
55 
56  def _set_tutorial(self, value):
57  value_string = 'true' if value else 'false'
58  command = [
59  'dbus-send', '--system', '--print-reply',
60  '--dest=com.canonical.PropertyService',
61  '/com/canonical/PropertyService',
62  'com.canonical.PropertyService.SetProperty',
63  'string:edge', 'boolean:{}'.format(value_string)
64  ]
65  subprocess.check_output(command)