schema_dev 4.0.0 → 4.1.0

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/prs.yml +49 -0
  3. data/.simplecov +20 -0
  4. data/Gemfile +2 -0
  5. data/README.md +7 -7
  6. data/Rakefile +3 -5
  7. data/bin/schema_dev +25 -21
  8. data/lib/schema_dev/config.rb +62 -44
  9. data/lib/schema_dev/executor.rb +9 -8
  10. data/lib/schema_dev/gem.rb +45 -37
  11. data/lib/schema_dev/gemfile_selector.rb +7 -7
  12. data/lib/schema_dev/gemfiles.rb +6 -5
  13. data/lib/schema_dev/github_actions.rb +266 -0
  14. data/lib/schema_dev/matrix_executor.rb +4 -2
  15. data/lib/schema_dev/readme.rb +17 -10
  16. data/lib/schema_dev/rspec/db.rb +44 -33
  17. data/lib/schema_dev/rspec.rb +4 -9
  18. data/lib/schema_dev/ruby_selector.rb +29 -14
  19. data/lib/schema_dev/runner.rb +14 -10
  20. data/lib/schema_dev/tasks/dbms.rb +34 -26
  21. data/lib/schema_dev/tasks.rb +2 -3
  22. data/lib/schema_dev/templates.rb +5 -5
  23. data/lib/schema_dev/version.rb +3 -1
  24. data/lib/schema_dev.rb +3 -1
  25. data/schema_dev.gemspec +23 -26
  26. data/spec/schema_dev/config_spec.rb +60 -0
  27. data/spec/schema_dev/gem_spec.rb +74 -0
  28. data/spec/schema_dev/gemfile_selector_spec.rb +11 -0
  29. data/spec/schema_dev/gemfiles_spec.rb +41 -0
  30. data/spec/schema_dev/github_actions_spec.rb +818 -0
  31. data/spec/schema_dev/runner_spec.rb +103 -0
  32. data/spec/spec_helper.rb +5 -6
  33. data/templates/README/uses.schema_dev.md.erb +1 -2
  34. data/templates/gem/GEM_NAME.gemspec.erb +15 -14
  35. data/templates/gem/Gemfile.erb +2 -0
  36. data/templates/gem/Gemfile.local.erb +2 -0
  37. data/templates/gem/README.md.erb +1 -2
  38. data/templates/gem/Rakefile.erb +2 -0
  39. data/templates/gem/schema_dev.yml.erb +4 -1
  40. data/templates/gem/simplecov.erb +20 -0
  41. metadata +38 -87
  42. data/.travis.yml +0 -4
  43. data/lib/schema_dev/tasks/coveralls.rb +0 -3
  44. data/lib/schema_dev/travis.rb +0 -147
  45. data/spec/config_spec.rb +0 -61
  46. data/spec/gem_spec.rb +0 -77
  47. data/spec/gemfile_sepector_spec.rb +0 -10
  48. data/spec/gemfiles_spec.rb +0 -41
  49. data/spec/runner_spec.rb +0 -106
  50. data/spec/travis_spec.rb +0 -392
data/spec/config_spec.rb DELETED
@@ -1,61 +0,0 @@
1
- describe SchemaDev::Config do
2
-
3
- it "computes matrix" do
4
- config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql])
5
- expect(config.matrix).to match_array [
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
- ]
15
- end
16
-
17
- it "excludes explicit elements from matrix" do
18
- config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql],
19
- exclude: [
20
- { ruby: "1.9.3", activerecord: "4.1", db: "postgresql" },
21
- { ruby: "2.1.5", activerecord: "4.0", db: "sqlite3" } ]
22
- )
23
- expect(config.matrix).to match_array [
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
- ]
33
- end
34
-
35
- it "excludes slices from matrix" do
36
- config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql],
37
- exclude: [
38
- { ruby: "1.9.3", activerecord: "4.1"},
39
- { ruby: "2.1.5", db: "sqlite3" } ]
40
- )
41
- expect(config.matrix).to match_array [
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
- ]
51
- end
52
-
53
- it "uses last cell for --quick" do
54
- config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[4.0 4.1], db: %W[sqlite3 postgresql])
55
- expect(config.matrix quick: true).to match_array [
56
- { ruby: "2.1.5", activerecord: "4.1", db: "postgresql" },
57
- ]
58
- end
59
-
60
-
61
- end
data/spec/gem_spec.rb DELETED
@@ -1,77 +0,0 @@
1
- require 'schema_dev/gem'
2
-
3
- describe SchemaDev::Gem do
4
-
5
- around(:each) do |example|
6
- in_tmpdir do
7
- suppress_stdout_stderr do
8
- example.run
9
- end
10
- end
11
- end
12
-
13
- Given(:user_name) { "My Name" }
14
- Given(:user_email) { "my_name@example.com" }
15
-
16
- Given {
17
- allow_any_instance_of(SchemaDev::Gem).to receive(:`).with("git config user.name").and_return user_name
18
- allow_any_instance_of(SchemaDev::Gem).to receive(:`).with("git config user.email").and_return user_email
19
- }
20
-
21
- context "builds" do
22
-
23
- Given {
24
- stub_request(:get, 'https://rubygems.org/api/v1/versions/schema_plus_core.json').to_return body: JSON.generate([
25
- { number: "1.0.0.pre", prerelease: true},
26
- { number: "0.2.1"},
27
- { number: "0.1.2"},
28
- { number: "0.1.1" },
29
- ])
30
- }
31
-
32
- When { SchemaDev::Gem.build gem_name }
33
-
34
- When(:gemspec) { File.read "#{gem_name}/#{gem_name}.gemspec" }
35
- When(:readme) { File.read "#{gem_name}/README.md" }
36
-
37
- Invariant { expect(readme).to include %q{<!-- These lines are auto-generated by schema_dev based on schema_dev.yml -->} }
38
- Invariant { expect(readme).to include %q{<!-- These lines are auto-inserted from a schema_dev template -->} }
39
-
40
- Invariant { expect(gemspec).to include %q{"schema_plus_core", "~> 0.2", ">= 0.2.1"} }
41
- Invariant { expect(gemspec).to match %r{authors.*#{user_name}} }
42
- Invariant { expect(gemspec).to match %r{email.*#{user_email}} }
43
-
44
- context "flat gem" do
45
- Given(:gem_name) { "new_gem" }
46
- Then { expect(gemspec).to include %q{require 'new_gem/version'} }
47
- Then { expect(File.read "new_gem/lib/new_gem.rb").to include %q{SchemaMonkey.register NewGem} }
48
- end
49
-
50
- context "subdir gem" do
51
- Given(:gem_name) { "schema_plus_new_gem" }
52
- Then { expect(gemspec).to include %q{require 'schema_plus/new_gem/version'} }
53
- Then { expect(File.read "schema_plus_new_gem/lib/schema_plus_new_gem.rb").to include %q{require_relative 'schema_plus/new_gem'} }
54
- Then { expect(File.read "schema_plus_new_gem/lib/schema_plus/new_gem.rb").to include %q{SchemaMonkey.register SchemaPlus::NewGem} }
55
- end
56
- end
57
-
58
-
59
- context "complains" do
60
-
61
- context "when no git user.name" do
62
- Given(:user_name) { "" }
63
- Then { expect{SchemaDev::Gem.build("NewGem")}.to raise_error SystemExit, /who are you/i }
64
- end
65
-
66
- context "when in git worktree" do
67
- Given { expect_any_instance_of(SchemaDev::Gem).to receive(:system).with(/^git rev-parse/).and_return true }
68
- Then { expect{SchemaDev::Gem.build("NewGem")}.to raise_error SystemExit, /\bgit\b/ }
69
- end
70
-
71
- context "when gem directory exists" do
72
- Given { FileUtils.touch "new_gem" }
73
- Then { expect{SchemaDev::Gem.build("NewGem")}.to raise_error SystemExit, /exists/ }
74
- end
75
- end
76
-
77
- end
@@ -1,10 +0,0 @@
1
- require 'schema_dev/gemfile_selector'
2
-
3
- describe SchemaDev::GemfileSelector do
4
-
5
- it "infers db from env" do
6
- test_dbname = 'this_is_a_test'
7
- ENV['BUNDLE_GEMFILE'] = SchemaDev::GemfileSelector.gemfile(activerecord: '4.1', db: test_dbname).to_s
8
- expect(SchemaDev::GemfileSelector.infer_db).to eq test_dbname
9
- end
10
- end
@@ -1,41 +0,0 @@
1
- require 'schema_dev/gemfiles'
2
-
3
- describe SchemaDev::Gemfiles do
4
-
5
- it "copies listed files" do
6
- config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[5.2 6.0], db: %W[sqlite3 postgresql])
7
- in_tmpdir do
8
- expect(SchemaDev::Gemfiles.build(config)).to be_truthy
9
- expect(relevant_diff(config, "gemfiles")).to be_empty
10
- end
11
- end
12
-
13
- it "only copies files once" do
14
- config = get_config(ruby: %W[1.9.3 2.1.5], activerecord: %W[5.2 6.0], db: %W[sqlite3 postgresql])
15
- in_tmpdir do
16
- expect(SchemaDev::Gemfiles.build(config)).to be_truthy
17
- expect(SchemaDev::Gemfiles.build(config)).to be_falsey
18
- end
19
- end
20
-
21
- def relevant_diff(config, dir)
22
- Dir.mktmpdir do |no_erb_root|
23
- no_erb_root = Pathname(no_erb_root)
24
- erb_root = SchemaDev::Templates.root + dir
25
- Pathname.glob(erb_root + "**/*").select(&:file?).each do |p|
26
- d = (no_erb_root+p.relative_path_from(erb_root)).sub_ext('')
27
- d.dirname.mkpath
28
- d.write p.read
29
- end
30
-
31
- diff = `diff -rq #{no_erb_root} #{dir} 2>&1`.split("\n")
32
-
33
- # expect copy not to have entry for activerecord not in config
34
- diff.reject!{ |d| d =~ %r[Only in #{no_erb_root}: activerecord-(.*)] and not config.activerecord.include? $1 }
35
-
36
- # expect copy not to have entry for db not in config
37
- diff.reject!{ |d| d =~ %r[Only in #{no_erb_root}.*: Gemfile.(.*)] and not config.db.include? $1 }
38
- end
39
- end
40
-
41
- end
data/spec/runner_spec.rb DELETED
@@ -1,106 +0,0 @@
1
- require 'schema_dev/runner'
2
- require 'which_works'
3
- require 'pathname'
4
-
5
- describe SchemaDev::Runner do
6
-
7
- it "creates gemfiles" do
8
- config = get_config(ruby: "2.1.3", activerecord: "5.2", db: "sqlite3")
9
- runner = SchemaDev::Runner.new(config)
10
- in_tmpdir do
11
- expect{ runner.gemfiles }.to output("* Updated gemfiles\n").to_stdout
12
- expect(Pathname.new("gemfiles")).to be_directory
13
- end
14
- end
15
-
16
- it "creates travis" do
17
- config = get_config(ruby: "2.1.3", activerecord: "5.2", db: "sqlite3")
18
- runner = SchemaDev::Runner.new(config)
19
- in_tmpdir do
20
- expect{ runner.travis }.to output("* Updated .travis.yml\n").to_stdout
21
- expect(Pathname.new(".travis.yml")).to be_file
22
- end
23
- end
24
-
25
- Selectors = {
26
- 'chruby-exec' => "SHELL=/usr/local/bin/bash chruby-exec ruby-#{RUBY_VERSION} --",
27
- 'rvm' => "rvm #{RUBY_VERSION} do",
28
- 'rbenv' => "RBENV_VERSION=#{RUBY_VERSION}"
29
- }
30
-
31
- Selectors.each do |selector, selection_command|
32
-
33
- describe "matrix (#{selector})" do
34
- before(:each) do
35
- # mocking Which.which to find selector
36
- SchemaDev::RubySelector._reset
37
- allow(Which).to receive(:which) {|cmd| ["bash", selector].include?(cmd) ? "/usr/local/bin/#{cmd}" : nil }
38
- case selector
39
- when 'chruby-exec'
40
- expect_any_instance_of(Pathname).to receive(:entries).and_return [Pathname.new("ruby-#{RUBY_VERSION}")]
41
- when 'rbenv'
42
- expect_any_instance_of(SchemaDev::RubySelector::Rbenv).to receive(:`).with("rbenv versions --bare").and_return RUBY_VERSION
43
- end
44
-
45
- # mocking execution
46
- original_popen2e = Open3.method(:popen2e)
47
- allow(Open3).to receive(:popen2e) { |cmd, &block|
48
- cmd = case cmd
49
- when /false$/ then "false"
50
- when /true$/ then "true"
51
- else cmd.sub(/.*echo/, "echo")
52
- end
53
- original_popen2e.call(cmd, &block)
54
- }
55
- end
56
-
57
- let(:config) { get_config(ruby: RUBY_VERSION, activerecord: "5.2", db: %W[sqlite3 postgresql]) }
58
- let(:runner) { SchemaDev::Runner.new(config) }
59
-
60
-
61
- let(:expected_output) { <<ENDOUTPUT.strip }
62
- * Updated .travis.yml
63
- * Updated gemfiles
64
-
65
-
66
- *** ruby #{RUBY_VERSION} - activerecord 5.2 - db sqlite3 [1 of 2]
67
-
68
- * /usr/bin/env BUNDLE_GEMFILE=gemfiles/activerecord-5.2/Gemfile.sqlite3 #{selection_command} %{cmd}
69
- %{output}
70
-
71
- *** ruby #{RUBY_VERSION} - activerecord 5.2 - db postgresql [2 of 2]
72
-
73
- * /usr/bin/env BUNDLE_GEMFILE=gemfiles/activerecord-5.2/Gemfile.postgresql #{selection_command} %{cmd}
74
- %{output}
75
- ENDOUTPUT
76
-
77
- it "runs successfully" do
78
- in_tmpdir do
79
- expect{ runner.run("true") }.to output(expected_output % {cmd: 'true', output: nil}).to_stdout
80
- end
81
- end
82
-
83
- it "reports error exits" do
84
- in_tmpdir do
85
- expect{ runner.run("false") }.to output(expected_output % {cmd: 'false', output: nil} + <<-ENDERR).to_stdout
86
-
87
- *** 2 failures:
88
- \truby #{RUBY_VERSION} - activerecord 5.2 - db sqlite3
89
- \truby #{RUBY_VERSION} - activerecord 5.2 - db postgresql
90
- ENDERR
91
- end
92
- end
93
-
94
- it "reports error messages" do
95
- in_tmpdir do
96
- expect{ runner.run("echo", "LoadError") }.to output(expected_output % {cmd: 'echo LoadError', output: "LoadError\n"} + <<-ENDERR).to_stdout
97
-
98
- *** 2 failures:
99
- \truby #{RUBY_VERSION} - activerecord 5.2 - db sqlite3
100
- \truby #{RUBY_VERSION} - activerecord 5.2 - db postgresql
101
- ENDERR
102
- end
103
- end
104
- end
105
- end
106
- end
data/spec/travis_spec.rb DELETED
@@ -1,392 +0,0 @@
1
- require 'schema_dev/travis'
2
-
3
- describe SchemaDev::Travis do
4
-
5
- it "creates travis file" do
6
- config = get_config(ruby: %W[1.9.3 2.1.5],
7
- activerecord: %W[4.0 4.1],
8
- db: %W[mysql2 postgresql sqlite3],
9
- exclude: [
10
- { ruby: "1.9.3", db: "postgresql" },
11
- { ruby: "1.9.3", db: "sqlite3" },
12
- ],
13
- notify: 'me@example.com')
14
- in_tmpdir do
15
- SchemaDev::Travis.update(config)
16
- expect(Pathname.new(".travis.yml").read).to eq <<ENDTRAVIS
17
- # This file was auto-generated by the schema_dev tool, based on the data in
18
- # ./schema_dev.yml
19
- # Please do not edit this file; any changes will be overwritten next time
20
- # schema_dev gets run.
21
- ---
22
- rvm:
23
- - 1.9.3
24
- - 2.1.5
25
- gemfile:
26
- - gemfiles/activerecord-4.0/Gemfile.sqlite3
27
- - gemfiles/activerecord-4.1/Gemfile.sqlite3
28
- before_script: bundle exec rake create_databases
29
- after_script: bundle exec rake drop_databases
30
- script: bundle exec rake travis
31
- notifications:
32
- email:
33
- - me@example.com
34
- jobs:
35
- exclude:
36
- - rvm: 1.9.3
37
- gemfile: gemfiles/activerecord-4.0/Gemfile.sqlite3
38
- - rvm: 1.9.3
39
- gemfile: gemfiles/activerecord-4.1/Gemfile.sqlite3
40
- include:
41
- - gemfile: gemfiles/activerecord-4.0/Gemfile.mysql2
42
- rvm: 1.9.3
43
- services:
44
- - mysql
45
- env: MYSQL_DB_USER=travis
46
- - gemfile: gemfiles/activerecord-4.1/Gemfile.mysql2
47
- rvm: 1.9.3
48
- services:
49
- - mysql
50
- env: MYSQL_DB_USER=travis
51
- - gemfile: gemfiles/activerecord-4.0/Gemfile.mysql2
52
- rvm: 2.1.5
53
- services:
54
- - mysql
55
- env: MYSQL_DB_USER=travis
56
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
57
- rvm: 2.1.5
58
- addons:
59
- postgresql: '9.6'
60
- env: POSTGRESQL_DB_USER=postgres
61
- - gemfile: gemfiles/activerecord-4.1/Gemfile.mysql2
62
- rvm: 2.1.5
63
- services:
64
- - mysql
65
- env: MYSQL_DB_USER=travis
66
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
67
- rvm: 2.1.5
68
- addons:
69
- postgresql: '9.6'
70
- env: POSTGRESQL_DB_USER=postgres
71
- ENDTRAVIS
72
- end
73
- end
74
-
75
- context 'when only using postgresql and not overriding the version' do
76
- it "creates travis file using the default PG version" do
77
- config = get_config(ruby: %W[2.4.0],
78
- activerecord: %W[4.1],
79
- db: %W[postgresql])
80
- in_tmpdir do
81
- SchemaDev::Travis.update(config)
82
- expect(Pathname.new(".travis.yml").read).to eq <<ENDTRAVIS
83
- # This file was auto-generated by the schema_dev tool, based on the data in
84
- # ./schema_dev.yml
85
- # Please do not edit this file; any changes will be overwritten next time
86
- # schema_dev gets run.
87
- ---
88
- rvm:
89
- - 2.4.0
90
- gemfile:
91
- - gemfiles/activerecord-4.1/Gemfile.postgresql
92
- env: POSTGRESQL_DB_USER=postgres
93
- addons:
94
- postgresql: '9.6'
95
- before_script: bundle exec rake create_databases
96
- after_script: bundle exec rake drop_databases
97
- script: bundle exec rake travis
98
- ENDTRAVIS
99
- end
100
- end
101
- end
102
-
103
- context 'when specifying a single postgresql version' do
104
- it "creates travis file using that as the PG version" do
105
- config = get_config(ruby: %W[2.4.0],
106
- activerecord: %W[4.1],
107
- db: %W[postgresql sqlite3],
108
- dbversions: {postgresql: %W[9.6]})
109
- in_tmpdir do
110
- SchemaDev::Travis.update(config)
111
- expect(Pathname.new(".travis.yml").read).to eq <<ENDTRAVIS
112
- # This file was auto-generated by the schema_dev tool, based on the data in
113
- # ./schema_dev.yml
114
- # Please do not edit this file; any changes will be overwritten next time
115
- # schema_dev gets run.
116
- ---
117
- rvm:
118
- - 2.4.0
119
- gemfile:
120
- - gemfiles/activerecord-4.1/Gemfile.sqlite3
121
- before_script: bundle exec rake create_databases
122
- after_script: bundle exec rake drop_databases
123
- script: bundle exec rake travis
124
- jobs:
125
- include:
126
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
127
- rvm: 2.4.0
128
- addons:
129
- postgresql: '9.6'
130
- env: POSTGRESQL_DB_USER=postgres
131
- ENDTRAVIS
132
- end
133
- end
134
- end
135
-
136
- context 'when specifying multiple postgresql versions with excludes' do
137
- it "creates travis file including those variants for postgresql versions" do
138
- config = get_config(ruby: %W[1.9.3 2.1.5 2.4.0],
139
- activerecord: %W[4.0 4.1],
140
- db: %W[sqlite3 postgresql],
141
- dbversions: {postgresql: %W[9.6 10 11]},
142
- exclude: [{ ruby: "1.9.3", db: "postgresql" }])
143
- in_tmpdir do
144
- SchemaDev::Travis.update(config)
145
- expect(Pathname.new(".travis.yml").read).to eq <<ENDTRAVIS
146
- # This file was auto-generated by the schema_dev tool, based on the data in
147
- # ./schema_dev.yml
148
- # Please do not edit this file; any changes will be overwritten next time
149
- # schema_dev gets run.
150
- ---
151
- rvm:
152
- - 1.9.3
153
- - 2.1.5
154
- - 2.4.0
155
- gemfile:
156
- - gemfiles/activerecord-4.0/Gemfile.sqlite3
157
- - gemfiles/activerecord-4.1/Gemfile.sqlite3
158
- before_script: bundle exec rake create_databases
159
- after_script: bundle exec rake drop_databases
160
- script: bundle exec rake travis
161
- jobs:
162
- include:
163
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
164
- rvm: 2.1.5
165
- addons:
166
- postgresql: '9.6'
167
- env: POSTGRESQL_DB_USER=postgres
168
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
169
- rvm: 2.1.5
170
- addons:
171
- postgresql: '10'
172
- apt:
173
- packages:
174
- - postgresql-10
175
- - postgresql-client-10
176
- env: POSTGRESQL_DB_USER=postgres
177
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
178
- rvm: 2.1.5
179
- addons:
180
- postgresql: '11'
181
- apt:
182
- packages:
183
- - postgresql-11
184
- - postgresql-client-11
185
- env: POSTGRESQL_DB_USER=travis PGPORT=5433
186
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
187
- rvm: 2.1.5
188
- addons:
189
- postgresql: '9.6'
190
- env: POSTGRESQL_DB_USER=postgres
191
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
192
- rvm: 2.1.5
193
- addons:
194
- postgresql: '10'
195
- apt:
196
- packages:
197
- - postgresql-10
198
- - postgresql-client-10
199
- env: POSTGRESQL_DB_USER=postgres
200
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
201
- rvm: 2.1.5
202
- addons:
203
- postgresql: '11'
204
- apt:
205
- packages:
206
- - postgresql-11
207
- - postgresql-client-11
208
- env: POSTGRESQL_DB_USER=travis PGPORT=5433
209
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
210
- rvm: 2.4.0
211
- addons:
212
- postgresql: '9.6'
213
- env: POSTGRESQL_DB_USER=postgres
214
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
215
- rvm: 2.4.0
216
- addons:
217
- postgresql: '10'
218
- apt:
219
- packages:
220
- - postgresql-10
221
- - postgresql-client-10
222
- env: POSTGRESQL_DB_USER=postgres
223
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
224
- rvm: 2.4.0
225
- addons:
226
- postgresql: '11'
227
- apt:
228
- packages:
229
- - postgresql-11
230
- - postgresql-client-11
231
- env: POSTGRESQL_DB_USER=travis PGPORT=5433
232
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
233
- rvm: 2.4.0
234
- addons:
235
- postgresql: '9.6'
236
- env: POSTGRESQL_DB_USER=postgres
237
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
238
- rvm: 2.4.0
239
- addons:
240
- postgresql: '10'
241
- apt:
242
- packages:
243
- - postgresql-10
244
- - postgresql-client-10
245
- env: POSTGRESQL_DB_USER=postgres
246
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
247
- rvm: 2.4.0
248
- addons:
249
- postgresql: '11'
250
- apt:
251
- packages:
252
- - postgresql-11
253
- - postgresql-client-11
254
- env: POSTGRESQL_DB_USER=travis PGPORT=5433
255
- ENDTRAVIS
256
- end
257
- end
258
- end
259
-
260
- context 'when specifying only postgresql as the db with versions' do
261
- it "creates travis file including only addon variants" do
262
- config = get_config(ruby: %W[2.1.5 2.4.0],
263
- activerecord: %W[4.0 4.1],
264
- db: %W[postgresql],
265
- dbversions: {postgresql: %W[9.6 10 11]})
266
- in_tmpdir do
267
- SchemaDev::Travis.update(config)
268
- expect(Pathname.new(".travis.yml").read).to eq <<ENDTRAVIS
269
- # This file was auto-generated by the schema_dev tool, based on the data in
270
- # ./schema_dev.yml
271
- # Please do not edit this file; any changes will be overwritten next time
272
- # schema_dev gets run.
273
- ---
274
- rvm:
275
- - 2.1.5
276
- - 2.4.0
277
- gemfile:
278
- - gemfiles/activerecord-4.0/Gemfile.postgresql
279
- - gemfiles/activerecord-4.1/Gemfile.postgresql
280
- before_script: bundle exec rake create_databases
281
- after_script: bundle exec rake drop_databases
282
- script: bundle exec rake travis
283
- jobs:
284
- include:
285
- - addons:
286
- postgresql: '9.6'
287
- env: POSTGRESQL_DB_USER=postgres
288
- - addons:
289
- postgresql: '10'
290
- apt:
291
- packages:
292
- - postgresql-10
293
- - postgresql-client-10
294
- env: POSTGRESQL_DB_USER=postgres
295
- - addons:
296
- postgresql: '11'
297
- apt:
298
- packages:
299
- - postgresql-11
300
- - postgresql-client-11
301
- env: POSTGRESQL_DB_USER=travis PGPORT=5433
302
- ENDTRAVIS
303
- end
304
- end
305
- end
306
-
307
- context 'when specifying multiple postgresql versions' do
308
- it "creates travis file including those variants for postgresql versions" do
309
- config = get_config(ruby: %W[2.1.5 2.4.0],
310
- activerecord: %W[4.0 4.1],
311
- db: %W[sqlite3 postgresql],
312
- dbversions: {postgresql: %W[9.6 10]})
313
- in_tmpdir do
314
- SchemaDev::Travis.update(config)
315
- expect(Pathname.new(".travis.yml").read).to eq <<ENDTRAVIS
316
- # This file was auto-generated by the schema_dev tool, based on the data in
317
- # ./schema_dev.yml
318
- # Please do not edit this file; any changes will be overwritten next time
319
- # schema_dev gets run.
320
- ---
321
- rvm:
322
- - 2.1.5
323
- - 2.4.0
324
- gemfile:
325
- - gemfiles/activerecord-4.0/Gemfile.sqlite3
326
- - gemfiles/activerecord-4.1/Gemfile.sqlite3
327
- before_script: bundle exec rake create_databases
328
- after_script: bundle exec rake drop_databases
329
- script: bundle exec rake travis
330
- jobs:
331
- include:
332
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
333
- rvm: 2.1.5
334
- addons:
335
- postgresql: '9.6'
336
- env: POSTGRESQL_DB_USER=postgres
337
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
338
- rvm: 2.1.5
339
- addons:
340
- postgresql: '10'
341
- apt:
342
- packages:
343
- - postgresql-10
344
- - postgresql-client-10
345
- env: POSTGRESQL_DB_USER=postgres
346
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
347
- rvm: 2.1.5
348
- addons:
349
- postgresql: '9.6'
350
- env: POSTGRESQL_DB_USER=postgres
351
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
352
- rvm: 2.1.5
353
- addons:
354
- postgresql: '10'
355
- apt:
356
- packages:
357
- - postgresql-10
358
- - postgresql-client-10
359
- env: POSTGRESQL_DB_USER=postgres
360
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
361
- rvm: 2.4.0
362
- addons:
363
- postgresql: '9.6'
364
- env: POSTGRESQL_DB_USER=postgres
365
- - gemfile: gemfiles/activerecord-4.0/Gemfile.postgresql
366
- rvm: 2.4.0
367
- addons:
368
- postgresql: '10'
369
- apt:
370
- packages:
371
- - postgresql-10
372
- - postgresql-client-10
373
- env: POSTGRESQL_DB_USER=postgres
374
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
375
- rvm: 2.4.0
376
- addons:
377
- postgresql: '9.6'
378
- env: POSTGRESQL_DB_USER=postgres
379
- - gemfile: gemfiles/activerecord-4.1/Gemfile.postgresql
380
- rvm: 2.4.0
381
- addons:
382
- postgresql: '10'
383
- apt:
384
- packages:
385
- - postgresql-10
386
- - postgresql-client-10
387
- env: POSTGRESQL_DB_USER=postgres
388
- ENDTRAVIS
389
- end
390
- end
391
- end
392
- end