~mvo/software-center/workaround-gtk-regression-lp986186

« back to all changes in this revision

Viewing changes to softwarecenter/testutils.py

  • Committer: Kiwinote
  • Date: 2012-03-15 22:36:31 UTC
  • mfrom: (2867 trunk)
  • mto: This revision was merged to the branch mainline in revision 2881.
  • Revision ID: kiwinote@gmail.com-20120315223631-lvea6t5sydpkkqni
mergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
 
25
25
 
26
26
m_dbus = m_polkit = m_aptd = None
 
27
 
 
28
 
27
29
def start_dummy_backend():
28
30
    global m_dbus, m_polkit, m_aptd
29
31
    # start private dbus
30
 
    m_dbus = subprocess.Popen(["dbus-daemon", 
31
 
                               "--session", 
 
32
    m_dbus = subprocess.Popen(["dbus-daemon",
 
33
                               "--session",
32
34
                               "--nofork",
33
 
                               "--print-address"], 
 
35
                               "--print-address"],
34
36
                              stdout=subprocess.PIPE)
35
37
    # get and store address
36
38
    bus_address = m_dbus.stdout.readline().strip()
37
39
    os.environ["SOFTWARE_CENTER_APTD_FAKE"] = bus_address
38
40
    # start fake polkit from python-aptdaemon.test
39
 
    env = { "DBUS_SESSION_BUS_ADDRESS" : bus_address,
40
 
            "DBUS_SYSTEM_BUS_ADDRESS" : bus_address,
 
41
    env = {"DBUS_SESSION_BUS_ADDRESS": bus_address,
 
42
           "DBUS_SYSTEM_BUS_ADDRESS": bus_address,
41
43
          }
42
44
    m_polkit = subprocess.Popen(
43
 
        ["/usr/share/aptdaemon/tests/fake-polkitd.py", 
 
45
        ["/usr/share/aptdaemon/tests/fake-polkitd.py",
44
46
         "--allowed-actions=all"],
45
47
        env=env)
46
48
    # start aptd in dummy mode
51
53
    # to ensure that the fake daemon and fake polkit is ready
52
54
    time.sleep(0.5)
53
55
 
 
56
 
54
57
def stop_dummy_backend():
55
58
    global m_dbus, m_polkit, m_aptd
56
59
    m_aptd.terminate()
60
63
    m_dbus.terminate()
61
64
    m_dbus.wait()
62
65
 
 
66
 
63
67
def get_test_gtk3_viewmanager():
64
68
    from gi.repository import Gtk
65
69
    from softwarecenter.ui.gtk3.session.viewmanager import (
68
72
    if not vm:
69
73
        notebook = Gtk.Notebook()
70
74
        vm = ViewManager(notebook)
71
 
        vm.view_to_pane = {None : None}
 
75
        vm.view_to_pane = {None: None}
72
76
    return vm
73
77
 
 
78
 
74
79
def get_test_db():
75
80
    from softwarecenter.db.database import StoreDatabase
76
81
    from softwarecenter.db.pkginfo import get_pkg_info
81
86
    db.open()
82
87
    return db
83
88
 
 
89
 
84
90
def get_test_install_backend():
85
91
    from softwarecenter.backend.installbackend import get_install_backend
86
92
    backend = get_install_backend()
87
93
    return backend
88
94
 
 
95
 
89
96
def get_test_gtk3_icon_cache():
90
97
    from softwarecenter.ui.gtk3.utils import get_sc_icon_theme
91
98
    import softwarecenter.paths
92
99
    icons = get_sc_icon_theme(softwarecenter.paths.datadir)
93
100
    return icons
94
101
 
 
102
 
95
103
def get_test_pkg_info():
96
104
    from softwarecenter.db.pkginfo import get_pkg_info
97
105
    cache = get_pkg_info()
98
106
    cache.open()
99
107
    return cache
100
108
 
 
109
 
101
110
def get_test_datadir():
102
111
    import softwarecenter.paths
103
112
    return softwarecenter.paths.datadir
104
113
 
 
114
 
105
115
def get_test_categories(db):
106
116
    import softwarecenter.paths
107
117
    from softwarecenter.db.categories import CategoriesParser
108
118
    parser = CategoriesParser(db)
109
 
    cats = parser.parse_applications_menu(softwarecenter.paths.APP_INSTALL_PATH)
 
119
    cats = parser.parse_applications_menu(
 
120
        softwarecenter.paths.APP_INSTALL_PATH)
110
121
    return cats
111
122
 
 
123
 
112
124
def get_test_enquirer_matches(db, query=None, limit=20, sortmode=0):
113
125
    from softwarecenter.db.enquire import AppEnquire
114
126
    import xapian
121
133
                       nonblocking_load=False)
122
134
    return enquirer.matches
123
135
 
 
136
 
124
137
def do_events():
125
138
    from gi.repository import GObject
126
139
    main_loop = GObject.main_context_default()
127
140
    while main_loop.pending():
128
141
        main_loop.iteration()
129
142
 
 
143
 
130
144
def get_mock_app_from_real_app(real_app):
131
145
    """ take a application and return a app where the details are a mock
132
146
        of the real details so they can easily be modified
138
152
    details = app.get_details(db)
139
153
    details_mock = Mock(details)
140
154
    for a in dir(details):
141
 
        if a.startswith("_"): continue
 
155
        if a.startswith("_"):
 
156
            continue
142
157
        setattr(details_mock, a, getattr(details, a))
143
158
    app.details = details_mock
144
159
    app.get_details = lambda db: app.details
145
160
    return app
146
161
 
 
162
 
147
163
def setup_test_env():
148
164
    """ Setup environment suitable for running the test/* code in a checkout.
149
165
        This includes PYTHONPATH, sys.path and softwarecenter.paths.datadir.
163
179
# factory stuff for the agent
164
180
def make_software_center_agent_app_dict():
165
181
    app_dict = {
166
 
        u'archive_root' : 'http://private-ppa.launchpad.net/',
 
182
        u'archive_root': 'http://private-ppa.launchpad.net/',
167
183
        u'archive_id': u'commercial-ppa-uploaders/photobomb',
168
184
        u'description': u"Easy and Social Image Editor\nPhotobomb "
169
185
                        u"give you easy access to images in your "
171
187
        u'name': u'Photobomb',
172
188
        u'package_name': u'photobomb',
173
189
        u'signing_key_id': u'1024R/75254D99',
174
 
        u'screenshot_url': 'http://software-center.ubuntu.com/site_media/screenshots/2011/08/Screenshot.png',
 
190
        u'screenshot_url': 'http://software-center.ubuntu.com/site_media/'\
 
191
                           'screenshots/2011/08/Screenshot.png',
175
192
        u'license': 'Proprietary',
176
193
        u'support_url': 'mailto:support@example.com',
177
 
        u'series': { 'oneiric' : ['i386', 'amd64'],
178
 
                     'natty' : ['i386', 'amd64'],
 
194
        u'series': {'oneiric': ['i386', 'amd64'],
 
195
                     'natty': ['i386', 'amd64'],
179
196
                   },
180
 
        u'channel' : 'For Purchase',
181
 
        u'icon_url' : 'http://software-center.ubuntu.com/site_media/icons/2011/08/64_Chainz.png',
 
197
        u'channel': 'For Purchase',
 
198
        u'icon_url': 'http://software-center.ubuntu.com/site_media/icons/'\
 
199
                      '2011/08/64_Chainz.png',
182
200
        u'categories': 'Game;LogicGame',
183
201
        }
184
202
    return app_dict
185
203
 
 
204
 
186
205
def make_software_center_agent_subscription_dict(app_dict):
187
206
    subscription_dict = {
188
207
        u'application': app_dict,
198
217
        }
199
218
    return subscription_dict
200
219
 
 
220
 
201
221
def make_recommender_agent_recommend_me_dict():
202
222
    # best to have a list of likely not-installed items
203
223
    app_dict = {
204
224
        u'data': [
205
225
            {
206
226
                u'package_name': u'clementine'
207
 
            }, 
 
227
            },
208
228
            {
209
229
                u'package_name': u'hedgewars'
210
230
            },
211
231
            {
212
 
                u'package_name': u'gelemental'
 
232
                u'package_name': u'mangler'
213
233
            }, 
214
234
            {
215
235
                u'package_name': u'nexuiz'
216
236
            },
217
237
            {
218
238
                u'package_name': u'fgo'
219
 
            }, 
 
239
            },
220
240
            {
221
241
                u'package_name': u'musique'
222
242
            },
223
243
            {
224
244
                u'package_name': u'pybik'
225
 
            }, 
 
245
            },
226
246
            {
227
247
                u'package_name': u'radiotray'
228
248
            },
229
249
            {
230
250
                u'package_name': u'cherrytree'
231
 
            }, 
 
251
            },
232
252
            {
233
253
                u'package_name': u'phlipple'
 
254
            },
 
255
            {
 
256
                u'package_name': u'psi'
 
257
            }, 
 
258
            {
 
259
                u'package_name': u'midori'
234
260
            }
235
 
    ]
236
 
}
 
261
            ]
 
262
        }
237
263
    return app_dict
238
 
    
239
 
def make_recommender_profile_upload_data(): 
 
264
 
 
265
 
 
266
def make_recommender_profile_upload_data():
240
267
    from softwarecenter.utils import get_uuid
241
268
    recommender_uuid = get_uuid()
242
269
    profile_upload_data = [
243
270
        {
244
 
            'uuid': recommender_uuid, 
 
271
            'uuid': recommender_uuid,
245
272
            'package_list': [
246
273
                u'clementine',
247
274
                u'hedgewars',
248
 
                u'gelemental',
 
275
                u'mangler',
249
276
                u'nexuiz',
250
277
                u'fgo',
251
278
                u'musique',
252
279
                u'pybik',
253
280
                u'radiotray',
254
281
                u'cherrytree',
255
 
                u'phlipple'
 
282
                u'phlipple',
 
283
                u'psi',
 
284
                u'midori'
 
285
                
256
286
            ]
257
287
        }
258
288
    ]
259
289
    return profile_upload_data
260
 
    
 
290
 
 
291
 
261
292
def make_recommend_app_data():
262
 
    recommend_app_data = {u'rid': u'265c0bb1dece93a96c5a528e7ea5dd75',
263
 
             u'data': [{u'rating': 4.0, u'package_name': u'kftpgrabber'},
264
 
                      {u'rating': 4.0, u'package_name': u'sugar-emulator-0.90'}, 
265
 
                      {u'rating': 3.0, u'package_name': u'wakeup'}, 
266
 
                      {u'rating': 3.0, u'package_name': u'xvidcap'}, 
267
 
                      {u'rating': 2.0, u'package_name': u'airstrike'}, 
268
 
                      {u'rating': 2.0, u'package_name': u'pixbros'}, 
269
 
                      {u'rating': 2.0, u'package_name': u'bomber'}, 
270
 
                      {u'rating': 2.0, u'package_name': u'ktron'}, 
271
 
                      {u'rating': 2.0, u'package_name': u'gnome-mousetrap'}, 
272
 
                      {u'rating': 1.5, u'package_name': u'tucan'}],
273
 
              u'app': u'pitivi'}
 
293
    recommend_app_data = {
 
294
        u'rid': u'265c0bb1dece93a96c5a528e7ea5dd75',
 
295
        u'data': [
 
296
            {u'rating': 4.0, u'package_name': u'kftpgrabber'},
 
297
            {u'rating': 4.0, u'package_name': u'sugar-emulator-0.90'},
 
298
            {u'rating': 3.0, u'package_name': u'wakeup'},
 
299
            {u'rating': 3.0, u'package_name': u'xvidcap'},
 
300
            {u'rating': 2.0, u'package_name': u'airstrike'},
 
301
            {u'rating': 2.0, u'package_name': u'pixbros'},
 
302
            {u'rating': 2.0, u'package_name': u'bomber'},
 
303
            {u'rating': 2.0, u'package_name': u'ktron'},
 
304
            {u'rating': 2.0, u'package_name': u'gnome-mousetrap'},
 
305
            {u'rating': 1.5, u'package_name': u'tucan'}],
 
306
        u'app': u'pitivi'}
274
307
    return recommend_app_data
275