qor_test 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,30 +1,83 @@
1
1
  # QorTest
2
2
 
3
+ QorTest is the tool to test your library against different versions of gem dependencies and rubies (through rbenv or rvm)
4
+
5
+ ## Installation
6
+
7
+ gem install qor_test
8
+
3
9
  ## Usage
4
10
 
5
- config/qor/test.rb
11
+ First write a configuration file like below:
12
+
13
+ # config/qor/test.rb
14
+ env '2.0' do
15
+ ruby '2.0'
16
+ gem 'rails', [3.1, 3.2]
17
+ end
18
+
19
+ env '1.9.3' do
20
+ ruby '1.9.3'
21
+ gem 'rails', [3.1, 3.2]
22
+ end
23
+
24
+ env '1.8.7' do
25
+ ruby '1.8.7'
26
+ gem 'factory_girl_rails', '1.3.0'
27
+ gem 'rails', [3.1, 3.2]
28
+ end
29
+
30
+ Then QorTest will generate 6 test cases according to it.
6
31
 
7
- gem 'nokogiri', [{:git => "git://github.com/tenderlove/nokogiri.git", :branch => "1.4"}, {:git => "git://github.com/tenderlove/nokogiri.git"}]
32
+ 1, run tests with rails 3.1 and ruby 2.0
33
+ 2, run tests with rails 3.2 and ruby 2.0
34
+ 3, run tests with rails 3.1 and ruby 1.9
35
+ 4, run tests with rails 3.2 and ruby 1.9
36
+ 5, run tests with rails 3.1 and ruby 1.8
37
+ 6, run tests with rails 3.2 and ruby 1.8
8
38
 
9
- gem 'nokogiri', :git => "git://github.com/tenderlove/nokogiri.git", :branch => "1.4"
10
- gem 'nokogiri', :git => "git://github.com/tenderlove/nokogiri.git"
11
- gem 'RedCloth', ">= 4.1.0", "< 4.2.0"
39
+ Then run all above 6 cases in your project root by running
12
40
 
13
- env 'default' do
41
+ qor_test
42
+
43
+ Or only run those two cases in the '2.0' env by running
44
+
45
+ qor_test -e '2.0'
46
+
47
+ All dependencies definitions outside env definition will be shared in all envs, so you could also simplify above configuration like below, it's the same!
48
+
49
+ # config/qor/test.rb
50
+ gem 'rails', [3.1, 3.2]
51
+
52
+ env '2.0' do
53
+ ruby '2.0'
54
+ end
55
+
56
+ env '1.9.3' do
14
57
  ruby '1.9.3'
15
- gem 'rails', ['3.1', '3.2', '4.0.0.beta']
16
58
  end
17
59
 
18
60
  env '1.8.7' do
19
61
  ruby '1.8.7'
20
- gem 'rails', ['3.1', '3.2']
62
+ gem 'factory_girl_rails', '1.3.0'
21
63
  end
22
64
 
23
- Run:
65
+ And you could write more advanced configuration:
66
+
67
+ # config/qor/test.rb
68
+ ruby '2.0'
69
+ ruby '1.9.3'
70
+ ruby '1.8.7'
71
+
72
+ gem 'paperclip', ['2.4.2', '3.3.0', {:git => "git@github.com:thoughtbot/paperclip.git", :branch => "master"}]
73
+ gem 'rails', [3.1, 3.2]
74
+ gem 'devise', [2.2.0, 2.1.0, 2.0.0]
24
75
 
25
- qor_test
26
- COMMAND='ruby test/xxxx' qor_test -e default
27
- COMMAND='rake test' qor_test -e 1.8.7
76
+ With it, QorTest will generate 54 test cases! (3 rubies x 3 paperclip x 2 rails x 3 devise), so it is dead easy to discover hidden compatibility issues!
77
+
78
+ Running `qor_test` will use `rake spec` to run tests in each case for projects using rspec and `rake test` for others. but you could specify the test command by overwrite the environment variable 'COMMAND', e.g:
79
+
80
+ COMMAND='ruby test/xxxx.rb' qor_test
28
81
 
29
82
  ## Contributing
30
83
 
@@ -33,3 +86,7 @@
33
86
  3. Commit your changes (`git commit -am 'Added some feature'`)
34
87
  4. Push to the branch (`git push origin my-new-feature`)
35
88
  5. Create new Pull Request
89
+
90
+ ## Author ##
91
+ **Jinzhu**
92
+ * <http://github.com/jinzhu>
data/bin/qor_test.rb CHANGED
@@ -48,9 +48,13 @@ envs = options[:env] ? [options[:env]] : Qor::Test::Configuration.envs
48
48
  envs = [nil] if envs.size == 0
49
49
 
50
50
  $case_num = 0
51
+
51
52
  scripts = envs.map do |env|
52
- Qor::Test::CLI.new(options.merge(:env => env)).run.scripts
53
+ cli = Qor::Test::CLI.new(options.merge(:env => env))
54
+ cli.run
55
+ cli.scripts
53
56
  end
57
+
54
58
  scripts.unshift "total_cases_num=#{$case_num}"
55
59
 
56
60
  open(ENV['QOR_TEST_SCRIPT_FILE'] || 'qor_test.sh', 'a') do |f|
data/lib/qor_test/cli.rb CHANGED
@@ -26,19 +26,17 @@ module Qor
26
26
  def run
27
27
  rubies.map do |version|
28
28
  scripts << Qor::Test::Rubies.switch_ruby_version(version)
29
- gemfiles.map do |file|
30
- $case_num += 1
31
- scripts << "echo -n '\n\e[01;31m[ENV #{gemfile.group_name}] \e[0m'"
32
- scripts << "echo -n '\e[31mRunning case #{$case_num} with ruby '$(ruby -v)', '$[$total_cases_num-#{$case_num}]' cases left\e[0m\n'"
33
- run_with_gemfile(file)
34
- end
29
+ gemfiles.map { |file| run_with_gemfile(file) }
35
30
  end
36
- self
37
31
  rescue Qor::Dsl::ConfigurationNotFound
38
32
  puts "ConfigurationNotFound, please run `qor_test --init` in project's root to get a sample configuration"
39
33
  end
40
34
 
41
35
  def run_with_gemfile(file)
36
+ $case_num += 1
37
+ scripts << "echo -n '\n\e[01;31m[ENV #{gemfile.group_name}] \e[0m'"
38
+ scripts << "echo -n '\e[31mRunning case #{$case_num} with ruby '$(ruby -v)', '$[$total_cases_num-#{$case_num}]' cases left\e[0m\n'"
39
+
42
40
  lock_file = "#{file}.lock"
43
41
  temp_file = "QorTest_" + File.basename(file)
44
42
  temp_lock = "#{temp_file}.lock"
@@ -51,7 +49,7 @@ module Qor
51
49
  scripts << "echo '>> BUNDLE_GEMFILE=#{file}'"
52
50
  scripts << "export BUNDLE_GEMFILE=#{temp_file}"
53
51
 
54
- # Test commands. 1, bundle install, 2, rake test
52
+ # Test commands
55
53
  [
56
54
  "bundle install --quiet",
57
55
  "#{options[:command]}".sub(/^(bundle\s+exec\s+)?/, 'bundle exec ')
@@ -1,3 +1,4 @@
1
+ require 'qor_dsl'
1
2
  require 'digest/md5'
2
3
 
3
4
  module Qor
@@ -18,7 +19,7 @@ module Qor
18
19
  end
19
20
 
20
21
  def self.config_path
21
- "config/qor/test.rb"
22
+ [ENV['QOR_TEST_CONFIG'], "config/qor/test.rb"].detect {|x| File.exist?(x.to_s)}
22
23
  end
23
24
 
24
25
  def self.gemfile_path
@@ -50,8 +51,9 @@ module Qor
50
51
  end
51
52
 
52
53
  def self.ruby_versions(options)
53
- ruby_versions = [root_from_config, root_from_gemfile].map {|x| x.deep_find('ruby', &find_block(options)) }
54
- ruby_versions.flatten.compact.map(&:value)
54
+ [root_from_config, root_from_gemfile] do |x|
55
+ x.deep_find('ruby', &find_block(options))
56
+ end.flatten.compact.map(&:value)
55
57
  end
56
58
 
57
59
  def self.envs(options={})
@@ -1,5 +1,5 @@
1
1
  module Qor
2
2
  module Test
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
data/lib/qor_test.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'qor_dsl'
2
1
  require 'qor_test/cli'
3
2
  require 'qor_test/configuration'
4
3
  require 'qor_test/gemfile'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qor_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-20 00:00:00.000000000 Z
12
+ date: 2012-12-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: qor_dsl