def setUp(self, plugin_module): """Subclasses should call this in their setUp() methods. The plugin_module arg is the plugin module being tested. This is used to set the plugin_dir config variable. """ # freeze time self.timestamp = TIMESTAMP self.frozen_time = self.freeze_pyblosxom_time(self.timestamp) self.timestamp_asc = time.ctime(self.timestamp) gmtime = time.gmtime(self.timestamp) self.timestamp_date = time.strftime('%a %d %b %Y', gmtime) self.timestamp_w3c = time.strftime('%Y-%m-%dT%H:%M:%SZ', gmtime) # set up config, including datadir and plugin_dirs self.datadir = tempfile.mkdtemp(prefix='pyblosxom_test_datadir') plugin_file = os.path.dirname(plugin_module.__file__) self.config_base = { 'datadir': self.datadir, 'plugin_dirs': [plugin_file], 'base_url': 'http://bl.og/', } self.config = self.config_base tools.initialize(self.config) # set up environment vars and http request self.environ = {'PATH_INFO': '/', 'REMOTE_ADDR': ''} self.form_data = '' self.request = pyblosxom.Request(self.config, self.environ, {}) self.http = self.request.get_http() # set up entries and data dict self.entry_name = 'test_entry' entry_properties = {'absolute_path': '.', 'fn': self.entry_name} self.entry = entries.base.generate_entry(self.request, entry_properties, {}, gmtime) self.entry_list = [self.entry] self.data = { 'entry_list': self.entry_list, 'bl_type': 'file', } self.request._data = self.data # set up renderer and templates self.renderer = Renderer(self.request) self.renderer.set_content(self.entry_list) templates = ('content_type', 'head', 'story', 'foot', 'date_head', 'date_foot') self.renderer.flavour = dict([(t, t) for t in templates]) # populate args dict self.args = { 'request': self.request, 'renderer': self.renderer, 'entry': self.entry, 'template': 'template starts:', } # this stores the callbacks that have been injected. it maps # callback names to the injected methods to call. any # callbacks that haven't been injected are passed through to # pyblosxom's callback chain. # # use inject_callback() to inject a callback. self.injected_callbacks = {} orig_run_callback = tools.run_callback def intercept_callback(name, args, **kwargs): if name in self.injected_callbacks: return self.injected_callbacks[name]() else: return orig_run_callback(name, args, **kwargs) tools.run_callback = intercept_callback