def get_test_window(): from softwarecenter.testutils import ( get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache) from softwarecenter.db.enquire import AppEnquire from softwarecenter.ui.gtk3.models.appstore2 import AppListStore import xapian db = get_test_db() cache = get_test_pkg_info() icons = get_test_gtk3_icon_cache() # create the view appview = AppView(db, cache, icons, show_ratings=True) liststore = AppListStore(db, cache, icons) appview.set_model(liststore) # do a simple query and display that enquirer = AppEnquire(cache, db) enquirer.set_query(xapian.Query(""), sortmode=SortMethods.BY_CATALOGED_TIME, limit=20, nonblocking_load=False) appview.display_matches(enquirer.matches) # and put it in the window win = Gtk.Window() win.add(appview) win.set_data("appview", appview) win.connect("destroy", lambda x: Gtk.main_quit()) win.set_size_request(600, 400) win.show_all() return win
def test_not_automatic_version(self): db = get_test_db() app = Application("", "software-center") details = app.get_details(db) normal_version = self._make_version(not_automatic=False) not_automatic_version = self._make_version(not_automatic=True) details._pkg.versions = [normal_version, not_automatic_version] # force not-automatic with invalid data self.assertRaises( ValueError, details.force_not_automatic_archive_suite, "random-string") # force not-automatic with valid data self.assertTrue(details.force_not_automatic_archive_suite( not_automatic_version.origins[0].archive)) # ensure we get the description of the not-automatic version self.assertEqual(details.description, not_automatic_version.description) self.assertEqual(details.summary, not_automatic_version.summary) self.assertEqual(details.version, not_automatic_version.version) self.assertEqual(app.archive_suite, not_automatic_version.origins[0].archive) # clearing works details.force_not_automatic_archive_suite("") self.assertEqual(app.archive_suite, "")
def get_test_window(): import softwarecenter.log softwarecenter.log.root.setLevel(level=logging.DEBUG) fmt = logging.Formatter("%(name)s - %(message)s", None) softwarecenter.log.handler.setFormatter(fmt) # this is *way* to complicated we should *not* need a CatView # here! see FIXME in RecommendationsPanel.__init__() from softwarecenter.ui.gtk3.views.catview_gtk import CategoriesViewGtk from softwarecenter.testutils import ( get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache) cache = get_test_pkg_info() db = get_test_db() icons = get_test_gtk3_icon_cache() catview = CategoriesViewGtk(softwarecenter.paths.datadir, softwarecenter.paths.APP_INSTALL_PATH, cache, db, icons) view = RecommendationsPanelLobby(catview) win = Gtk.Window() win.connect("destroy", lambda x: Gtk.main_quit()) win.add(view) win.set_data("rec_panel", view) win.set_size_request(600, 200) win.show_all() return win
def get_test_window_viewswitcher(): from softwarecenter.testutils import (get_test_db, get_test_datadir, get_test_gtk3_viewmanager, get_test_pkg_info, get_test_gtk3_icon_cache, ) cache = get_test_pkg_info() db = get_test_db() icons = get_test_gtk3_icon_cache() datadir = get_test_datadir() manager = get_test_gtk3_viewmanager() view = ViewSwitcher(manager, datadir, db, cache, icons) scroll = Gtk.ScrolledWindow() box = Gtk.VBox() box.pack_start(scroll, True, True, 0) win = Gtk.Window() scroll.add_with_viewport(view) win.add(box) win.set_size_request(400,200) win.connect("destroy", Gtk.main_quit) win.show_all() return win
def setUpClass(cls): # Set these as class attributes as we don't modify either # during the tests. cls.win = get_test_window_appdetails() cls.view = cls.win.get_data("view") from softwarecenter.testutils import get_test_db cls.db = get_test_db()
def test_appdetails(self): from softwarecenter.testutils import get_test_db db = get_test_db() # see "apt-cache show casper|grep ^Tag" details = AppDetails(db, application=Application("", "casper")) self.assertTrue(len(details.tags) > 2)
def get_test_window(): from softwarecenter.testutils import (get_test_db, get_test_datadir, get_test_gtk3_viewmanager, get_test_pkg_info, get_test_gtk3_icon_cache, ) # needed because available pane will try to get it vm = get_test_gtk3_viewmanager() vm # make pyflakes happy db = get_test_db() cache = get_test_pkg_info() datadir = get_test_datadir() icons = get_test_gtk3_icon_cache() w = InstalledPane(cache, db, 'Ubuntu', icons, datadir) w.show() win = Gtk.Window() win.set_data("pane", w) win.add(w) win.set_size_request(400, 600) win.connect("destroy", lambda x: Gtk.main_quit()) # init the view w.init_view() from softwarecenter.backend.channel import AllInstalledChannel w.state.channel = AllInstalledChannel() w.display_overview_page(None, None) win.show() return win
def get_test_window(): from softwarecenter.testutils import (get_test_db, get_test_gtk3_viewmanager, get_test_pkg_info, get_test_gtk3_icon_cache, ) # needed because available pane will try to get it vm = get_test_gtk3_viewmanager() vm # make pyflakes happy db = get_test_db() cache = get_test_pkg_info() icons = get_test_gtk3_icon_cache() widget = HistoryPane(cache, db, None, icons, None) widget.show() win = Gtk.Window() win.add(widget) win.set_size_request(600, 500) win.set_position(Gtk.WindowPosition.CENTER) win.show_all() win.connect('destroy', Gtk.main_quit) widget.init_view() return win
def get_test_window(): from softwarecenter.testutils import ( get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache, get_test_enquirer_matches) from softwarecenter.ui.gtk3.models.appstore2 import AppListStore db = get_test_db() cache = get_test_pkg_info() icons = get_test_gtk3_icon_cache() # create the view appview = AppView(db, cache, icons, show_ratings=True) liststore = AppListStore(db, cache, icons) appview.set_model(liststore) # do a simple query and display that appview.display_matches(get_test_enquirer_matches(db)) # and put it in the window win = Gtk.Window() win.add(appview) win.set_data("appview", appview) win.connect("destroy", lambda x: Gtk.main_quit()) win.set_size_request(600, 400) win.show_all() return win
def test_new_no_sort_info_yet(self): # ensure that we don't show a empty "whats new" category # see LP: #865985 from softwarecenter.testutils import get_test_db db = get_test_db() cache = db._aptcache # simulate a fresh install with no catalogedtime info del db._axi_values["catalogedtime"] from softwarecenter.testutils import get_test_gtk3_icon_cache icons = get_test_gtk3_icon_cache() from softwarecenter.db.appfilter import AppFilter apps_filter = AppFilter(db, cache) from softwarecenter.distro import get_distro from softwarecenter.ui.gtk3.views.catview_gtk import LobbyViewGtk view = LobbyViewGtk(softwarecenter.paths.datadir, softwarecenter.paths.APP_INSTALL_PATH, cache, db, icons, get_distro(), apps_filter) view.show() # gui win = Gtk.Window() self.addCleanup(win.destroy) win.set_size_request(800, 400) scroll = Gtk.ScrolledWindow() scroll.add(view) scroll.show() win.add(scroll) win.show() # test visibility do_events() self.assertFalse(view.whats_new_frame.get_property("visible"))
def get_test_window(): from softwarecenter.testutils import ( get_test_db, get_test_datadir, get_test_gtk3_viewmanager, get_test_pkg_info, get_test_gtk3_icon_cache, ) # needed because available pane will try to get it vm = get_test_gtk3_viewmanager() vm # make pyflakes happy db = get_test_db() cache = get_test_pkg_info() datadir = get_test_datadir() icons = get_test_gtk3_icon_cache() navhistory_back_action = Gtk.Action("navhistory_back_action", "Back", "Back", None) navhistory_forward_action = Gtk.Action("navhistory_forward_action", "Forward", "Forward", None) w = AvailablePane(cache, db, "Ubuntu", icons, datadir, navhistory_back_action, navhistory_forward_action) w.init_view() w.show() win = Gtk.Window() win.connect("destroy", Gtk.main_quit) win.add(w) win.set_size_request(800, 600) win.show_all() # this is used later in tests win.set_data("pane", w) return win
def test_generic(self): from softwarecenter.backend.channel import ChannelsManager db = get_test_db() m = ChannelsManager(db) channels = m._get_channels_from_db(installed_only=False) self.assertNotEqual(channels, []) channels_installed = m._get_channels_from_db(installed_only=True) self.assertNotEqual(channels_installed, [])
def disabled_test_recagent_post_submit_profile(self): # NOTE: This requires a working recommender host that is reachable recommender_agent = RecommenderAgent() recommender_agent.connect("submit-profile-finished", self.on_query_done) recommender_agent.connect("error", self.on_query_error) db = get_test_db() recommender_agent.post_submit_profile(db) self.loop.run() self.assertFalse(self.error)
def test_aptchannels(self): from softwarecenter.backend.channel_impl.aptchannels import AptChannelsManager db = get_test_db() m = AptChannelsManager(db) channels = m.channels self.assertNotEqual(channels, []) channels_installed = m.channels_installed_only self.assertNotEqual(channels_installed, [])
def test_utils_get_installed_apps_list(self): from softwarecenter.db.utils import get_installed_package_list, get_installed_apps_list db = get_test_db() # installed pkgs installed_pkgs = get_installed_package_list() # the installed apps installed_apps = get_installed_apps_list(db) self.assertTrue(len(installed_apps) > 0) self.assertTrue(len(installed_pkgs) > len(installed_apps))
def setUp(self): # get required test stuff self.db = get_test_db() self.backend = Mock() self.distro = get_distro() self.datadir = softwarecenter.paths.datadir self.icons = get_test_gtk3_icon_cache() # create it once, it becomes global instance if get_appmanager() is None: ApplicationManager( self.db, self.backend, self.icons)
def test_not_automatic_channel_support(self): db = get_test_db() app = Application("", "software-center") details = app.get_details(db) versions = [self._make_version(not_automatic=True), self._make_version(not_automatic=False)] details._pkg.versions = versions details._pkg.candidate = versions[1] self.assertEqual( details.get_not_automatic_archive_versions(), [(versions[1].version, "precise"), (versions[0].version, "precise-backports")], )
def test_multiple_version_pkg_states(self): db = get_test_db() app = Application("", "software-center") details = app.get_details(db) normal_version = self._make_version(not_automatic=False) not_automatic_version = self._make_version(not_automatic=True) details._pkg.versions = [normal_version, not_automatic_version] details._pkg.installed = normal_version details._pkg.is_installed = True details._pkg.is_upgradable = True self.assertEqual(details.pkg_state, PkgStates.UPGRADABLE) app.archive_suite = not_automatic_version self.assertEqual(details.pkg_state, PkgStates.FORCE_VERSION)
def test_mocked_recagent_post_submit_profile(self, mock_spawn_helper_run): def _patched_on_submit_profile_data(*args, **kwargs): piston_submit_profile = {} recommender_agent.emit("submit-profile-finished", piston_submit_profile) mock_spawn_helper_run.side_effect = _patched_on_submit_profile_data recommender_agent = RecommenderAgent() recommender_agent.connect("submit-profile-finished", self.on_query_done) recommender_agent.connect("error", self.on_query_error) recommender_agent._calc_profile_id = lambda profile: "i-am-random" db = get_test_db() recommender_agent.post_submit_profile(db) self.assertFalse(self.error) args, kwargs = mock_spawn_helper_run.call_args self.assertNotEqual(kwargs['data'][0]['package_list'], [])
def test_multiple_versions_sorting(self): db = get_test_db() app = Application("", "software-center") details = AppDetails(db, application=app) details._pkg = Mock() details._pkg.installed = Mock() details._pkg.installed.version = "2.0" self.assertEqual(details.version, "2.0") v0 = {"version": None} v1 = {"version": "1.0"} v2 = {"version": "2.0"} v3 = {"version": "3.0"} screenshots_list = [v0, v1, v2, v3] res = details._sort_screenshots_by_best_version(screenshots_list) self.assertEqual(res, [v2, v1, v0])
def get_test_window(): import softwarecenter.log softwarecenter.log.root.setLevel(level=logging.DEBUG) softwarecenter.log.add_filters_from_string("performance") fmt = logging.Formatter("%(name)s - %(message)s", None) softwarecenter.log.handler.setFormatter(fmt) from softwarecenter.testutils import ( get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache, get_test_categories) cache = get_test_pkg_info() db = get_test_db() icons = get_test_gtk3_icon_cache() # create a filter from softwarecenter.db.appfilter import AppFilter filter = AppFilter(db, cache) filter.set_supported_only(False) filter.set_installed_only(True) # get the TREEstore from softwarecenter.ui.gtk3.models.appstore2 import AppTreeStore store = AppTreeStore(db, cache, icons) # populate from data cats = get_test_categories(db) for cat in cats[:3]: with ExecutionTime("query cat '%s'" % cat.name): docs = db.get_docs_from_query(cat.query) store.set_category_documents(cat, docs) # ok, this is confusing - the AppView contains the AppTreeView that # is a tree or list depending on the model from softwarecenter.ui.gtk3.views.appview import AppView app_view = AppView(db, cache, icons, show_ratings=True) app_view.set_model(store) box = Gtk.VBox() box.pack_start(app_view, True, True, 0) win = Gtk.Window() win.add(box) win.connect("destroy", lambda x: Gtk.main_quit()) win.set_size_request(600, 400) win.show_all() return win
def test_hardware_requirements_satisfied(self): with patch.object(AppDetails, "hardware_requirements") as mock_hw: # setup env db = get_test_db() app = Application("", "software-center") mock_hw.__get__ = Mock() # not good mock_hw.__get__.return_value = {"hardware::gps": "no", "hardware::video:opengl": "yes"} details = AppDetails(db, application=app) self.assertFalse(details.hardware_requirements_satisfied) # this if good mock_hw.__get__.return_value = {"hardware::video:opengl": "yes"} self.assertTrue(details.hardware_requirements_satisfied) # empty is satisfied mock_hw.__get__.return_value = {} self.assertTrue(details.hardware_requirements_satisfied)
def get_test_window(): import softwarecenter.log softwarecenter.log.root.setLevel(level=logging.DEBUG) softwarecenter.log.add_filters_from_string("performance") fmt = logging.Formatter("%(name)s - %(message)s", None) softwarecenter.log.handler.setFormatter(fmt) from softwarecenter.testutils import ( get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache) from softwarecenter.ui.gtk3.models.appstore2 import AppListStore db = get_test_db() cache = get_test_pkg_info() icons = get_test_gtk3_icon_cache() # create a filter from softwarecenter.db.appfilter import AppFilter filter = AppFilter(db, cache) filter.set_supported_only(False) filter.set_installed_only(True) # appview from softwarecenter.db.enquire import AppEnquire enquirer = AppEnquire(cache, db) store = AppListStore(db, cache, icons) from softwarecenter.ui.gtk3.views.appview import AppView view = AppView(db, cache, icons, show_ratings=True) view.set_model(store) entry = Gtk.Entry() entry.stamp = 0 entry.connect("changed", on_entry_changed, (view, enquirer)) box = Gtk.VBox() box.pack_start(entry, False, True, 0) box.pack_start(view, True, True, 0) win = Gtk.Window() win.set_data("appview", view) win.set_data("entry", entry) win.connect("destroy", lambda x: Gtk.main_quit()) win.add(box) win.set_size_request(600, 400) win.show_all() return win
def test_region_requirements_satisfied(self, mock_region_discover): mock_region_discover.return_value = {"country": "Germany", "countrycode": "DE"} with patch.object(AppDetails, "tags") as mock_tags: # setup env db = get_test_db() app = Application("", "software-center") mock_tags.__get__ = Mock() # not good mock_tags.__get__.return_value = [REGIONTAG + "ZM"] details = AppDetails(db, application=app) self.assertFalse(details.region_requirements_satisfied) # this if good mock_tags.__get__.return_value = [REGIONTAG + "DE"] self.assertTrue(details.region_requirements_satisfied) # empty is satisfied mock_tags.__get__.return_value = ["other::tag"] self.assertTrue(details.region_requirements_satisfied)
def get_test_dialog(): import softwarecenter from softwarecenter.db.application import Application from softwarecenter.testutils import ( get_test_gtk3_icon_cache, get_test_db) icons = get_test_gtk3_icon_cache() db = get_test_db() depends = ["apt", "synaptic"] app = Application("", "software-center") primary = "primary text" button_text = "button_text" dia = _get_confirm_internal_dialog( parent=None, datadir=softwarecenter.paths.datadir, app=app, db=db, icons=icons, primary=primary, button_text=button_text, depends=depends, cache=db._aptcache) return dia
def test_app_enquire(self): db = get_test_db() cache = get_test_pkg_info() xfilter = AppFilter(cache, db) enquirer = AppEnquire(cache, db) terms = [ "app", "this", "the", "that", "foo", "tool", "game", "graphic", "ubuntu", "debian", "gtk", "this", "bar", "baz"] # run a bunch of the querries in parallel for nonblocking in [False, True]: for i in range(10): for term in terms: enquirer.set_query( search_query=xapian.Query(term), limit=0, filter=xfilter, nonblocking_load=nonblocking) # give the threads a bit of time time.sleep(5)
def get_test_window(): from softwarecenter.testutils import (get_test_db, get_test_datadir, get_test_gtk3_viewmanager, get_test_pkg_info, get_test_gtk3_icon_cache, ) vm = get_test_gtk3_viewmanager() db = get_test_db() cache = get_test_pkg_info() datadir = get_test_datadir() icons = get_test_gtk3_icon_cache() p = GlobalPane(vm, datadir, db, cache, icons) win = Gtk.Window() win.connect("destroy", Gtk.main_quit) win.add(p) win.show_all() return win
def make_purchased_app_details(db=None, supported_series=None): """Return an AppDetail instance with the required attributes.""" app = make_software_center_agent_app_dict() subscription = make_software_center_agent_subscription_dict(app) if supported_series != None: subscription["application"]["series"] = supported_series else: # If no supportod_series kwarg was provided, we ensure the # current series/arch is supported. distro = get_distro() subscription["application"]["series"] = {distro.get_codename(): [distro.get_architecture()]} item = PistonResponseObject.from_dict(subscription) parser = SCAPurchasedApplicationParser(item) if db is None: db = get_test_db() doc = make_doc_from_parser(parser, db._aptcache) app_details = AppDetails(db, doc) return app_details
def test_track_db_open(self): tmpdir = tempfile.mkdtemp() tmpstamp = os.path.join(tmpdir, "update-stamp") open(tmpstamp, "w") softwarecenter.paths.APT_XAPIAN_INDEX_UPDATE_STAMP_PATH = tmpstamp softwarecenter.paths.APT_XAPIAN_INDEX_DB_PATH = softwarecenter.paths.XAPIAN_PATH db = get_test_db() db._axi_stamp_monitor = None db._on_axi_stamp_changed = Mock() self.assertFalse(db._on_axi_stamp_changed.called) db.open(use_axi=True) do_events() self.assertFalse(db._on_axi_stamp_changed.called) do_events() # print "modifiyng stampfile: ", tmpstamp os.utime(tmpstamp, (0, 0)) # wait up to 5s until the gvfs delivers the signal for i in range(50): do_events() time.sleep(0.1) if db._on_axi_stamp_changed.called: break self.assertTrue(db._on_axi_stamp_changed.called)
def setUp(self): self.db = get_test_db()
def get_test_dialog(): import softwarecenter from softwarecenter.db.application import Application from softwarecenter.testutils import ( get_test_gtk3_icon_cache, get_test_db) icons = get_test_gtk3_icon_cache() db = get_test_db() depends = ["apt", "synaptic"] app = Application("", "software-center") primary = "primary text" button_text = "button_text" dia = _get_confirm_internal_dialog( parent=None, datadir=softwarecenter.paths.datadir, app=app, db=db, icons=icons, primary=primary, button_text=button_text, depends=depends, cache=db._aptcache) return dia if __name__ == "__main__": # test real remove dialog from softwarecenter.testutils import ( get_test_gtk3_icon_cache, get_test_db) icons = get_test_gtk3_icon_cache() db = get_test_db() app = Application("", "p7zip-full") confirm_remove(None, softwarecenter.paths.datadir, app, db, icons)
def setUp(self): self.cache = get_test_pkg_info() self.icons = get_test_gtk3_icon_cache() self.db = get_test_db()
def setUpClass(cls): # Set these as class attributes as we don't modify either # during the tests. cls.distro = get_distro() cls.db = get_test_db()
def setUpClass(cls): cls.db = get_test_db()
def setUp(self): self.cache = get_test_pkg_info() self.db = get_test_db()