32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
class ShillTemporaryProfile(object):
|
|
"""Context enclosing the use of a temporary shill profile. It takes
|
|
a shill manager dbus object and profile name, and makes sure that
|
|
this profile is pushed atop the topmost default profile for the duration
|
|
of this object lifetime."""
|
|
def __init__(self, manager, profile_name='test'):
|
|
self._manager = manager
|
|
self._profile_name = profile_name
|
|
|
|
|
|
def __enter__(self):
|
|
self._manager.PopAllUserProfiles()
|
|
try:
|
|
self._manager.RemoveProfile(self._profile_name)
|
|
except:
|
|
pass
|
|
self._manager.CreateProfile(self._profile_name)
|
|
self._manager.PushProfile(self._profile_name)
|
|
return self
|
|
|
|
|
|
def __exit__(self, exception, value, traceback):
|
|
try:
|
|
self._manager.PopProfile(self._profile_name)
|
|
self._manager.RemoveProfile(self._profile_name)
|
|
except:
|
|
pass
|