2 from basetest
import BaseTest
6 sys
.path
.insert(0, '..')
7 from zeroinstall
.injector
import packagekit
, handler
, model
8 from zeroinstall
.support
import tasks
19 return "/tid/%d" % self
.x
25 def connect_to_signal(self
, signal
, cb
):
26 self
.signals
[signal
] = cb
28 def get_dbus_method(self
, method
):
29 if hasattr(self
, method
):
30 return getattr(self
, method
)
31 raise dbus
.exceptions
.DBusException('org.freedesktop.DBus.Error.UnknownMethod')
33 def SetLocale(self
, locale
):
37 def Resolve(self
, query
, package_names
):
42 for package_name
in package_names
:
43 if package_name
== 'gimp':
45 self
.signals
['Package'](info
, "gimp;2.6.8-2ubuntu1.1;amd64;Ubuntu", "summary")
47 self
.signals
['Error']("package-not-found", "Package name %s could not be resolved" % package_name
)
50 self
.signals
['Finished'](result
, 100)
54 def GetDetails(self
, package_ids
):
58 for package_id
in package_ids
:
59 assert package_id
== "gimp;2.6.8-2ubuntu1.1;amd64;Ubuntu"
60 self
.signals
['Details'](package_id
, "GPL", "Graphics", "detail", "http://foo", 100)
63 self
.signals
['Finished']("success", 100)
66 class TestPackageKit(BaseTest
):
72 BaseTest
.tearDown(self
)
74 def find_module(self
, fullname
, path
=None):
75 if fullname
.startswith('dbus'):
76 raise ImportError("No (dummy) D-BUS")
84 sys
.meta_path
= [self
]
85 del sys
.modules
['dbus']
89 pk
= packagekit
.PackageKit()
90 assert pk
.available
== False
92 factory
= Exception("not called")
93 pk
.get_candidates('gimp', factory
, 'package:null')
96 sys
.modules
['dbus'] = old_dbus
98 def testNoPackageKit(self
):
100 pk
= packagekit
.PackageKit()
101 assert not pk
.available
103 factory
= Exception("not called")
104 pk
.get_candidates('gimp', factory
, 'package:null')
106 def testPackageKit05(self
):
107 #import logging; logging.getLogger().setLevel(logging.DEBUG)
109 dbus
.system_services
['org.freedesktop.PackageKit'] = {
110 '/org/freedesktop/PackageKit': PackageKit05(),
111 '/tid/1': PackageKit05
.Tid1(),
112 '/tid/2': PackageKit05
.Tid2(),
115 pk
= packagekit
.PackageKit()
118 factory
= Exception("not called")
119 pk
.get_candidates('gimp', factory
, 'package:test')
121 blocker
= pk
.fetch_candidates(["gimp"])
122 h
.wait_for_blocker(blocker
)
126 def factory(impl_id
, only_if_missing
, installed
):
127 assert impl_id
.startswith('package:')
128 assert only_if_missing
is True
129 assert installed
is False
133 impl
= model
.DistributionImplementation(feed
, impl_id
, self
)
134 impl
.installed
= installed
135 impls
[impl_id
] = impl
138 pk
.get_candidates('gimp', factory
, 'package:test')
139 self
.assertEquals(["package:test:gimp:2.6.8-2"], impls
.keys())
141 if __name__
== '__main__':