From 18c23ce0ce14831f2d9c517c557ca7d4c83ef882 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 31 Dec 2025 20:04:49 -0600 Subject: [PATCH] fix: render db engine with password intact, for installer config not sure when things changed, pretty sure this is a new thing? hopefully doesn't break anything since the installer is likely dealing with "latest" sqlalchemy --- src/wuttjamaican/install.py | 5 ++++- tests/test_install.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) 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(