diff --git a/src/wuttjamaican/install.py b/src/wuttjamaican/install.py index 5077644..395a4a9 100644 --- a/src/wuttjamaican/install.py +++ b/src/wuttjamaican/install.py @@ -298,6 +298,9 @@ class InstallHandler(GenericHandler): """ envname = os.path.basename(sys.prefix) appdir = os.path.join(sys.prefix, "app") + dburl = dbinfo["dburl"] + if not isinstance(dburl, str): + dburl = dburl.render_as_string(hide_password=False) context = { "envdir": sys.prefix, "envname": envname, @@ -305,7 +308,7 @@ class InstallHandler(GenericHandler): "app_title": self.app_title, "pypi_name": self.pypi_name, "appdir": appdir, - "db_url": dbinfo["dburl"], + "db_url": dburl, "egg_name": self.egg_name, } context.update(kwargs) diff --git a/tests/test_install.py b/tests/test_install.py index a58725f..603485c 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -170,6 +170,8 @@ class TestInstallHandler(ConfigTestCase): def test_make_template_context(self): handler = self.make_handler() + + # can handle dburl as string dbinfo = {"dburl": "sqlite:///poser.sqlite"} context = handler.make_template_context(dbinfo) self.assertEqual(context["envdir"], sys.prefix) @@ -180,6 +182,22 @@ class TestInstallHandler(ConfigTestCase): self.assertEqual(context["appdir"], os.path.join(sys.prefix, "app")) self.assertEqual(context["db_url"], "sqlite:///poser.sqlite") + try: + import sqlalchemy as sa + except ImportError: + pytest.skip("remainder of test is not relevant without sqlalchemy") + + # but also can handle dburl as object + dbinfo = {"dburl": sa.create_engine("sqlite:///poser.sqlite").url} + context = handler.make_template_context(dbinfo) + self.assertEqual(context["envdir"], sys.prefix) + self.assertEqual(context["pkg_name"], "poser") + self.assertEqual(context["app_title"], "poser") + self.assertEqual(context["pypi_name"], "poser") + self.assertEqual(context["egg_name"], "poser") + self.assertEqual(context["appdir"], os.path.join(sys.prefix, "app")) + self.assertEqual(context["db_url"], "sqlite:///poser.sqlite") + def test_make_appdir(self): handler = self.make_handler() handler.templates = TemplateLookup(