schema_dev 1.0.0 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f73255f1d328d7ee245068d7dec68bfa26033a5d
4
- data.tar.gz: 4af8f98640f02ef2e6f43285012f5f0075510620
3
+ metadata.gz: a243f89c4a9cfec2c3e29c123bc4fad4ac11721a
4
+ data.tar.gz: 6d27a4c8b794f4ffee20189ad29214988b88ca47
5
5
  SHA512:
6
- metadata.gz: 573331d9d8303346b607a5e68a7d6d765c446bb2beaa73e617d395250debeae0d4caaafcd4a67db69e2a1dc815af51f5657d0fc21bb70c85f389de4e25785f10
7
- data.tar.gz: e0612131f0f42fcaf79de5f2e0f4ee1efecb1909987e208c7e947dd281647e2c6e5694bc98a56c73136df330a150c0742f3d0359253955c4a984e61e5ecfcbbb
6
+ metadata.gz: 2f18188fb84170286ad74ca6a86ad6b979d2a034dbf40b02ed7004df7fea65767aedc8139d8bd069d2362ccce4a0fa08029930eb5830b51de0b56c93db7fa7b9
7
+ data.tar.gz: e7d2ecdf9fd7463aba97017b7bcf2319e575d37f3295f89a4b66550c5631e5c22a1acf278add87f126c921461bcbde798484206f9eb7a48f417ab0c5744f6e19
@@ -1,4 +1,6 @@
1
1
  require 'json'
2
+ require 'open3'
3
+
2
4
  require_relative "ruby_selector"
3
5
  require_relative "gemfile_selector"
4
6
 
@@ -17,10 +19,13 @@ module SchemaDev
17
19
  puts "* #{fullcommand}"
18
20
  return true if dry_run
19
21
 
20
- Tempfile.open('SchemaDev') do |file|
21
- @error = !system(%Q[ (#{fullcommand}) 2>& 1 | tee #{file.path} ])
22
- file.rewind
23
- @error ||= file.readlines.grep(/(^Failed examples)|(rake aborted)|(LoadError)/).any?
22
+ @error = false
23
+ Open3.popen2e(fullcommand) do |i, oe, t|
24
+ oe.each {|line|
25
+ puts line
26
+ @error ||= (line =~ /(^Failed examples)|(rake aborted)|(LoadError)/)
27
+ }
28
+ @error ||= !t.value.success?
24
29
  end
25
30
 
26
31
  return !@error
@@ -15,7 +15,7 @@ module SchemaDev
15
15
  rails = tuple[:rails]
16
16
  db = tuple[:db]
17
17
 
18
- label = "ruby #{ruby} - rails #{rails} = db #{db}"
18
+ label = "ruby #{ruby} - rails #{rails} - db #{db}"
19
19
  msg = "#{label} [#{i+1} of #{@matrix.size}]"
20
20
  puts "\n\n*** #{msg}\n\n"
21
21
 
@@ -2,6 +2,7 @@ require 'shellwords'
2
2
 
3
3
  require_relative 'matrix_executor'
4
4
  require_relative 'travis'
5
+ require_relative 'gemfiles'
5
6
 
6
7
  module SchemaDev
7
8
  class Runner
@@ -10,7 +11,7 @@ module SchemaDev
10
11
  end
11
12
 
12
13
  def travis
13
- Travis.update(@config) and puts "* Updated #{filepath}"
14
+ Travis.update(@config) and puts "* Updated #{Travis::TRAVIS_FILE}"
14
15
  end
15
16
 
16
17
  def gemfiles
@@ -1,3 +1,3 @@
1
1
  module SchemaDev
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -4,11 +4,9 @@ describe SchemaDev::Gemfiles do
4
4
 
5
5
  it "copies listed files" do
6
6
  config = get_config(ruby: %W[1.9.3 2.1.5], rails: %W[4.0 4.1], db: %W[sqlite3 postgresql])
7
- Dir.mktmpdir do |dir|
8
- Dir.chdir(dir) do
9
- SchemaDev::Gemfiles.build(config)
10
- expect(relevant_diff(config, "gemfiles")).to be_empty
11
- end
7
+ in_tmpdir do
8
+ SchemaDev::Gemfiles.build(config)
9
+ expect(relevant_diff(config, "gemfiles")).to be_empty
12
10
  end
13
11
  end
14
12
 
@@ -0,0 +1,70 @@
1
+ require 'schema_dev/runner'
2
+
3
+ describe SchemaDev::Runner do
4
+
5
+ it "creates gemfiles" do
6
+ config = get_config(ruby: "2.1.3", rails: "4.0", db: "sqlite3")
7
+ runner = SchemaDev::Runner.new(config)
8
+ in_tmpdir do
9
+ expect{ runner.gemfiles }.to output("* Created gemfiles\n").to_stdout
10
+ expect(Pathname.new("gemfiles")).to be_directory
11
+ end
12
+ end
13
+
14
+ it "creates travis" do
15
+ config = get_config(ruby: "2.1.3", rails: "4.0", db: "sqlite3")
16
+ runner = SchemaDev::Runner.new(config)
17
+ in_tmpdir do
18
+ expect{ runner.travis }.to output("* Updated .travis.yml\n").to_stdout
19
+ expect(Pathname.new(".travis.yml")).to be_file
20
+ end
21
+ end
22
+
23
+ describe "matrix" do
24
+ let(:config) { get_config(ruby: RUBY_VERSION, rails: "4.0", db: %W[sqlite3 postgresql]) }
25
+ let(:runner) { SchemaDev::Runner.new(config) }
26
+
27
+ let(:expected_output) { <<ENDOUTPUT.strip }
28
+ * Updated .travis.yml
29
+
30
+
31
+ *** ruby #{RUBY_VERSION} - rails 4.0 - db sqlite3 [1 of 2]
32
+
33
+ * /usr/bin/env BUNDLE_GEMFILE=gemfiles/rails-4.0/Gemfile.sqlite3 SHELL=`which bash` chruby-exec ruby-#{RUBY_VERSION} -- %{cmd}
34
+ %{output}
35
+
36
+ *** ruby #{RUBY_VERSION} - rails 4.0 - db postgresql [2 of 2]
37
+
38
+ * /usr/bin/env BUNDLE_GEMFILE=gemfiles/rails-4.0/Gemfile.postgresql SHELL=`which bash` chruby-exec ruby-#{RUBY_VERSION} -- %{cmd}
39
+ %{output}
40
+ ENDOUTPUT
41
+
42
+ it "runs successfully" do
43
+ in_tmpdir do
44
+ expect{ runner.run("true") }.to output(expected_output % {cmd: 'true', output: nil}).to_stdout
45
+ end
46
+ end
47
+
48
+ it "reports error exits" do
49
+ in_tmpdir do
50
+ expect{ runner.run("false") }.to output(expected_output % {cmd: 'false', output: nil} + <<-ENDERR).to_stdout
51
+
52
+ *** 2 failures:
53
+ ruby #{RUBY_VERSION} - rails 4.0 - db sqlite3
54
+ ruby #{RUBY_VERSION} - rails 4.0 - db postgresql
55
+ ENDERR
56
+ end
57
+ end
58
+
59
+ it "reports error messages" do
60
+ in_tmpdir do
61
+ expect{ runner.run("echo", "LoadError") }.to output(expected_output % {cmd: 'echo LoadError', output: "LoadError\n"} + <<-ENDERR).to_stdout
62
+
63
+ *** 2 failures:
64
+ ruby #{RUBY_VERSION} - rails 4.0 - db sqlite3
65
+ ruby #{RUBY_VERSION} - rails 4.0 - db postgresql
66
+ ENDERR
67
+ end
68
+ end
69
+ end
70
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,12 +5,18 @@ require 'tmpdir'
5
5
 
6
6
  require 'schema_dev/config'
7
7
 
8
- def get_config(data)
9
- SchemaDev::Config._reset
8
+ def in_tmpdir
10
9
  Dir.mktmpdir do |dir|
11
10
  Dir.chdir(dir) do
12
- Pathname.new(SchemaDev::CONFIG_FILE).open("w") {|f| f.write data.to_yaml }
13
- SchemaDev::Config.load
11
+ yield
14
12
  end
15
13
  end
16
14
  end
15
+
16
+ def get_config(data)
17
+ SchemaDev::Config._reset
18
+ in_tmpdir do
19
+ Pathname.new(SchemaDev::CONFIG_FILE).open("w") {|f| f.write data.to_yaml }
20
+ SchemaDev::Config.load
21
+ end
22
+ end
data/spec/travis_spec.rb CHANGED
@@ -8,10 +8,9 @@ describe SchemaDev::Travis do
8
8
  db: %W[sqlite3 postgresql],
9
9
  exclude: { ruby: "1.9.3", db: "postgresql" },
10
10
  notify: 'me@example.com')
11
- Dir.mktmpdir do |dir|
12
- Dir.chdir(dir) do
13
- SchemaDev::Travis.update(config)
14
- expect(Pathname.new(".travis.yml").read).to eq <<ENDTRAVIS
11
+ in_tmpdir do
12
+ SchemaDev::Travis.update(config)
13
+ expect(Pathname.new(".travis.yml").read).to eq <<ENDTRAVIS
15
14
  # This file was auto-generated by the schema_dev tool, based on the data in
16
15
  # ./schema_dev.yml
17
16
  # Please do not edit this file; any changes will be overwritten next time
@@ -40,7 +39,6 @@ matrix:
40
39
  gemfile: gemfiles/rails-4.1/Gemfile.postgresql
41
40
  env: POSTGRESQL_DB_USER=postgres
42
41
  ENDTRAVIS
43
- end
44
42
  end
45
43
  end
46
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ronen barzel
@@ -181,6 +181,7 @@ files:
181
181
  - schema_dev.gemspec
182
182
  - spec/config_spec.rb
183
183
  - spec/gemfiles_spec.rb
184
+ - spec/runner_spec.rb
184
185
  - spec/spec_helper.rb
185
186
  - spec/travis_spec.rb
186
187
  - templates/gemfiles/Gemfile.base
@@ -228,5 +229,6 @@ summary: SchemaPlus development tools
228
229
  test_files:
229
230
  - spec/config_spec.rb
230
231
  - spec/gemfiles_spec.rb
232
+ - spec/runner_spec.rb
231
233
  - spec/spec_helper.rb
232
234
  - spec/travis_spec.rb