]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- handle missing arg more clearly
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 14 Jul 2015 17:25:18 +0000 (13:25 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 14 Jul 2015 17:25:18 +0000 (13:25 -0400)
- add missing translate for create_pk

alembic/operations/ops.py
alembic/util/langhelpers.py
tests/test_op.py

index 73ae55f1d9da021ec0353555dfd0663b9ec8cdd4..aee2c90403b027ac46bac7e2feedb81ee36864ab 100644 (file)
@@ -150,7 +150,10 @@ class CreatePrimaryKeyOp(AddConstraintOp):
             self.columns, schema=self.schema)
 
     @classmethod
-    @util._with_legacy_names([('name', 'constraint_name')])
+    @util._with_legacy_names([
+        ('name', 'constraint_name'),
+        ('cols', 'columns')
+    ])
     def create_primary_key(
             cls, operations,
             constraint_name, table_name, columns, schema=None):
index 21d2bfb3c550c3f45d25d76b6faba44d8075c3ca..f25ce67f94ac02fa397f96bc41e8f767d4ae954c 100644 (file)
@@ -125,7 +125,12 @@ class ModuleClsProxy(with_metaclass(_ModuleClsMeta)):
                     pos_only = spec[0]
                 for arg in pos_only:
                     if arg not in return_kw:
-                        return_args.append(args.pop(0))
+                        try:
+                            return_args.append(args.pop(0))
+                        except IndexError:
+                            raise TypeError(
+                                "missing required positional argument: %s"
+                                % arg)
                 return_args.extend(args)
 
                 return return_args, return_kw
index 610c948f9c26ea51030ccb1dde02df4bb88e3c35..396ddf700d8b61889e80375f87a7bac42bf6c2d0 100644 (file)
@@ -606,6 +606,36 @@ class OpTest(TestBase):
             "ALTER TABLE t1 ADD CONSTRAINT uk_test UNIQUE (foo, bar)"
         )
 
+    def test_drop_constraint_legacy_kwarg(self):
+        context = op_fixture()
+        op.drop_constraint(name='pk_name',
+                           table_name='sometable',
+                           type_='primary')
+        context.assert_(
+            "ALTER TABLE sometable DROP CONSTRAINT pk_name"
+        )
+
+    def test_create_pk_legacy_kwarg(self):
+        context = op_fixture()
+        op.create_primary_key(name=None,
+                              table_name='sometable',
+                              cols=['router_id', 'l3_agent_id'])
+        context.assert_(
+            "ALTER TABLE sometable ADD PRIMARY KEY (router_id, l3_agent_id)"
+        )
+
+    def test_legacy_kwarg_catches_arg_missing(self):
+        op_fixture()
+
+        assert_raises_message(
+            TypeError,
+            "missing required positional argument: columns",
+            op.create_primary_key,
+            name=None,
+            table_name='sometable',
+            wrong_cols=['router_id', 'l3_agent_id']
+        )
+
     def test_add_unique_constraint_schema(self):
         context = op_fixture()
         op.create_unique_constraint(