From dcd3b940e9e163ff87cf3dfa7748a5f18220b58d Mon Sep 17 00:00:00 2001 From: Alex Kitchens Date: Tue, 30 May 2017 09:04:36 -0500 Subject: Reset primary key sequence in FixturesResetPkSequenceTests The primary key sequence for each test in FixturesResetPkSequenceTest is reset. The state in some of the FixturesResetPkSequenceTest tests are leaking, causing failurse in others. Using a seed of `48104`, the `FixturesResetPkSequenceTest#test_resets_to_min_pk_with_specified_pk_and_sequence` runs before the `DatabaseStatementsTest` tests, and the tests fail with duplicate primary key errors: ``` Run options: --seed 48104 -n "/^(?:FixturesResetPkSequenceTest#(?:test_resets_to_min_pk_with_specified_pk_and_sequence)|DatabaseStatementsTest#(?:test_create_should_return_the_inserted_id|test_exec_insert|test_insert_should_return_the_inserted_id))$/" .EEE 1) Error: DatabaseStatementsTest#test_exec_insert: ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "accounts_pkey" DETAIL: Key (id)=(2) already exists. 2) Error: DatabaseStatementsTest#test_create_should_return_the_inserted_id: ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "accounts_pkey" DETAIL: Key (id)=(3) already exists. 3) Error: DatabaseStatementsTest#test_insert_should_return_the_inserted_id: ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "accounts_pkey" DETAIL: Key (id)=(4) already exists. ``` --- activerecord/test/cases/fixtures_test.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'activerecord/test/cases/fixtures_test.rb') diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index a0a6d3c7ef..718bbfdb74 100644 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -365,6 +365,7 @@ if Account.connection.respond_to?(:reset_pk_sequence!) class FixturesResetPkSequenceTest < ActiveRecord::TestCase fixtures :accounts fixtures :companies + self.use_transactional_tests = false def setup @instances = [Account.new(credit_limit: 50), Company.new(name: "RoR Consulting"), Course.new(name: "Test")] -- cgit v1.2.3