schema_dev 2.0.4 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -8
- data/bin/schema_dev +1 -4
- data/lib/schema_dev/config.rb +13 -13
- data/lib/schema_dev/executor.rb +3 -3
- data/lib/schema_dev/gemfile_selector.rb +6 -6
- data/lib/schema_dev/gemfiles.rb +4 -4
- data/lib/schema_dev/matrix_executor.rb +3 -3
- data/lib/schema_dev/readme.rb +2 -2
- data/lib/schema_dev/rspec/db.rb +6 -2
- data/lib/schema_dev/runner.rb +2 -2
- data/lib/schema_dev/travis.rb +2 -2
- data/lib/schema_dev/version.rb +1 -1
- data/spec/config_spec.rb +32 -32
- data/spec/gemfile_sepector_spec.rb +1 -1
- data/spec/gemfiles_spec.rb +4 -4
- data/spec/runner_spec.rb +11 -11
- data/spec/travis_spec.rb +7 -7
- data/templates/gem/README.md +1 -1
- data/templates/gem/schema_dev.yml +1 -1
- data/templates/gemfiles/{rails-3.2 → activerecord-3.2}/Gemfile.base +1 -1
- data/templates/gemfiles/{rails-3.2 → activerecord-3.2}/Gemfile.mysql +0 -0
- data/templates/gemfiles/{rails-3.2 → activerecord-3.2}/Gemfile.mysql2 +0 -0
- data/templates/gemfiles/{rails-3.2 → activerecord-3.2}/Gemfile.postgresql +0 -0
- data/templates/gemfiles/{rails-3.2 → activerecord-3.2}/Gemfile.sqlite3 +0 -0
- data/templates/gemfiles/{rails-4.0 → activerecord-4.0}/Gemfile.base +1 -1
- data/templates/gemfiles/{rails-4.0 → activerecord-4.0}/Gemfile.mysql2 +0 -0
- data/templates/gemfiles/{rails-4.0 → activerecord-4.0}/Gemfile.postgresql +0 -0
- data/templates/gemfiles/{rails-4.0 → activerecord-4.0}/Gemfile.sqlite3 +0 -0
- data/templates/gemfiles/{rails-4.1 → activerecord-4.1}/Gemfile.base +1 -1
- data/templates/gemfiles/{rails-4.1 → activerecord-4.1}/Gemfile.mysql2 +0 -0
- data/templates/gemfiles/{rails-4.1 → activerecord-4.1}/Gemfile.postgresql +0 -0
- data/templates/gemfiles/{rails-4.1 → activerecord-4.1}/Gemfile.sqlite3 +0 -0
- data/templates/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.base +1 -1
- data/templates/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.mysql2 +0 -0
- data/templates/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.postgresql +0 -0
- data/templates/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.sqlite3 +0 -0
- data/templates/gemfiles/activerecord-edge/Gemfile.base +3 -0
- data/templates/gemfiles/{rails-edge → activerecord-edge}/Gemfile.mysql2 +0 -0
- data/templates/gemfiles/{rails-edge → activerecord-edge}/Gemfile.postgresql +0 -0
- data/templates/gemfiles/{rails-edge → activerecord-edge}/Gemfile.sqlite3 +0 -0
- metadata +23 -23
- data/templates/gemfiles/rails-edge/Gemfile.base +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4cb75b3a5a0fde6048fbf09539056ab9be8bbd5
|
4
|
+
data.tar.gz: c710664f19c291598f88ead2ed83eadcc44cd964
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d3337897220b5917a33fe4106c990630a620801838efe3cc3644fc3ad7d3254de11bca3db6ed2b117de2d25bb590ee06a1edaf7e2111cd00703e795d9103fa2
|
7
|
+
data.tar.gz: e5dfbf9698aa68e9e7cba1e7c29364f81267fac4aed58315a9d4670c953797b17ab09684a60955b48bc11b0c3d75cad6d158a9d32f04d2a6d737a0ee510c41ab
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
Development tools for the SchemaPlus family of gems.
|
8
8
|
|
9
|
-
Provides support for working with multiple ruby versions,
|
9
|
+
Provides support for working with multiple ruby versions, ActiveRecord, and db versions. In particular provides a command `schema_dev` for running rspec (or whatever) on the matrix or a slice or element of it. It also auto-generates the `.travis.yml` file for [travis-ci](https://travis-ci.org) testing.
|
10
10
|
|
11
11
|
## Creating a new gem for the SchemaPlus family
|
12
12
|
|
@@ -25,9 +25,9 @@ Similar to `bundle gem`, this creates a skeleton structure for a new gem. The s
|
|
25
25
|
The client gem needs a file `schema_dev.yml` in it's root, which specifies the testing matrix among other things.
|
26
26
|
|
27
27
|
* `ruby`: A single version of ruby, or a list of ruby versions.
|
28
|
-
* `
|
28
|
+
* `activerecord`: A single version of ActiveRecord, or a list of ActiveRecord versions
|
29
29
|
* `db`: A single db adapter, or a list of db adapters.
|
30
|
-
* `quick`: (Optional) Hash listing the version of ruby,
|
30
|
+
* `quick`: (Optional) Hash listing the version of ruby, activerecord, and db to use with `--quick` option. If not specified, the default is to use the last entry in each list.
|
31
31
|
|
32
32
|
If you change this file, it's a good idea to run `schema_dev freshen`
|
33
33
|
|
@@ -55,9 +55,9 @@ In the root directory, you can run, e.g.,
|
|
55
55
|
$ schema_dev bundle install # or schema_dev bundle update
|
56
56
|
$ schema_dev rspec
|
57
57
|
|
58
|
-
Which will run those commands over the whole matrix. You can also specify slices, via any combination of `--ruby`, `--
|
58
|
+
Which will run those commands over the whole matrix. You can also specify slices, via any combination of `--ruby`, `--activerecord` and `--db`
|
59
59
|
|
60
|
-
$ schema_dev rspec --ruby 2.1.3 --
|
60
|
+
$ schema_dev rspec --ruby 2.1.3 --activerecord 4.0
|
61
61
|
|
62
62
|
For convenience you can also use `--quick` to run just one as specified in `schema_dev.yml`
|
63
63
|
|
@@ -69,14 +69,14 @@ For interactive debugging you may want to run rspec directly from the shell rath
|
|
69
69
|
|
70
70
|
$ schema_dev rspec --quick -- -e 'select which spec' -n
|
71
71
|
|
72
|
-
*** ruby 2.1.5 -
|
72
|
+
*** ruby 2.1.5 - activerecord 4.2 - db postgresql [1 of 1]
|
73
73
|
|
74
|
-
* /usr/bin/env BUNDLE_GEMFILE=gemfiles/
|
74
|
+
* /usr/bin/env BUNDLE_GEMFILE=gemfiles/activerecord-4.2/Gemfile.postgresql SHELL=`which bash` chruby-exec ruby-2.1.5 -- bundle exec rspec -e select\ which\ spec
|
75
75
|
|
76
76
|
|
77
77
|
There's no hidden environment setup; so you can copy and paste the command line into a shell:
|
78
78
|
|
79
|
-
$ /usr/bin/env BUNDLE_GEMFILE=gemfiles/
|
79
|
+
$ /usr/bin/env BUNDLE_GEMFILE=gemfiles/activerecord-4.2/Gemfile.postgresql SHELL=`which bash` chruby-exec ruby-2.1.5 -- bundle exec rspec -e select\ which\ spec
|
80
80
|
|
81
81
|
|
82
82
|
For more info, see
|
data/bin/schema_dev
CHANGED
@@ -20,12 +20,10 @@ class CLI < Thor
|
|
20
20
|
method_option :dry_run, aliases: "-n", type: :boolean, desc: "Show what the commands would be without running them"
|
21
21
|
method_option :quick, type: :boolean, desc: "Only execute on the 'quick' choice: #{$config ? $config.quick.inspect : "[from schema_dev.yml]"}"
|
22
22
|
method_option :ruby, type: :string, desc: "Only execute for the specified version of ruby"
|
23
|
-
method_option :
|
23
|
+
method_option :activerecord, aliases: "--ar", type: :string, desc: "Only execute for the specified version of activerecord"
|
24
24
|
method_option :db, type: :string, desc: "Only execute for the specified database"
|
25
25
|
end
|
26
26
|
|
27
|
-
default_task :rspec
|
28
|
-
|
29
27
|
desc "freshen", "update files that depend on schema_dev.yml: .travis, gemfiles/, README.md"
|
30
28
|
def freshen
|
31
29
|
runner.freshen
|
@@ -63,7 +61,6 @@ class CLI < Thor
|
|
63
61
|
end
|
64
62
|
|
65
63
|
case
|
66
|
-
when ARGV.empty? then CLI.start(["--help"])
|
67
64
|
when ARGV[0] == "--version" then puts "SchemaDev #{SchemaDev::VERSION}"
|
68
65
|
else CLI.start(ARGV)
|
69
66
|
end
|
data/lib/schema_dev/config.rb
CHANGED
@@ -12,7 +12,7 @@ module SchemaDev
|
|
12
12
|
|
13
13
|
class Config
|
14
14
|
|
15
|
-
attr_accessor :quick, :db, :ruby, :
|
15
|
+
attr_accessor :quick, :db, :ruby, :activerecord, :notify, :exclude
|
16
16
|
|
17
17
|
def self._reset ; @@config = nil end # for use by rspec
|
18
18
|
|
@@ -25,13 +25,13 @@ module SchemaDev
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def initialize(opts={}) # once we no longer support ruby 1.9.3, can switch to native keyword args
|
28
|
-
opts = opts.keyword_args(ruby: :required,
|
28
|
+
opts = opts.keyword_args(ruby: :required, activerecord: :required, db: :required, exclude: nil, notify: nil, quick: nil)
|
29
29
|
@ruby = Array.wrap(opts.ruby)
|
30
|
-
@
|
30
|
+
@activerecord = Array.wrap(opts.activerecord)
|
31
31
|
@db = Array.wrap(opts.db)
|
32
32
|
@exclude = Array.wrap(opts.exclude).map(&:symbolize_keys).map {|tuple| Tuple.new(tuple)}
|
33
33
|
@notify = Array.wrap(opts.notify)
|
34
|
-
@quick = Array.wrap(opts.quick || {ruby: @ruby.last,
|
34
|
+
@quick = Array.wrap(opts.quick || {ruby: @ruby.last, activerecord: @activerecord.last, db: @db.last})
|
35
35
|
end
|
36
36
|
|
37
37
|
def dbms
|
@@ -39,25 +39,25 @@ module SchemaDev
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def matrix(opts={}) # once we no longer support ruby 1.9.3, can switch to native keyword args
|
42
|
-
opts = opts.keyword_args(quick: false, ruby: nil,
|
42
|
+
opts = opts.keyword_args(quick: false, ruby: nil, activerecord: nil, db: nil, excluded: nil)
|
43
43
|
use_ruby = @ruby
|
44
|
-
|
44
|
+
use_activerecord = @activerecord
|
45
45
|
use_db = @db
|
46
46
|
if opts.quick
|
47
47
|
use_ruby = @quick.map{|q| q[:ruby]}
|
48
|
-
|
48
|
+
use_activerecord = @quick.map{|q| q[:activerecord]}
|
49
49
|
use_db = @quick.map{|q| q[:db]}
|
50
50
|
end
|
51
51
|
use_ruby = Array.wrap(opts.ruby) if opts.ruby
|
52
|
-
|
52
|
+
use_activerecord = Array.wrap(opts.activerecord) if opts.activerecord
|
53
53
|
use_db = Array.wrap(opts.db) if opts.db
|
54
54
|
|
55
55
|
use_ruby = [nil] unless use_ruby.any?
|
56
|
-
|
56
|
+
use_activerecord = [nil] unless use_activerecord.any?
|
57
57
|
use_db = [nil] unless use_db.any?
|
58
58
|
|
59
|
-
m = use_ruby.product(
|
60
|
-
m = m.map { |_ruby,
|
59
|
+
m = use_ruby.product(use_activerecord, use_db)
|
60
|
+
m = m.map { |_ruby, _activerecord, _db| Tuple.new(ruby: _ruby, activerecord: _activerecord, db: _db) }.compact
|
61
61
|
m = m.reject(&it.match_any?(@exclude)) unless opts.excluded == :none
|
62
62
|
m = m.map(&:to_hash)
|
63
63
|
|
@@ -68,10 +68,10 @@ module SchemaDev
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
class Tuple < KeyStruct[:ruby, :
|
71
|
+
class Tuple < KeyStruct[:ruby, :activerecord, :db]
|
72
72
|
def match?(other)
|
73
73
|
return false if self.ruby and other.ruby and self.ruby != other.ruby
|
74
|
-
return false if self.
|
74
|
+
return false if self.activerecord and other.activerecord and self.activerecord != other.activerecord
|
75
75
|
return false if self.db and other.db and self.db != other.db
|
76
76
|
true
|
77
77
|
end
|
data/lib/schema_dev/executor.rb
CHANGED
@@ -7,11 +7,11 @@ require_relative "gemfile_selector"
|
|
7
7
|
module SchemaDev
|
8
8
|
class Executor
|
9
9
|
|
10
|
-
attr_reader :ruby, :
|
10
|
+
attr_reader :ruby, :activerecord, :db, :error
|
11
11
|
|
12
|
-
def initialize(ruby:,
|
12
|
+
def initialize(ruby:, activerecord:, db:)
|
13
13
|
@ruby_selector = RubySelector.command(ruby)
|
14
|
-
@gemfile_selector = GemfileSelector.command(
|
14
|
+
@gemfile_selector = GemfileSelector.command(activerecord: activerecord, db: db)
|
15
15
|
end
|
16
16
|
|
17
17
|
def run(cmd, dry_run: false)
|
@@ -7,18 +7,18 @@ module SchemaDev
|
|
7
7
|
extend self
|
8
8
|
|
9
9
|
def gemfile(opts = {})
|
10
|
-
opts = opts.keyword_args(
|
11
|
-
Pathname.new(GEMFILES_DIR).join("
|
10
|
+
opts = opts.keyword_args(activerecord: :required, db: :required)
|
11
|
+
Pathname.new(GEMFILES_DIR).join("activerecord-#{opts.activerecord}", "Gemfile.#{opts.db}")
|
12
12
|
end
|
13
13
|
|
14
14
|
def command(opts={})
|
15
|
-
opts = opts.keyword_args(
|
16
|
-
"BUNDLE_GEMFILE=#{gemfile(
|
15
|
+
opts = opts.keyword_args(activerecord: :required, db: :required)
|
16
|
+
"BUNDLE_GEMFILE=#{gemfile(activerecord: opts.activerecord, db: opts.db)}"
|
17
17
|
end
|
18
18
|
|
19
19
|
def infer_db
|
20
|
-
(env = ENV['BUNDLE_GEMFILE']) =~ %r{
|
21
|
-
$1 or raise "Can't infer db: Env BUNDLE_GEMFILE=#{env.inspect}) isn't a schema_dev standard Gemfile path"
|
20
|
+
(env = ENV['BUNDLE_GEMFILE']) =~ %r{activerecord.*/Gemfile[.](.*)}
|
21
|
+
$1 or raise "Can't infer db: Env BUNDLE_GEMFILE=#{env.inspect}) isn't a schema_dev standard Gemfile path. (Run 'schema_dev rspec' instead of 'rspec'?)"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
data/lib/schema_dev/gemfiles.rb
CHANGED
@@ -18,13 +18,13 @@ module SchemaDev
|
|
18
18
|
|
19
19
|
_copy(relpath, 'Gemfile.base')
|
20
20
|
|
21
|
-
config.
|
21
|
+
config.activerecord.each do |activerecord|
|
22
22
|
|
23
|
-
|
24
|
-
_copy(
|
23
|
+
activerecord_path = relpath + "activerecord-#{activerecord}"
|
24
|
+
_copy(activerecord_path, 'Gemfile.base')
|
25
25
|
|
26
26
|
config.db.each do |db|
|
27
|
-
_copy(
|
27
|
+
_copy(activerecord_path, "Gemfile.#{db}")
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -12,14 +12,14 @@ module SchemaDev
|
|
12
12
|
@errors = []
|
13
13
|
@matrix.each_with_index do |tuple, i|
|
14
14
|
ruby = tuple[:ruby]
|
15
|
-
|
15
|
+
activerecord = tuple[:activerecord]
|
16
16
|
db = tuple[:db]
|
17
17
|
|
18
|
-
label = "ruby #{ruby} -
|
18
|
+
label = "ruby #{ruby} - activerecord #{activerecord} - db #{db}"
|
19
19
|
msg = "#{label} [#{i+1} of #{@matrix.size}]"
|
20
20
|
puts "\n\n*** #{msg}\n\n"
|
21
21
|
|
22
|
-
if not Executor.new(ruby: ruby,
|
22
|
+
if not Executor.new(ruby: ruby, activerecord: activerecord, db: db).run(cmd, dry_run: dry_run)
|
23
23
|
@errors << label
|
24
24
|
end
|
25
25
|
end
|
data/lib/schema_dev/readme.rb
CHANGED
@@ -34,8 +34,8 @@ module SchemaDev
|
|
34
34
|
contents = []
|
35
35
|
contents << "<!-- SCHEMA_DEV: MATRIX - begin -->\n"
|
36
36
|
contents << "<!-- These lines are auto-generated by schema_dev based on schema_dev.yml -->\n"
|
37
|
-
self.matrix.group_by(&it.slice(:ruby, :
|
38
|
-
contents << "* ruby **#{pair[:ruby]}** with
|
37
|
+
self.matrix.group_by(&it.slice(:ruby, :activerecord)).each do |pair, items|
|
38
|
+
contents << "* ruby **#{pair[:ruby]}** with activerecord **#{pair[:activerecord]}**, using #{items.map{|item| "**#{item[:db]}**"}.to_sentence(last_word_connector: ' or ')}\n"
|
39
39
|
end
|
40
40
|
contents << "\n"
|
41
41
|
contents << "<!-- SCHEMA_DEV: MATRIX - end -->\n"
|
data/lib/schema_dev/rspec/db.rb
CHANGED
@@ -26,6 +26,10 @@ module SchemaDev
|
|
26
26
|
@tmproot ||= Pathname.new('tmp').tap { |path| path.mkpath }
|
27
27
|
end
|
28
28
|
|
29
|
+
def logroot
|
30
|
+
@logroot ||= Pathname.new('log').tap { |path| path.mkpath }
|
31
|
+
end
|
32
|
+
|
29
33
|
def configuration
|
30
34
|
case @db
|
31
35
|
when 'mysql'
|
@@ -72,8 +76,8 @@ module SchemaDev
|
|
72
76
|
|
73
77
|
def set_logger
|
74
78
|
ruby = "#{RUBY_ENGINE}-#{RUBY_VERSION}"
|
75
|
-
|
76
|
-
ActiveRecord::Base.logger = Logger.new(
|
79
|
+
activerecord = "activerecord-#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}"
|
80
|
+
ActiveRecord::Base.logger = Logger.new(logroot.join("#{ruby}.#{activerecord}.#{@db}.log").open("w"))
|
77
81
|
end
|
78
82
|
|
79
83
|
module Helpers
|
data/lib/schema_dev/runner.rb
CHANGED
@@ -35,10 +35,10 @@ module SchemaDev
|
|
35
35
|
self.readme(quiet: quiet)
|
36
36
|
end
|
37
37
|
|
38
|
-
def run(*args, dry_run: false, quick: false, ruby: nil,
|
38
|
+
def run(*args, dry_run: false, quick: false, ruby: nil, activerecord: nil, db: nil, freshen: true)
|
39
39
|
self.freshen if freshen
|
40
40
|
|
41
|
-
matrix = MatrixExecutor.new @config.matrix(quick: quick, ruby: ruby,
|
41
|
+
matrix = MatrixExecutor.new @config.matrix(quick: quick, ruby: ruby, activerecord: activerecord, db: db)
|
42
42
|
|
43
43
|
return true if matrix.run(Shellwords.join(args.flatten), dry_run: dry_run)
|
44
44
|
|
data/lib/schema_dev/travis.rb
CHANGED
@@ -21,11 +21,11 @@ module SchemaDev
|
|
21
21
|
end
|
22
22
|
env = env.join(' ')
|
23
23
|
|
24
|
-
gemfiles = config.matrix.map{|entry| GemfileSelector.gemfile(entry.slice(:
|
24
|
+
gemfiles = config.matrix.map{|entry| GemfileSelector.gemfile(entry.slice(:activerecord, :db)).to_s}.uniq
|
25
25
|
|
26
26
|
exclude = config.matrix(excluded: :only).map { |entry| {}.tap {|ex|
|
27
27
|
ex["rvm"] = entry[:ruby]
|
28
|
-
ex["gemfile"] = GemfileSelector.gemfile(entry.slice(:
|
28
|
+
ex["gemfile"] = GemfileSelector.gemfile(entry.slice(:activerecord, :db)).to_s
|
29
29
|
ex["env"] = env unless env.empty?
|
30
30
|
}}.reject{|ex| not gemfiles.include? ex["gemfile"]}
|
31
31
|
|
data/lib/schema_dev/version.rb
CHANGED
data/spec/config_spec.rb
CHANGED
@@ -1,59 +1,59 @@
|
|
1
1
|
describe SchemaDev::Config do
|
2
2
|
|
3
3
|
it "computes matrix" do
|
4
|
-
config = get_config(ruby: %W[1.9.3 2.1.5],
|
4
|
+
config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql])
|
5
5
|
expect(config.matrix).to match_array [
|
6
|
-
{ ruby: "1.9.3",
|
7
|
-
{ ruby: "1.9.3",
|
8
|
-
{ ruby: "1.9.3",
|
9
|
-
{ ruby: "1.9.3",
|
10
|
-
{ ruby: "2.1.5",
|
11
|
-
{ ruby: "2.1.5",
|
12
|
-
{ ruby: "2.1.5",
|
13
|
-
{ ruby: "2.1.5",
|
6
|
+
{ ruby: "1.9.3", activerecord: "4.0", db: "sqlite3" },
|
7
|
+
{ ruby: "1.9.3", activerecord: "4.0", db: "postgresql" },
|
8
|
+
{ ruby: "1.9.3", activerecord: "4.1", db: "sqlite3" },
|
9
|
+
{ ruby: "1.9.3", activerecord: "4.1", db: "postgresql" },
|
10
|
+
{ ruby: "2.1.5", activerecord: "4.0", db: "sqlite3" },
|
11
|
+
{ ruby: "2.1.5", activerecord: "4.0", db: "postgresql" },
|
12
|
+
{ ruby: "2.1.5", activerecord: "4.1", db: "sqlite3" },
|
13
|
+
{ ruby: "2.1.5", activerecord: "4.1", db: "postgresql" },
|
14
14
|
]
|
15
15
|
end
|
16
16
|
|
17
17
|
it "excludes explicit elements from matrix" do
|
18
|
-
config = get_config(ruby: %W[1.9.3 2.1.5],
|
18
|
+
config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql],
|
19
19
|
exclude: [
|
20
|
-
{ ruby: "1.9.3",
|
21
|
-
{ ruby: "2.1.5",
|
20
|
+
{ ruby: "1.9.3", activerecord: "4.1", db: "postgresql" },
|
21
|
+
{ ruby: "2.1.5", activerecord: "4.0", db: "sqlite3" } ]
|
22
22
|
)
|
23
23
|
expect(config.matrix).to match_array [
|
24
|
-
{ ruby: "1.9.3",
|
25
|
-
{ ruby: "1.9.3",
|
26
|
-
{ ruby: "1.9.3",
|
27
|
-
# { ruby: "1.9.3",
|
28
|
-
# { ruby: "2.1.5",
|
29
|
-
{ ruby: "2.1.5",
|
30
|
-
{ ruby: "2.1.5",
|
31
|
-
{ ruby: "2.1.5",
|
24
|
+
{ ruby: "1.9.3", activerecord: "4.0", db: "sqlite3" },
|
25
|
+
{ ruby: "1.9.3", activerecord: "4.0", db: "postgresql" },
|
26
|
+
{ ruby: "1.9.3", activerecord: "4.1", db: "sqlite3" },
|
27
|
+
# { ruby: "1.9.3", activerecord: "4.1", db: "postgresql" },
|
28
|
+
# { ruby: "2.1.5", activerecord: "4.0", db: "sqlite3" },
|
29
|
+
{ ruby: "2.1.5", activerecord: "4.0", db: "postgresql" },
|
30
|
+
{ ruby: "2.1.5", activerecord: "4.1", db: "sqlite3" },
|
31
|
+
{ ruby: "2.1.5", activerecord: "4.1", db: "postgresql" },
|
32
32
|
]
|
33
33
|
end
|
34
34
|
|
35
35
|
it "excludes slices from matrix" do
|
36
|
-
config = get_config(ruby: %W[1.9.3 2.1.5],
|
36
|
+
config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql],
|
37
37
|
exclude: [
|
38
|
-
{ ruby: "1.9.3",
|
38
|
+
{ ruby: "1.9.3", activerecord: "4.1"},
|
39
39
|
{ ruby: "2.1.5", db: "sqlite3" } ]
|
40
40
|
)
|
41
41
|
expect(config.matrix).to match_array [
|
42
|
-
{ ruby: "1.9.3",
|
43
|
-
{ ruby: "1.9.3",
|
44
|
-
#{ ruby: "1.9.3",
|
45
|
-
#{ ruby: "1.9.3",
|
46
|
-
#{ ruby: "2.1.5",
|
47
|
-
{ ruby: "2.1.5",
|
48
|
-
#{ ruby: "2.1.5",
|
49
|
-
{ ruby: "2.1.5",
|
42
|
+
{ ruby: "1.9.3", activerecord: "4.0", db: "sqlite3" },
|
43
|
+
{ ruby: "1.9.3", activerecord: "4.0", db: "postgresql" },
|
44
|
+
#{ ruby: "1.9.3", activerecord: "4.1", db: "sqlite3" },
|
45
|
+
#{ ruby: "1.9.3", activerecord: "4.1", db: "postgresql" },
|
46
|
+
#{ ruby: "2.1.5", activerecord: "4.0", db: "sqlite3" },
|
47
|
+
{ ruby: "2.1.5", activerecord: "4.0", db: "postgresql" },
|
48
|
+
#{ ruby: "2.1.5", activerecord: "4.1", db: "sqlite3" },
|
49
|
+
{ ruby: "2.1.5", activerecord: "4.1", db: "postgresql" },
|
50
50
|
]
|
51
51
|
end
|
52
52
|
|
53
53
|
it "uses last cell for --quick" do
|
54
|
-
config = get_config(ruby: %W[1.9.3 2.1.5],
|
54
|
+
config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql])
|
55
55
|
expect(config.matrix quick: true).to match_array [
|
56
|
-
{ ruby: "2.1.5",
|
56
|
+
{ ruby: "2.1.5", activerecord: "4.1", db: "postgresql" },
|
57
57
|
]
|
58
58
|
end
|
59
59
|
|
@@ -4,7 +4,7 @@ describe SchemaDev::GemfileSelector do
|
|
4
4
|
|
5
5
|
it "infers db from env" do
|
6
6
|
test_dbname = 'this_is_a_test'
|
7
|
-
ENV['BUNDLE_GEMFILE'] = SchemaDev::GemfileSelector.gemfile(
|
7
|
+
ENV['BUNDLE_GEMFILE'] = SchemaDev::GemfileSelector.gemfile(activerecord: '4.1', db: test_dbname).to_s
|
8
8
|
expect(SchemaDev::GemfileSelector.infer_db).to eq test_dbname
|
9
9
|
end
|
10
10
|
end
|
data/spec/gemfiles_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'schema_dev/gemfiles'
|
|
3
3
|
describe SchemaDev::Gemfiles do
|
4
4
|
|
5
5
|
it "copies listed files" do
|
6
|
-
config = get_config(ruby: %W[1.9.3 2.1.5],
|
6
|
+
config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql])
|
7
7
|
in_tmpdir do
|
8
8
|
expect(SchemaDev::Gemfiles.build(config)).to be_truthy
|
9
9
|
expect(relevant_diff(config, "gemfiles")).to be_empty
|
@@ -11,7 +11,7 @@ describe SchemaDev::Gemfiles do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "only copies files once" do
|
14
|
-
config = get_config(ruby: %W[1.9.3 2.1.5],
|
14
|
+
config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql])
|
15
15
|
in_tmpdir do
|
16
16
|
expect(SchemaDev::Gemfiles.build(config)).to be_truthy
|
17
17
|
expect(SchemaDev::Gemfiles.build(config)).to be_falsey
|
@@ -22,8 +22,8 @@ describe SchemaDev::Gemfiles do
|
|
22
22
|
src = SchemaDev::Templates.root + dir
|
23
23
|
diff = `diff -rq #{src} #{dir} 2>&1`.split("\n")
|
24
24
|
|
25
|
-
# expect copy not to have entry for
|
26
|
-
diff.reject!{ |d| d =~ %r[Only in #{src}:
|
25
|
+
# expect copy not to have entry for activerecord not in config
|
26
|
+
diff.reject!{ |d| d =~ %r[Only in #{src}: activerecord-(.*)] and not config.activerecord.include? $1 }
|
27
27
|
|
28
28
|
# expect copy not to have entry for db not in config
|
29
29
|
diff.reject!{ |d| d =~ %r[Only in #{src}.*: Gemfile.(.*)] and not config.db.include? $1 }
|
data/spec/runner_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'schema_dev/runner'
|
|
3
3
|
describe SchemaDev::Runner do
|
4
4
|
|
5
5
|
it "creates gemfiles" do
|
6
|
-
config = get_config(ruby: "2.1.3",
|
6
|
+
config = get_config(ruby: "2.1.3", activerecord: "4.0", db: "sqlite3")
|
7
7
|
runner = SchemaDev::Runner.new(config)
|
8
8
|
in_tmpdir do
|
9
9
|
expect{ runner.gemfiles }.to output("* Updated gemfiles\n").to_stdout
|
@@ -12,7 +12,7 @@ describe SchemaDev::Runner do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "creates travis" do
|
15
|
-
config = get_config(ruby: "2.1.3",
|
15
|
+
config = get_config(ruby: "2.1.3", activerecord: "4.0", db: "sqlite3")
|
16
16
|
runner = SchemaDev::Runner.new(config)
|
17
17
|
in_tmpdir do
|
18
18
|
expect{ runner.travis }.to output("* Updated .travis.yml\n").to_stdout
|
@@ -54,7 +54,7 @@ describe SchemaDev::Runner do
|
|
54
54
|
}
|
55
55
|
end
|
56
56
|
|
57
|
-
let(:config) { get_config(ruby: RUBY_VERSION,
|
57
|
+
let(:config) { get_config(ruby: RUBY_VERSION, activerecord: "4.0", db: %W[sqlite3 postgresql]) }
|
58
58
|
let(:runner) { SchemaDev::Runner.new(config) }
|
59
59
|
|
60
60
|
|
@@ -63,14 +63,14 @@ describe SchemaDev::Runner do
|
|
63
63
|
* Updated gemfiles
|
64
64
|
|
65
65
|
|
66
|
-
*** ruby #{RUBY_VERSION} -
|
66
|
+
*** ruby #{RUBY_VERSION} - activerecord 4.0 - db sqlite3 [1 of 2]
|
67
67
|
|
68
|
-
* /usr/bin/env BUNDLE_GEMFILE=gemfiles/
|
68
|
+
* /usr/bin/env BUNDLE_GEMFILE=gemfiles/activerecord-4.0/Gemfile.sqlite3 #{selection_command} %{cmd}
|
69
69
|
%{output}
|
70
70
|
|
71
|
-
*** ruby #{RUBY_VERSION} -
|
71
|
+
*** ruby #{RUBY_VERSION} - activerecord 4.0 - db postgresql [2 of 2]
|
72
72
|
|
73
|
-
* /usr/bin/env BUNDLE_GEMFILE=gemfiles/
|
73
|
+
* /usr/bin/env BUNDLE_GEMFILE=gemfiles/activerecord-4.0/Gemfile.postgresql #{selection_command} %{cmd}
|
74
74
|
%{output}
|
75
75
|
ENDOUTPUT
|
76
76
|
|
@@ -85,8 +85,8 @@ ENDOUTPUT
|
|
85
85
|
expect{ runner.run("false") }.to output(expected_output % {cmd: 'false', output: nil} + <<-ENDERR).to_stdout
|
86
86
|
|
87
87
|
*** 2 failures:
|
88
|
-
\truby #{RUBY_VERSION} -
|
89
|
-
\truby #{RUBY_VERSION} -
|
88
|
+
\truby #{RUBY_VERSION} - activerecord 4.0 - db sqlite3
|
89
|
+
\truby #{RUBY_VERSION} - activerecord 4.0 - db postgresql
|
90
90
|
ENDERR
|
91
91
|
end
|
92
92
|
end
|
@@ -96,8 +96,8 @@ ENDOUTPUT
|
|
96
96
|
expect{ runner.run("echo", "LoadError") }.to output(expected_output % {cmd: 'echo LoadError', output: "LoadError\n"} + <<-ENDERR).to_stdout
|
97
97
|
|
98
98
|
*** 2 failures:
|
99
|
-
\truby #{RUBY_VERSION} -
|
100
|
-
\truby #{RUBY_VERSION} -
|
99
|
+
\truby #{RUBY_VERSION} - activerecord 4.0 - db sqlite3
|
100
|
+
\truby #{RUBY_VERSION} - activerecord 4.0 - db postgresql
|
101
101
|
ENDERR
|
102
102
|
end
|
103
103
|
end
|
data/spec/travis_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe SchemaDev::Travis do
|
|
4
4
|
|
5
5
|
it "creates travis file" do
|
6
6
|
config = get_config(ruby: %W[1.9.3 2.1.5],
|
7
|
-
|
7
|
+
activerecord: %W[4.0 4.1],
|
8
8
|
db: %W[mysql2 postgresql],
|
9
9
|
exclude: { ruby: "1.9.3", db: "postgresql" },
|
10
10
|
notify: 'me@example.com')
|
@@ -21,10 +21,10 @@ rvm:
|
|
21
21
|
- 1.9.3
|
22
22
|
- 2.1.5
|
23
23
|
gemfile:
|
24
|
-
- gemfiles/
|
25
|
-
- gemfiles/
|
26
|
-
- gemfiles/
|
27
|
-
- gemfiles/
|
24
|
+
- gemfiles/activerecord-4.0/Gemfile.mysql2
|
25
|
+
- gemfiles/activerecord-4.0/Gemfile.postgresql
|
26
|
+
- gemfiles/activerecord-4.1/Gemfile.mysql2
|
27
|
+
- gemfiles/activerecord-4.1/Gemfile.postgresql
|
28
28
|
env: POSTGRESQL_DB_USER=postgres MYSQL_DB_USER=travis
|
29
29
|
addons:
|
30
30
|
postgresql: '9.3'
|
@@ -37,10 +37,10 @@ notifications:
|
|
37
37
|
matrix:
|
38
38
|
exclude:
|
39
39
|
- rvm: 1.9.3
|
40
|
-
gemfile: gemfiles/
|
40
|
+
gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
|
41
41
|
env: POSTGRESQL_DB_USER=postgres MYSQL_DB_USER=travis
|
42
42
|
- rvm: 1.9.3
|
43
|
-
gemfile: gemfiles/
|
43
|
+
gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
|
44
44
|
env: POSTGRESQL_DB_USER=postgres MYSQL_DB_USER=travis
|
45
45
|
ENDTRAVIS
|
46
46
|
end
|
data/templates/gem/README.md
CHANGED
@@ -37,7 +37,7 @@ Are you interested in contributing to %GEM_MODULE%? Thanks! Please follow the
|
|
37
37
|
Some things to know about to help you develop and test:
|
38
38
|
|
39
39
|
* **schema_dev**: %GEM_MODULE% uses [schema_dev](https://github.com/SchemaPlus/schema_dev) to
|
40
|
-
facilitate running rspec tests on the matrix of ruby,
|
40
|
+
facilitate running rspec tests on the matrix of ruby, activerecord, and database
|
41
41
|
versions that the gem supports, both locally and on
|
42
42
|
[travis-ci](http://travis-ci.org/SchemaPlus/%GEM_NAME%)
|
43
43
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schema_dev
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ronen barzel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01
|
11
|
+
date: 2015-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -246,27 +246,27 @@ files:
|
|
246
246
|
- templates/gem/spec/sanity_spec.rb
|
247
247
|
- templates/gem/spec/spec_helper.rb
|
248
248
|
- templates/gemfiles/Gemfile.base
|
249
|
-
- templates/gemfiles/
|
250
|
-
- templates/gemfiles/
|
251
|
-
- templates/gemfiles/
|
252
|
-
- templates/gemfiles/
|
253
|
-
- templates/gemfiles/
|
254
|
-
- templates/gemfiles/
|
255
|
-
- templates/gemfiles/
|
256
|
-
- templates/gemfiles/
|
257
|
-
- templates/gemfiles/
|
258
|
-
- templates/gemfiles/
|
259
|
-
- templates/gemfiles/
|
260
|
-
- templates/gemfiles/
|
261
|
-
- templates/gemfiles/
|
262
|
-
- templates/gemfiles/
|
263
|
-
- templates/gemfiles/
|
264
|
-
- templates/gemfiles/
|
265
|
-
- templates/gemfiles/
|
266
|
-
- templates/gemfiles/
|
267
|
-
- templates/gemfiles/
|
268
|
-
- templates/gemfiles/
|
269
|
-
- templates/gemfiles/
|
249
|
+
- templates/gemfiles/activerecord-3.2/Gemfile.base
|
250
|
+
- templates/gemfiles/activerecord-3.2/Gemfile.mysql
|
251
|
+
- templates/gemfiles/activerecord-3.2/Gemfile.mysql2
|
252
|
+
- templates/gemfiles/activerecord-3.2/Gemfile.postgresql
|
253
|
+
- templates/gemfiles/activerecord-3.2/Gemfile.sqlite3
|
254
|
+
- templates/gemfiles/activerecord-4.0/Gemfile.base
|
255
|
+
- templates/gemfiles/activerecord-4.0/Gemfile.mysql2
|
256
|
+
- templates/gemfiles/activerecord-4.0/Gemfile.postgresql
|
257
|
+
- templates/gemfiles/activerecord-4.0/Gemfile.sqlite3
|
258
|
+
- templates/gemfiles/activerecord-4.1/Gemfile.base
|
259
|
+
- templates/gemfiles/activerecord-4.1/Gemfile.mysql2
|
260
|
+
- templates/gemfiles/activerecord-4.1/Gemfile.postgresql
|
261
|
+
- templates/gemfiles/activerecord-4.1/Gemfile.sqlite3
|
262
|
+
- templates/gemfiles/activerecord-4.2/Gemfile.base
|
263
|
+
- templates/gemfiles/activerecord-4.2/Gemfile.mysql2
|
264
|
+
- templates/gemfiles/activerecord-4.2/Gemfile.postgresql
|
265
|
+
- templates/gemfiles/activerecord-4.2/Gemfile.sqlite3
|
266
|
+
- templates/gemfiles/activerecord-edge/Gemfile.base
|
267
|
+
- templates/gemfiles/activerecord-edge/Gemfile.mysql2
|
268
|
+
- templates/gemfiles/activerecord-edge/Gemfile.postgresql
|
269
|
+
- templates/gemfiles/activerecord-edge/Gemfile.sqlite3
|
270
270
|
homepage: https://github.com/SchemaPlus/schema_dev
|
271
271
|
licenses:
|
272
272
|
- MIT
|