schema_dev 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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