miguel 0.1.0.pre6 → 0.1.0.pre7
Sign up to get free protection for your applications and to get access to all the features.
- 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: {}
|