miguel 0.1.0.pre6 → 0.1.0.pre7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/miguel/command.rb +1 -1
- data/lib/miguel/schema.rb +1 -1
- data/miguel.gemspec +2 -2
- data/test/coverage.rb +9 -0
- data/test/data/jruby.yml +15 -0
- data/test/helper.rb +16 -2
- data/test/test_command.rb +35 -25
- data/test/test_importer.rb +1 -1
- metadata +5 -4
- data/TODO +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9d433cde1f5c11fbaa6f05447d646c48164a9ae
|
4
|
+
data.tar.gz: fc5cdeef2a2ddd96b23fdc815dbfd4e7befd91d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3f618e52170198078448a50a0fb7673958a5ed3ef7e01eb42226035008e7219d61e5851d7c4b7ceed82bb5e0c878ca95c6cc5b813fbf09684af94e28eaaacb7
|
7
|
+
data.tar.gz: dd7b64ea4f90f82af8112405a268690311f2ad6d82fce7beab3c7c042394dbf1d0d482c91c8e24b9c12a493e22c3d72f4cb70248158c31adb9d914295486b337
|
data/.gitignore
CHANGED
data/lib/miguel/command.rb
CHANGED
data/lib/miguel/schema.rb
CHANGED
@@ -548,7 +548,7 @@ module Miguel
|
|
548
548
|
# not the default :Integer, and :integer can't be specified for compound keys,
|
549
549
|
# so we have to use the callback to set the type only at correct times.
|
550
550
|
# Furthermore, Postgres's autoincrementing serials only work with Integer,
|
551
|
-
# so we set the type only as long as the unsigned keys are
|
551
|
+
# so we set the type only as long as the unsigned keys are requested.
|
552
552
|
|
553
553
|
unsigned_keys = !! opts[ :unsigned_keys ]
|
554
554
|
|
data/miguel.gemspec
CHANGED
@@ -4,7 +4,7 @@ require File.expand_path( '../lib/miguel/version', __FILE__ )
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'miguel'
|
7
|
-
s.version = Miguel::VERSION + '.
|
7
|
+
s.version = Miguel::VERSION + '.pre7'
|
8
8
|
s.summary = 'Database migrator and migration generator for Sequel.'
|
9
9
|
s.description = <<EOT
|
10
10
|
This gem makes it easy to create and maintain an up-to-date database schema
|
@@ -13,7 +13,7 @@ EOT
|
|
13
13
|
|
14
14
|
s.author = 'Patrik Rak'
|
15
15
|
s.email = 'patrik@raxoft.cz'
|
16
|
-
s.homepage = '
|
16
|
+
s.homepage = 'https://github.com/raxoft/miguel'
|
17
17
|
s.license = 'MIT'
|
18
18
|
|
19
19
|
s.files = `git ls-files`.split( "\n" )
|
data/test/coverage.rb
ADDED
data/test/data/jruby.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Database configuration for JRuby.
|
2
|
+
|
3
|
+
development:
|
4
|
+
adapter: jdbc
|
5
|
+
url: 'jdbc:sqlite::memory:'
|
6
|
+
|
7
|
+
mysql:
|
8
|
+
adapter: jdbc
|
9
|
+
url: 'jdbc:mysql://localhost/miguel_test?user=travis&password='
|
10
|
+
|
11
|
+
postgres:
|
12
|
+
adapter: jdbc
|
13
|
+
url: 'jdbc:postgresql://localhost/miguel_test?user=postgres'
|
14
|
+
|
15
|
+
# EOF #
|
data/test/helper.rb
CHANGED
@@ -2,11 +2,21 @@
|
|
2
2
|
|
3
3
|
# Test coverage if enabled.
|
4
4
|
|
5
|
+
def jruby?
|
6
|
+
defined?( RUBY_ENGINE ) and RUBY_ENGINE == 'jruby'
|
7
|
+
end
|
8
|
+
|
9
|
+
if ENV[ 'COVERAGE' ]
|
10
|
+
require 'simplecov'
|
11
|
+
SimpleCov.start
|
12
|
+
end
|
13
|
+
|
5
14
|
begin
|
6
|
-
require
|
15
|
+
require 'codeclimate-test-reporter'
|
7
16
|
CodeClimate::TestReporter.start
|
17
|
+
ENV[ 'COVERAGE' ] = 'on'
|
8
18
|
rescue LoadError
|
9
|
-
end
|
19
|
+
end unless jruby?
|
10
20
|
|
11
21
|
# Setup helpers.
|
12
22
|
|
@@ -16,6 +26,10 @@ SEQ_COUNT = Dir[ "#{DATA_DIR}/seq_*.rb" ].count
|
|
16
26
|
|
17
27
|
class Bacon::Context
|
18
28
|
|
29
|
+
def database_config
|
30
|
+
jruby? ? 'jruby.yml' : 'db.yml'
|
31
|
+
end
|
32
|
+
|
19
33
|
def data( name )
|
20
34
|
"#{DATA_DIR}/#{name}"
|
21
35
|
end
|
data/test/test_command.rb
CHANGED
@@ -19,7 +19,7 @@ describe Miguel::Command do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def with_tempfile( content = nil, extension = 'rb' )
|
22
|
-
f = Tempfile.new( [ 'miguel', ".#{extension}" ] )
|
22
|
+
f = Tempfile.new( [ 'miguel', "-#{content ? content.hash : 'new'}.#{extension}" ] )
|
23
23
|
if content
|
24
24
|
f.write( content )
|
25
25
|
f.flush
|
@@ -31,9 +31,17 @@ describe Miguel::Command do
|
|
31
31
|
f.unlink
|
32
32
|
end
|
33
33
|
|
34
|
+
def sequence_number
|
35
|
+
@sequence_number = @sequence_number.to_i + 1
|
36
|
+
end
|
37
|
+
|
34
38
|
def run( *args )
|
39
|
+
if ENV[ 'COVERAGE' ]
|
40
|
+
coverage = %w[ -r ./test/coverage ]
|
41
|
+
ENV[ 'COVERAGE_COMMAND_NAME' ] = "Command Test ##{sequence_number}"
|
42
|
+
end
|
35
43
|
out = err = nil
|
36
|
-
Open3.popen3( 'ruby', 'bin/miguel', *args ) do |i, o, e, t|
|
44
|
+
Open3.popen3( 'ruby', *coverage, 'bin/miguel', *args ) do |i, o, e, t|
|
37
45
|
yield i if block_given?
|
38
46
|
i.close
|
39
47
|
out = o.read
|
@@ -79,57 +87,59 @@ describe Miguel::Command do
|
|
79
87
|
end
|
80
88
|
|
81
89
|
should 'show changes needed to migrate from one schema to another' do
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
90
|
+
with_tempfile( nil, 'db' ) do |path|
|
91
|
+
schema = jruby? ? "jdbc:sqlite:#{path}" : "sqlite://#{path}"
|
92
|
+
SEQ_COUNT.times do |i|
|
93
|
+
new_schema = data( "seq_#{i}.rb" )
|
94
|
+
out = test( 'diff', '-m', 'full', schema, new_schema )
|
95
|
+
match_file( out, "seq_#{i}.txt" )
|
96
|
+
schema = new_schema
|
97
|
+
end
|
88
98
|
end
|
89
99
|
end
|
90
100
|
|
91
101
|
should 'apply schema to the database' do
|
92
|
-
test( 'apply', '--env', 'mysql', data(
|
93
|
-
test( 'apply', '--env', 'mysql', data(
|
102
|
+
test( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ), '--force' ).should.not.be.empty
|
103
|
+
test( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ), '--force' ).should.match /\ANo changes are necessary\.\Z/
|
94
104
|
end
|
95
105
|
|
96
106
|
should 'be able to clear the entire database' do
|
97
|
-
test( 'apply', '--env', 'mysql', data(
|
98
|
-
test( 'clear', '--env', 'mysql', data(
|
99
|
-
test( 'clear', '--env', 'mysql', data(
|
107
|
+
test( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ), '--force' )
|
108
|
+
test( 'clear', '--env', 'mysql', data( database_config ), '--force' ).should.not.be.empty
|
109
|
+
test( 'clear', '--env', 'mysql', data( database_config ), '--force' ).should.match /\ANo changes are necessary\.\Z/
|
100
110
|
end
|
101
111
|
|
102
112
|
should 'require confirmation before changing the database' do
|
103
|
-
out, err = run( 'apply', '--env', 'mysql', data(
|
113
|
+
out, err = run( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ) )
|
104
114
|
out.should.match /^Confirm \(yes or no\)\?/
|
105
115
|
err.should.match /\AOK, aborting\.\Z/
|
106
116
|
|
107
|
-
out, err = run( 'apply', '--env', 'mysql', data(
|
117
|
+
out, err = run( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ) ) do |input|
|
108
118
|
input.write 'blah'
|
109
119
|
end
|
110
120
|
out.should.match /^Confirm \(yes or no\)\?/
|
111
121
|
out.should.match /Please answer 'yes' or 'no'\.$/
|
112
122
|
err.should.match /\AOK, aborting\.\Z/
|
113
123
|
|
114
|
-
out, err = run( 'apply', '--env', 'mysql', data(
|
124
|
+
out, err = run( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ) ) do |input|
|
115
125
|
input.write 'no'
|
116
126
|
end
|
117
127
|
out.should.match /^Confirm \(yes or no\)\?/
|
118
128
|
out.should.not.match /Please answer 'yes' or 'no'\.$/
|
119
129
|
err.should.match /\AOK, aborting\.\Z/
|
120
130
|
|
121
|
-
out, err = run( 'apply', '--env', 'mysql', data(
|
131
|
+
out, err = run( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ) ) do |input|
|
122
132
|
input.write 'yes'
|
123
133
|
end
|
124
134
|
out.should.match /^Confirm \(yes or no\)\?/
|
125
135
|
out.should.match /OK, those changes were applied\./
|
126
136
|
err.should.be.empty
|
127
137
|
|
128
|
-
out, err = run( 'clear', '--env', 'mysql', data(
|
138
|
+
out, err = run( 'clear', '--env', 'mysql', data( database_config ) )
|
129
139
|
out.should.match /^Confirm \(yes or no\)\?/
|
130
140
|
err.should.match /\AOK, aborting\.\Z/
|
131
141
|
|
132
|
-
out, err = run( 'clear', '--env', 'mysql', data(
|
142
|
+
out, err = run( 'clear', '--env', 'mysql', data( database_config ) ) do |input|
|
133
143
|
input.write 'yes'
|
134
144
|
end
|
135
145
|
out.should.match /^Confirm \(yes or no\)\?/
|
@@ -138,19 +148,19 @@ describe Miguel::Command do
|
|
138
148
|
end
|
139
149
|
|
140
150
|
should 'show no changes when told so' do
|
141
|
-
test( 'apply', '--env', 'mysql', data(
|
142
|
-
test( 'apply', '--env', 'mysql', data(
|
143
|
-
test( 'clear', '--env', 'mysql', data(
|
144
|
-
test( 'clear', '--env', 'mysql', data(
|
151
|
+
test( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ), '--force', '--quiet' ).should.be.empty
|
152
|
+
test( 'apply', '--env', 'mysql', data( database_config ), data( 'schema.rb' ), '--force', '--quiet' ).should.be.empty
|
153
|
+
test( 'clear', '--env', 'mysql', data( database_config ), '--force', '--quiet' ).should.be.empty
|
154
|
+
test( 'clear', '--env', 'mysql', data( database_config ), '--force', '--quiet' ).should.be.empty
|
145
155
|
end
|
146
156
|
|
147
157
|
should 'log SQL commands to stdout when requested' do
|
148
|
-
test( 'show', '--env', 'mysql', data(
|
158
|
+
test( 'show', '--env', 'mysql', data( database_config ), '--echo' ).should.match /SHOW FULL TABLES/
|
149
159
|
end
|
150
160
|
|
151
161
|
should 'log SQL commands to given file when requested' do
|
152
162
|
with_tempfile do |path|
|
153
|
-
test( 'show', '--env', 'mysql', data(
|
163
|
+
test( 'show', '--env', 'mysql', data( database_config ), '--log', path )
|
154
164
|
File.read( path ).should.match /SHOW FULL TABLES/
|
155
165
|
end
|
156
166
|
end
|
data/test/test_importer.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miguel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.pre7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrik Rak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|
@@ -94,7 +94,6 @@ files:
|
|
94
94
|
- ".travis.yml"
|
95
95
|
- README.md
|
96
96
|
- Rakefile
|
97
|
-
- TODO
|
98
97
|
- bin/miguel
|
99
98
|
- examples/db.yml
|
100
99
|
- examples/schema.rb
|
@@ -106,7 +105,9 @@ files:
|
|
106
105
|
- lib/miguel/schema.rb
|
107
106
|
- lib/miguel/version.rb
|
108
107
|
- miguel.gemspec
|
108
|
+
- test/coverage.rb
|
109
109
|
- test/data/db.yml
|
110
|
+
- test/data/jruby.yml
|
110
111
|
- test/data/schema.rb
|
111
112
|
- test/data/schema.txt
|
112
113
|
- test/data/schema_bare.txt
|
@@ -128,7 +129,7 @@ files:
|
|
128
129
|
- test/test_importer.rb
|
129
130
|
- test/test_migrator.rb
|
130
131
|
- test/test_schema.rb
|
131
|
-
homepage:
|
132
|
+
homepage: https://github.com/raxoft/miguel
|
132
133
|
licenses:
|
133
134
|
- MIT
|
134
135
|
metadata: {}
|