def init_test_environ(): """This needs to be called before any test can be run. Before exiting the process call exit_test_environ() to clean up any resources created. """ global _TEMP_DIR, _BUS_INFO # create a user dir in /tmp and set env vars _TEMP_DIR = tempfile.mkdtemp(prefix=fsnative(u"QL-TEST-")) # needed for dbus/dconf runtime_dir = tempfile.mkdtemp(prefix=fsnative(u"RUNTIME-"), dir=_TEMP_DIR) os.chmod(runtime_dir, 0o700) environ["XDG_RUNTIME_DIR"] = runtime_dir # force the old cache dir so that GStreamer can re-use the GstRegistry # cache file environ["XDG_CACHE_HOME"] = xdg_get_cache_home() # GStreamer will update the cache if the environment has changed # (in Gst.init()). Since it takes 0.5s here and doesn't add much, # disable it. If the registry cache is missing it will be created # despite this setting. environ["GST_REGISTRY_UPDATE"] = fsnative(u"no") # set HOME and remove all XDG vars that default to it if not set home_dir = tempfile.mkdtemp(prefix=fsnative(u"HOME-"), dir=_TEMP_DIR) environ["HOME"] = home_dir # set to new default environ.pop("XDG_DATA_HOME", None) _BUS_INFO = None if os.name != "nt" and "DBUS_SESSION_BUS_ADDRESS" in environ: try: out = subprocess.check_output(["dbus-launch"]) except (subprocess.CalledProcessError, OSError): pass else: if PY3: out = out.decode("ascii") _BUS_INFO = dict([l.split("=", 1) for l in out.splitlines()]) environ.update(_BUS_INFO) # Ideally nothing should touch the FS on import, but we do atm.. # Get rid of all modules so QUODLIBET_USERDIR gets used everywhere. for key in list(sys.modules.keys()): if key.startswith('quodlibet'): del (sys.modules[key]) import quodlibet quodlibet.init(no_translations=True, no_excepthook=True) quodlibet.app.name = "QL Tests"
def init_test_environ(): """This needs to be called before any test can be run. Before exiting the process call exit_test_environ() to clean up any resources created. """ global _TEMP_DIR, _BUS_INFO # create a user dir in /tmp and set env vars _TEMP_DIR = tempfile.mkdtemp(prefix=fsnative(u"QL-TEST-")) # needed for dbus/dconf runtime_dir = tempfile.mkdtemp(prefix=fsnative(u"RUNTIME-"), dir=_TEMP_DIR) os.chmod(runtime_dir, 0o700) environ["XDG_RUNTIME_DIR"] = runtime_dir # force the old cache dir so that GStreamer can re-use the GstRegistry # cache file environ["XDG_CACHE_HOME"] = xdg_get_cache_home() # GStreamer will update the cache if the environment has changed # (in Gst.init()). Since it takes 0.5s here and doesn't add much, # disable it. If the registry cache is missing it will be created # despite this setting. environ["GST_REGISTRY_UPDATE"] = fsnative(u"no") # set HOME and remove all XDG vars that default to it if not set home_dir = tempfile.mkdtemp(prefix=fsnative(u"HOME-"), dir=_TEMP_DIR) environ["HOME"] = home_dir # set to new default environ.pop("XDG_DATA_HOME", None) _BUS_INFO = None if os.name != "nt" and "DBUS_SESSION_BUS_ADDRESS" in environ: try: out = subprocess.check_output(["dbus-launch"]) except (subprocess.CalledProcessError, OSError): pass else: if PY3: out = out.decode("ascii") _BUS_INFO = dict([l.split("=", 1) for l in out.splitlines()]) environ.update(_BUS_INFO) # Ideally nothing should touch the FS on import, but we do atm.. # Get rid of all modules so QUODLIBET_USERDIR gets used everywhere. for key in list(sys.modules.keys()): if key.startswith('quodlibet'): del(sys.modules[key]) import quodlibet quodlibet.init(no_translations=True, no_excepthook=True) quodlibet.app.name = "QL Tests"