database_rewinder 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +29 -17
- data/database_rewinder.gemspec +2 -2
- data/gemfiles/rails_40.gemfile +1 -0
- data/gemfiles/rails_41.gemfile +1 -0
- data/gemfiles/rails_42.gemfile +1 -0
- data/gemfiles/rails_50.gemfile +1 -0
- data/gemfiles/rails_52.gemfile +1 -1
- data/gemfiles/rails_60.gemfile +6 -0
- data/gemfiles/rails_edge.gemfile +1 -0
- data/lib/database_rewinder.rb +1 -1
- data/test/config/database.yml +11 -12
- data/test/database_rewinder_test.rb +23 -0
- data/test/fake_app.rb +11 -11
- data/test/test_helper.rb +4 -0
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd5388515381629b73558d7daa3907c06eb59ce55fbc6b6e5bdfc8a93e6b1872
|
4
|
+
data.tar.gz: 775cc8b24d4808317b4a521e3fed5568380d6222837543141d71a7ccf264a595
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad1ae15b0ab5bd04ffd4908573b407a86a39ed2e35e5e2ae15b3502ba0dcfd3cb5edfa113759341f93923be88b98676597d53d268f673bbe846c6eba59507348
|
7
|
+
data.tar.gz: cdc9a216be4b1a234df1dd83ad89234fb4c43bed3d4f4dec41a20a04526b1b0569f4c680d0ca64623ae4276253a2d96dd0637d5eee12192e51e670372b5269ce
|
data/.travis.yml
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
|
+
addons:
|
4
|
+
postgresql: '9.4'
|
5
|
+
mysql: '5.7'
|
6
|
+
|
3
7
|
before_install:
|
4
|
-
- gem update
|
5
|
-
- gem
|
8
|
+
- gem i rubygems-update -v '<3' && update_rubygems
|
9
|
+
- "ruby -e 'exit RUBY_VERSION.to_f >= 2.6' && gem up bundler || gem i bundler -v '<2'"
|
10
|
+
- sudo service mysql restart
|
11
|
+
|
6
12
|
|
7
13
|
cache: bundler
|
8
14
|
|
@@ -12,36 +18,42 @@ env:
|
|
12
18
|
- DB=postgresql
|
13
19
|
|
14
20
|
rvm:
|
15
|
-
- 2.
|
16
|
-
- 2.4.4
|
17
|
-
- 2.3.7
|
18
|
-
- 2.2.10
|
21
|
+
- 2.6.3
|
19
22
|
|
20
23
|
gemfile:
|
21
24
|
- gemfiles/rails_52.gemfile
|
22
|
-
- gemfiles/
|
23
|
-
- gemfiles/rails_50.gemfile
|
24
|
-
- gemfiles/rails_42.gemfile
|
25
|
+
- gemfiles/rails_60.gemfile
|
25
26
|
|
26
27
|
sudo: false
|
27
28
|
|
29
|
+
dist: xenial
|
30
|
+
|
28
31
|
matrix:
|
29
32
|
include:
|
30
|
-
- rvm: 2.
|
33
|
+
- rvm: 2.6.3
|
31
34
|
gemfile: gemfiles/rails_edge.gemfile
|
32
|
-
env: DB=
|
33
|
-
- rvm: 2.
|
35
|
+
env: DB=postgresql
|
36
|
+
- rvm: 2.5.5
|
37
|
+
gemfile: gemfiles/rails_51.gemfile
|
38
|
+
env: DB=postgresql
|
39
|
+
- rvm: 2.4.6
|
40
|
+
gemfile: gemfiles/rails_50.gemfile
|
41
|
+
env: DB=postgresql
|
42
|
+
- rvm: 2.3.8
|
34
43
|
gemfile: gemfiles/rails_41.gemfile
|
35
|
-
env: DB=
|
36
|
-
- rvm: 2.3.
|
44
|
+
env: DB=postgresql
|
45
|
+
- rvm: 2.3.8
|
37
46
|
gemfile: gemfiles/rails_40.gemfile
|
38
|
-
env: DB=
|
47
|
+
env: DB=postgresql
|
48
|
+
- rvm: 2.2.10
|
49
|
+
gemfile: gemfiles/rails_52.gemfile
|
50
|
+
env: DB=postgresql
|
39
51
|
- rvm: 2.1.10
|
40
52
|
gemfile: gemfiles/rails_42.gemfile
|
41
|
-
env: DB=
|
53
|
+
env: DB=postgresql
|
42
54
|
- rvm: 2.0.0
|
43
55
|
gemfile: gemfiles/rails_42.gemfile
|
44
|
-
env: DB=
|
56
|
+
env: DB=postgresql
|
45
57
|
|
46
58
|
allow_failures:
|
47
59
|
- gemfile: gemfiles/rails_edge.gemfile
|
data/database_rewinder.gemspec
CHANGED
@@ -6,7 +6,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
8
|
spec.name = "database_rewinder"
|
9
|
-
spec.version = '0.9.
|
9
|
+
spec.version = '0.9.2'
|
10
10
|
spec.authors = ["Akira Matsuda"]
|
11
11
|
spec.email = ["ronnie@dio.jp"]
|
12
12
|
spec.description = "A minimalist's tiny and ultra-fast database cleaner"
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_development_dependency
|
22
|
+
spec.add_development_dependency 'bundler'
|
23
23
|
spec.add_development_dependency "rake"
|
24
24
|
spec.add_development_dependency 'test-unit-rails'
|
25
25
|
spec.add_development_dependency 'rails'
|
data/gemfiles/rails_40.gemfile
CHANGED
data/gemfiles/rails_41.gemfile
CHANGED
data/gemfiles/rails_42.gemfile
CHANGED
data/gemfiles/rails_50.gemfile
CHANGED
data/gemfiles/rails_52.gemfile
CHANGED
data/gemfiles/rails_edge.gemfile
CHANGED
data/lib/database_rewinder.rb
CHANGED
@@ -48,7 +48,7 @@ module DatabaseRewinder
|
|
48
48
|
end or return
|
49
49
|
|
50
50
|
sql.split(';').each do |statement|
|
51
|
-
match = statement.match(/\A\s*INSERT(?:\s+IGNORE)?(?:\s+INTO)?\s+(?:\.*[`"]?([^.\s`"]+)[`"]?)*/i)
|
51
|
+
match = statement.match(/\A\s*INSERT(?:\s+IGNORE)?(?:\s+INTO)?\s+(?:\.*[`"]?([^.\s`"(]+)[`"]?)*/i)
|
52
52
|
next unless match
|
53
53
|
|
54
54
|
table = match[1]
|
data/test/config/database.yml
CHANGED
@@ -1,45 +1,44 @@
|
|
1
|
-
|
1
|
+
<% case ENV['DB']
|
2
|
+
when 'sqlite3' %>
|
3
|
+
test:
|
2
4
|
adapter: sqlite3
|
3
5
|
database: db/database_rewinder_test.sqlite3
|
4
6
|
pool: 5
|
5
7
|
timeout: 5000
|
6
8
|
|
7
|
-
|
9
|
+
test2:
|
8
10
|
adapter: sqlite3
|
9
11
|
database: db/database_rewinder_test2.sqlite3
|
10
12
|
pool: 5
|
11
13
|
timeout: 5000
|
12
14
|
|
13
|
-
mysql
|
15
|
+
<% when 'mysql' %>
|
16
|
+
test:
|
14
17
|
adapter: mysql2
|
15
18
|
host: localhost
|
16
19
|
username: root
|
17
20
|
password:
|
18
21
|
database: database_rewinder_test
|
19
22
|
|
20
|
-
|
23
|
+
test2:
|
21
24
|
adapter: mysql2
|
22
25
|
host: localhost
|
23
26
|
username: root
|
24
27
|
password:
|
25
28
|
database: database_rewinder_test2
|
26
29
|
|
27
|
-
postgresql
|
30
|
+
<% when 'postgresql' %>
|
31
|
+
test:
|
28
32
|
adapter: postgresql
|
29
33
|
host: localhost
|
30
34
|
username: postgres
|
31
35
|
password:
|
32
36
|
database: database_rewinder_test
|
33
37
|
|
34
|
-
|
38
|
+
test2:
|
35
39
|
adapter: postgresql
|
36
40
|
host: localhost
|
37
41
|
username: postgres
|
38
42
|
password:
|
39
43
|
database: database_rewinder_test2
|
40
|
-
|
41
|
-
test:
|
42
|
-
<<: *<%= ENV['DB'] %>
|
43
|
-
|
44
|
-
test2:
|
45
|
-
<<: *<%= "#{ENV['DB']}_2" %>
|
44
|
+
<% end %>
|
@@ -76,6 +76,25 @@ class DatabaseRewinder::DatabaseRewinderTest < ActiveSupport::TestCase
|
|
76
76
|
DatabaseRewinder.database_configuration = nil
|
77
77
|
end
|
78
78
|
|
79
|
+
sub_test_case 'via General Active Record insertions' do
|
80
|
+
setup do
|
81
|
+
DatabaseRewinder.cleaners
|
82
|
+
@cleaner = DatabaseRewinder.instance_variable_get(:'@cleaners').detect {|c| c.db == (ENV['DB'] == 'sqlite3' ? 'db/database_rewinder_test.sqlite3' : 'database_rewinder_test')}
|
83
|
+
end
|
84
|
+
|
85
|
+
test 'create' do
|
86
|
+
Bar.create name: 'bar1'
|
87
|
+
assert_equal ['bars'], @cleaner.inserted_tables
|
88
|
+
end
|
89
|
+
|
90
|
+
if ActiveRecord::VERSION::STRING >= '6'
|
91
|
+
test 'insert_all' do
|
92
|
+
Bar.insert_all! [{name: 'bar1'}]
|
93
|
+
assert_equal ['bars'], @cleaner.inserted_tables
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
79
98
|
sub_test_case 'common database' do
|
80
99
|
test 'include database name' do
|
81
100
|
perform_insert 'INSERT INTO "database"."foos" ("name") VALUES (?)'
|
@@ -95,6 +114,10 @@ class DatabaseRewinder::DatabaseRewinderTest < ActiveSupport::TestCase
|
|
95
114
|
SQL
|
96
115
|
assert_equal ['foos'], @cleaner.inserted_tables
|
97
116
|
end
|
117
|
+
test 'without spaces between table name and columns list' do
|
118
|
+
perform_insert 'INSERT INTO foos(name) VALUES (?)'
|
119
|
+
assert_equal ['foos'], @cleaner.inserted_tables
|
120
|
+
end
|
98
121
|
|
99
122
|
test 'with multi statement query' do
|
100
123
|
perform_insert <<-SQL
|
data/test/fake_app.rb
CHANGED
@@ -17,30 +17,30 @@ load 'active_record/railties/databases.rake'
|
|
17
17
|
|
18
18
|
require 'active_record/base'
|
19
19
|
ActiveRecord::Tasks::DatabaseTasks.root ||= Rails.root
|
20
|
-
ActiveRecord::Tasks::DatabaseTasks.drop_current
|
21
|
-
ActiveRecord::Tasks::DatabaseTasks.drop_current
|
22
|
-
ActiveRecord::Tasks::DatabaseTasks.create_current
|
23
|
-
ActiveRecord::Tasks::DatabaseTasks.create_current
|
20
|
+
ActiveRecord::Tasks::DatabaseTasks.drop_current 'test'
|
21
|
+
ActiveRecord::Tasks::DatabaseTasks.drop_current 'test2'
|
22
|
+
ActiveRecord::Tasks::DatabaseTasks.create_current 'test'
|
23
|
+
ActiveRecord::Tasks::DatabaseTasks.create_current 'test2'
|
24
24
|
|
25
25
|
# models
|
26
26
|
class Foo < ActiveRecord::Base; end
|
27
27
|
class Bar < ActiveRecord::Base; end
|
28
28
|
class Baz < ActiveRecord::Base; end
|
29
29
|
class Quu < ActiveRecord::Base
|
30
|
-
establish_connection
|
30
|
+
establish_connection :test2
|
31
31
|
end
|
32
32
|
|
33
33
|
# migrations
|
34
34
|
class CreateAllTables < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
35
35
|
def self.up
|
36
|
-
ActiveRecord::Base.establish_connection
|
37
|
-
create_table(:bars) {|t| t.string :name }
|
36
|
+
ActiveRecord::Base.establish_connection :test
|
37
|
+
create_table(:bars) {|t| t.string :name; t.index :name, unique: true }
|
38
38
|
create_table(:foos) {|t| t.string :name; t.references :bar, foreign_key: true }
|
39
39
|
create_table(:bazs) {|t| t.string :name }
|
40
40
|
|
41
|
-
test2_connection = ActiveRecord::Base.establish_connection(
|
41
|
+
test2_connection = ActiveRecord::Base.establish_connection(:test2).connection
|
42
42
|
test2_connection.create_table(:quus) {|t| t.string :name }
|
43
|
-
ActiveRecord::Base.establish_connection
|
43
|
+
ActiveRecord::Base.establish_connection :test
|
44
44
|
end
|
45
45
|
|
46
46
|
def self.down
|
@@ -48,8 +48,8 @@ class CreateAllTables < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migrat
|
|
48
48
|
drop_table(:bars) {|t| t.string :name }
|
49
49
|
drop_table(:bazs) {|t| t.string :name }
|
50
50
|
|
51
|
-
test2_connection = ActiveRecord::Base.establish_connection(
|
51
|
+
test2_connection = ActiveRecord::Base.establish_connection(:test2).connection
|
52
52
|
test2_connection.drop_table :quus
|
53
|
-
ActiveRecord::Base.establish_connection
|
53
|
+
ActiveRecord::Base.establish_connection :test
|
54
54
|
end
|
55
55
|
end
|
data/test/test_helper.rb
CHANGED
@@ -10,6 +10,10 @@ require 'active_record'
|
|
10
10
|
require 'database_rewinder'
|
11
11
|
require 'fake_app'
|
12
12
|
require 'test/unit/rails/test_help'
|
13
|
+
begin
|
14
|
+
require 'selenium/webdriver' # rails 6
|
15
|
+
rescue LoadError
|
16
|
+
end
|
13
17
|
|
14
18
|
migrated = ActiveRecord::Base.connection.respond_to?(:data_source_exists?) ? ActiveRecord::Base.connection.data_source_exists?('foos') : ActiveRecord::Base.connection.table_exists?('foos')
|
15
19
|
CreateAllTables.up unless migrated
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_rewinder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akira Matsuda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- gemfiles/rails_50.gemfile
|
129
129
|
- gemfiles/rails_51.gemfile
|
130
130
|
- gemfiles/rails_52.gemfile
|
131
|
+
- gemfiles/rails_60.gemfile
|
131
132
|
- gemfiles/rails_edge.gemfile
|
132
133
|
- lib/database_rewinder.rb
|
133
134
|
- lib/database_rewinder/active_record_monkey.rb
|
@@ -162,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
163
|
- !ruby/object:Gem::Version
|
163
164
|
version: '0'
|
164
165
|
requirements: []
|
165
|
-
rubygems_version: 3.0.
|
166
|
+
rubygems_version: 3.0.3
|
166
167
|
signing_key:
|
167
168
|
specification_version: 4
|
168
169
|
summary: A minimalist's tiny and ultra-fast database cleaner
|