]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Add test for normalization of script_dir, version_locations
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 19 Sep 2019 20:19:25 +0000 (16:19 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 19 Sep 2019 20:21:53 +0000 (16:21 -0400)
Ensure ScriptDirectory normalizes paths.

Change-Id: I9feea25e03eb3037321341776502619be413080e
References: #590

tests/test_script_production.py

index 220793c8a3b667892600be9340ac6eccad5f29e7..802a256fbf9422b75ccfa04c415ea9e96b0c74ae 100644 (file)
@@ -1255,3 +1255,56 @@ def downgrade():
                 [rev.revision for rev in script.walk_revisions()],
                 [self.model1, self.model2, self.model3],
             )
+
+
+class NormPathTest(TestBase):
+    def setUp(self):
+        self.env = staging_env()
+
+    def test_script_location(self):
+        config = _no_sql_testing_config()
+
+        script = ScriptDirectory.from_config(config)
+
+        def normpath(path):
+            return path.replace("/", ":NORM:")
+
+        normpath = mock.Mock(side_effect=normpath)
+        with mock.patch("os.path.normpath", normpath):
+            eq_(
+                script._version_locations,
+                (
+                    ":NORM:home:NORM:classic:NORM:dev:NORM:alembic"
+                    ":NORM:scratch:NORM:scripts:NORM:versions",
+                ),
+            )
+
+            eq_(
+                script.versions,
+                ":NORM:home:NORM:classic:NORM:dev:NORM:alembic:NORM:scratch:"
+                "NORM:scripts:NORM:versions",
+            )
+
+            eq_(script.dir, "scratch/scripts")
+
+    def test_script_location_muliple(self):
+        config = _multi_dir_testing_config()
+
+        script = ScriptDirectory.from_config(config)
+
+        def normpath(path):
+            return path.replace("/", ":NORM:")
+
+        normpath = mock.Mock(side_effect=normpath)
+        with mock.patch("os.path.normpath", normpath):
+            eq_(
+                script._version_locations,
+                [
+                    ":NORM:home:NORM:classic:NORM:dev:NORM:alembic"
+                    ":NORM:scratch:NORM:model1:NORM:",
+                    ":NORM:home:NORM:classic:NORM:dev:NORM:alembic"
+                    ":NORM:scratch:NORM:model2:NORM:",
+                    ":NORM:home:NORM:classic:NORM:dev:NORM:alembic"
+                    ":NORM:scratch:NORM:model3:NORM:",
+                ],
+            )