From 827b936bc0f43cfee374bf465e205747f77fe9f7 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 6 Feb 2013 16:24:38 -0500 Subject: [PATCH] - add an explicit test for sequences "optional" --- lib/sqlalchemy/testing/requirements.py | 12 +++++++++++- lib/sqlalchemy/testing/suite/test_sequence.py | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/sqlalchemy/testing/requirements.py b/lib/sqlalchemy/testing/requirements.py index f7d00afb29..e44a333beb 100644 --- a/lib/sqlalchemy/testing/requirements.py +++ b/lib/sqlalchemy/testing/requirements.py @@ -155,7 +155,17 @@ class SuiteRequirements(Requirements): return exclusions.only_if([ lambda: self.config.db.dialect.supports_sequences - ], "no SEQUENCE support") + ], "no sequence support") + + @property + def sequences_optional(self): + """Target database supports sequences, but also optionally + as a means of generating new PK values.""" + + return exclusions.only_if([ + lambda: self.config.db.dialect.supports_sequences and \ + self.config.db.dialect.sequences_optional + ], "no sequence support, or sequences not optional") @property def reflects_pk_names(self): diff --git a/lib/sqlalchemy/testing/suite/test_sequence.py b/lib/sqlalchemy/testing/suite/test_sequence.py index 0b60aa5b7c..366d509cc3 100644 --- a/lib/sqlalchemy/testing/suite/test_sequence.py +++ b/lib/sqlalchemy/testing/suite/test_sequence.py @@ -18,6 +18,12 @@ class SequenceTest(fixtures.TablesTest): Column('data', String(50)) ) + Table('seq_opt_pk', metadata, + Column('id', Integer, Sequence('tab_id_seq', optional=True), + primary_key=True), + Column('data', String(50)) + ) + def test_insert_roundtrip(self): config.db.execute( self.tables.seq_pk.insert(), @@ -43,6 +49,16 @@ class SequenceTest(fixtures.TablesTest): r, 1 ) + @requirements.sequences_optional + def test_optional_seq(self): + r = config.db.execute( + self.tables.seq_opt_pk.insert(), + data="some data" + ) + eq_( + r.inserted_primary_key, + [1] + ) def _assert_round_trip(self, table, conn): -- 2.47.2