qor_test 0.0.5 → 0.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.
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## Usage
10
10
 
11
- First write a configuration file like below:
11
+ QorTest require a configuration file to know those dependencies and rubies need to be tested, For example:
12
12
 
13
13
  # config/qor/test.rb
14
14
  env '2.0' do
@@ -27,24 +27,24 @@
27
27
  gem 'rails', [3.1, 3.2]
28
28
  end
29
29
 
30
- Then QorTest will generate 6 test cases according to it.
30
+ With above configuration, QorTest could generate 6 test cases.
31
31
 
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
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
38
38
 
39
- Then run all above 6 cases in your project root by running
39
+ To run "tests" of above 6 cases, you could run `qor_test` in your project root:
40
40
 
41
41
  qor_test
42
42
 
43
- Or only run those two cases in the '2.0' env by running
43
+ Or run those two cases in env '2.0' only by running
44
44
 
45
45
  qor_test -e '2.0'
46
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!
47
+ All dependencies definitions outside env definition will be shared in all envs, so you could simplify above configuration like below, it's the same!
48
48
 
49
49
  # config/qor/test.rb
50
50
  gem 'rails', [3.1, 3.2]
@@ -62,7 +62,7 @@
62
62
  gem 'factory_girl_rails', '1.3.0'
63
63
  end
64
64
 
65
- And you could write more advanced configuration:
65
+ Or you can write more advanced configuration:
66
66
 
67
67
  # config/qor/test.rb
68
68
  ruby '2.0'
@@ -73,9 +73,10 @@
73
73
  gem 'rails', [3.1, 3.2]
74
74
  gem 'devise', [2.2.0, 2.1.0, 2.0.0]
75
75
 
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!
76
+ With it, QorTest will generate 54 test cases! (3 rubies x 3 paperclip x 2 rails x 3 devise), is it dead easy to discover hidden compatibility issues?
77
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:
78
+
79
+ Running `qor_test` will use command `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
 
80
81
  COMMAND='ruby test/xxxx.rb' qor_test
81
82
 
@@ -88,5 +89,6 @@
88
89
  5. Create new Pull Request
89
90
 
90
91
  ## Author ##
91
- **Jinzhu**
92
- * <http://github.com/jinzhu>
92
+ Jinzhu <http://github.com/jinzhu>
93
+
94
+ * A Product From ThePlant <http://theplant.jp>
data/lib/qor_test/gem.rb CHANGED
@@ -1,29 +1,28 @@
1
1
  module Qor
2
2
  module Test
3
3
  class Gem
4
- attr_accessor :name, :options, :gem_option
4
+ attr_accessor :name, :options
5
5
 
6
6
  def initialize(node, gem_option=nil)
7
7
  self.name = node.name.to_s
8
- self.gem_option = gem_option
8
+ self.options = gem_option.is_a?(Array) ? gem_option : [gem_option]
9
9
 
10
10
  [:git, :path, :platforms].map do |type|
11
11
  if node.parent.is_node?(type)
12
- self.options = {type => node.parent.value}.merge(node.parent.options)
12
+ parent_option = {type => node.parent.value}.merge(node.parent.options)
13
+ if options[-1].is_a?(Hash)
14
+ self.options[-1] = parent_option.merge(options[-1])
15
+ else
16
+ self.options.push(parent_option)
17
+ end
13
18
  end
14
19
  end
15
20
  end
16
21
 
17
22
  def to_s
18
- if gem_option.is_a?(Array) && gem_option.length > 0
19
- %{gem "#{name}", #{gem_option.map(&:inspect).join(", ")}}
20
- elsif !gem_option.nil? && !gem_option.is_a?(Array)
21
- %{gem "#{name}", #{gem_option.inspect}}
22
- elsif options.is_a?(Hash)
23
- %{gem "#{name}", #{options.inspect}}
24
- else
25
- %{gem "#{name}"}
26
- end
23
+ result = %{gem "#{name}"}
24
+ result += %{, #{options.map(&:inspect).join(", ")}} if options.length > 0
25
+ result
27
26
  end
28
27
 
29
28
  def self.parse(node)
@@ -35,17 +35,19 @@ module Qor
35
35
  end
36
36
  end
37
37
 
38
- def write_gemfile(gems_from_config, gems_from_gemfile, filename)
38
+ def generate_gems_entry(gems_from_config, gems_from_gemfile)
39
39
  gem_names = [gems_from_config.keys, gems_from_gemfile.keys].flatten.compact.uniq
40
40
 
41
- gems = gem_names.map do |name|
41
+ gem_names.map do |name|
42
42
  gems_from_config[name] || gems_from_gemfile[name]
43
- end.compact
43
+ end.compact.map(&:to_s).join("\n")
44
+ end
44
45
 
46
+ def write_gemfile(gems_from_config, gems_from_gemfile, filename)
45
47
  File.open(filename, "w+") do |f|
46
48
  f << Qor::Test::Configuration.combined_sources(options)
47
49
  f << Qor::Test::Configuration.combined_gemspecs(options)
48
- f << gems.map(&:to_s).join("\n")
50
+ f << generate_gems_entry(gems_from_config, gems_from_gemfile)
49
51
  end.path
50
52
  end
51
53
  end
@@ -1,5 +1,5 @@
1
1
  module Qor
2
2
  module Test
3
- VERSION = "0.0.5"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
data/test/gem_test.rb ADDED
@@ -0,0 +1,98 @@
1
+ require 'minitest/autorun'
2
+ require 'qor_test'
3
+
4
+ describe Gem do
5
+ it "gem to string" do
6
+ # case 1
7
+ config = Qor::Test::Configuration.load(nil, :force => true) do
8
+ gem "rails", "3.1"
9
+ end
10
+
11
+ Qor::Test::Gem.parse(config.first("gem")).length.must_equal 1
12
+ Qor::Test::Gem.parse(config.first("gem"))[0].to_s.must_equal 'gem "rails", "3.1"'
13
+
14
+ # case 2
15
+ config = Qor::Test::Configuration.load(nil, :force => true) do
16
+ gem "rails", ["3.1", "3.2"]
17
+ end
18
+
19
+ Qor::Test::Gem.parse(config.first("gem")).length.must_equal 2
20
+ Qor::Test::Gem.parse(config.first("gem"))[0].to_s.must_equal 'gem "rails", "3.1"'
21
+ Qor::Test::Gem.parse(config.first("gem"))[1].to_s.must_equal 'gem "rails", "3.2"'
22
+
23
+ # case 3
24
+ config = Qor::Test::Configuration.load(nil, :force => true) do
25
+ gem 'nokogiri', [{:git => "git://github.com/tenderlove/nokogiri.git", :branch => "1.4"}, {:git => "git://github.com/tenderlove/nokogiri.git"}]
26
+ end
27
+
28
+ Qor::Test::Gem.parse(config.first("gem")).length.must_equal 2
29
+ Qor::Test::Gem.parse(config.first("gem"))[0].to_s.must_equal 'gem "nokogiri", {:git=>"git://github.com/tenderlove/nokogiri.git", :branch=>"1.4"}'
30
+ Qor::Test::Gem.parse(config.first("gem"))[1].to_s.must_equal 'gem "nokogiri", {:git=>"git://github.com/tenderlove/nokogiri.git"}'
31
+
32
+ # case 4
33
+ config = Qor::Test::Configuration.load(nil, :force => true) do
34
+ gem 'nokogiri', :git => "git://github.com/tenderlove/nokogiri.git", :branch => "1.4"
35
+ end
36
+
37
+ Qor::Test::Gem.parse(config.first("gem")).length.must_equal 1
38
+ Qor::Test::Gem.parse(config.first("gem"))[0].to_s.must_equal 'gem "nokogiri", {:git=>"git://github.com/tenderlove/nokogiri.git", :branch=>"1.4"}'
39
+
40
+ # case 5
41
+ config = Qor::Test::Configuration.load(nil, :force => true) do
42
+ gem 'RedCloth', ">= 4.1.0", "< 4.2.0"
43
+ end
44
+
45
+ Qor::Test::Gem.parse(config.first("gem")).length.must_equal 1
46
+ Qor::Test::Gem.parse(config.first("gem"))[0].to_s.must_equal 'gem "RedCloth", ">= 4.1.0", "< 4.2.0"'
47
+
48
+ # case 6
49
+ config = Qor::Test::Configuration.load(nil, :force => true) do
50
+ git "git://github.com/tenderlove/nokogiri.git" do
51
+ gem 'nokogiri', '1.4'
52
+ end
53
+ end
54
+
55
+ Qor::Test::Gem.parse(config.deep_find("gem")[0]).length.must_equal 1
56
+ Qor::Test::Gem.parse(config.deep_find("gem")[0])[0].to_s.must_equal 'gem "nokogiri", "1.4", {:git=>"git://github.com/tenderlove/nokogiri.git"}'
57
+
58
+ # case 7
59
+ config = Qor::Test::Configuration.load(nil, :force => true) do
60
+ git "git://github.com/tenderlove/nokogiri.git" do
61
+ gem 'nokogiri', :branch => '1.4'
62
+ end
63
+ end
64
+
65
+ Qor::Test::Gem.parse(config.deep_find("gem")[0]).length.must_equal 1
66
+ Qor::Test::Gem.parse(config.deep_find("gem")[0])[0].to_s.must_equal 'gem "nokogiri", {:git=>"git://github.com/tenderlove/nokogiri.git", :branch=>"1.4"}'
67
+
68
+ # case 8
69
+ config = Qor::Test::Configuration.load(nil, :force => true) do
70
+ gem "rails"
71
+ end
72
+
73
+ Qor::Test::Gem.parse(config.first("gem")).length.must_equal 1
74
+ Qor::Test::Gem.parse(config.first("gem"))[0].to_s.must_equal 'gem "rails"'
75
+
76
+ # case 9
77
+ config = Qor::Test::Configuration.load(nil, :force => true) do
78
+ git "git://github.com/tenderlove/nokogiri.git" do
79
+ gem 'nokogiri', ['1.4', '2.0']
80
+ end
81
+ end
82
+
83
+ Qor::Test::Gem.parse(config.deep_find("gem")[0]).length.must_equal 2
84
+ Qor::Test::Gem.parse(config.deep_find("gem")[0])[0].to_s.must_equal 'gem "nokogiri", "1.4", {:git=>"git://github.com/tenderlove/nokogiri.git"}'
85
+ Qor::Test::Gem.parse(config.deep_find("gem")[0])[1].to_s.must_equal 'gem "nokogiri", "2.0", {:git=>"git://github.com/tenderlove/nokogiri.git"}'
86
+
87
+ # case 10
88
+ config = Qor::Test::Configuration.load(nil, :force => true) do
89
+ git "git://github.com/tenderlove/nokogiri.git" do
90
+ gem 'nokogiri', [{:branch => '1.4'}, {:branch => '2.0'}]
91
+ end
92
+ end
93
+
94
+ Qor::Test::Gem.parse(config.deep_find("gem")[0]).length.must_equal 2
95
+ Qor::Test::Gem.parse(config.deep_find("gem")[0])[0].to_s.must_equal 'gem "nokogiri", {:git=>"git://github.com/tenderlove/nokogiri.git", :branch=>"1.4"}'
96
+ Qor::Test::Gem.parse(config.deep_find("gem")[0])[1].to_s.must_equal 'gem "nokogiri", {:git=>"git://github.com/tenderlove/nokogiri.git", :branch=>"2.0"}'
97
+ end
98
+ end
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.5
4
+ version: 0.1.0
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-25 00:00:00.000000000 Z
12
+ date: 2012-12-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: qor_dsl
@@ -54,6 +54,7 @@ files:
54
54
  - lib/qor_test/rubies.rb
55
55
  - lib/qor_test/version.rb
56
56
  - qor_test.gemspec
57
+ - test/gem_test.rb
57
58
  homepage: ''
58
59
  licenses: []
59
60
  post_install_message:
@@ -78,5 +79,6 @@ rubygems_version: 1.8.24
78
79
  signing_key:
79
80
  specification_version: 3
80
81
  summary: ! 'Qor Test: Make test easier!'
81
- test_files: []
82
+ test_files:
83
+ - test/gem_test.rb
82
84
  has_rdoc: