all_green 0.0.1 → 0.0.2

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
@@ -6,8 +6,10 @@ AllGreen will handle exit codes so it's perfect for using with continuous integr
6
6
 
7
7
  Currently AllGreen will auto-detect :
8
8
 
9
- * RSpec
10
- * Spinach
9
+ * [RSpec](https://github.com/dchelimsky/rspec)
10
+ * [Rails tests](https://github.com/rails/rails)
11
+ * [Cucumber](https://github.com/cucumber/cucumber)
12
+ * [Spinach](https://github.com/codegram/spinach)
11
13
 
12
14
  ## Installation
13
15
 
@@ -31,7 +33,6 @@ Run all tests
31
33
 
32
34
  ## Roadmap
33
35
 
34
- * Add support for popular testing frameworks : Cucumber, MiniTest, Rails unit test
35
36
  * Pass configuration options for each engine
36
37
  * Set tests order
37
38
 
data/all_green.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["kbackowski@gmail.com"]
7
7
  gem.description = %q{Run all your test suites (rspec, cucumber, rails unit tests and more...) using one command}
8
8
  gem.summary = %q{Run all your test suites (rspec, cucumber, rails unit tests and more...) using one command}
9
- gem.homepage = ""
9
+ gem.homepage = 'http://github.com/kbackowski/all_green'
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -14,4 +14,6 @@ Gem::Specification.new do |gem|
14
14
  gem.name = "all_green"
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = AllGreen::VERSION
17
+
18
+ gem.add_runtime_dependency 'colorize'
17
19
  end
data/lib/all_green.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'colorize'
1
2
  require 'all_green/version'
2
3
  require 'all_green/base_engine'
3
4
  require 'all_green/command_line'
@@ -1,28 +1,37 @@
1
1
  module AllGreen
2
2
  class BaseEngine
3
- def self.load
4
- begin
5
- self.load_gem
6
- rescue LoadError
7
- return false
3
+ class << self
4
+ attr_accessor :engine_name
5
+
6
+ def load
7
+ begin
8
+ self.load_gem
9
+ rescue LoadError
10
+ return false
11
+ end
12
+ true
8
13
  end
9
- true
10
- end
11
14
 
12
- def self.run
13
- result = self.run_gem
14
- if result.is_a? Integer
15
- result == 1 ? result = false : result = true
15
+ def run
16
+ log("Running #{@engine_human_name}\n".colorize(:light_green))
17
+ result = run_gem
18
+ if result.is_a? Integer
19
+ result == 1 ? result = false : result = true
20
+ end
21
+ !!result
16
22
  end
17
- !!result
18
- end
19
- end
20
23
 
21
- def self.load_gem
22
- raise 'Not Implemented'
23
- end
24
+ def log(msg)
25
+ puts msg
26
+ end
27
+
28
+ def load_gem
29
+ raise 'Not Implemented'
30
+ end
24
31
 
25
- def self.run_gem
26
- raise 'Not Implemented'
32
+ def run_gem
33
+ raise 'Not Implemented'
34
+ end
35
+ end
27
36
  end
28
37
  end
@@ -0,0 +1,16 @@
1
+ module AllGreen::Engines
2
+ class CucumberEngine < AllGreen::BaseEngine
3
+ @engine_name = :cucumber
4
+ @engine_human_name = 'Cucumber'
5
+
6
+ def self.load_gem
7
+ require 'cucumber'
8
+ end
9
+
10
+ def self.run_gem
11
+ # Cucumber returns true when fails and false when succeed
12
+ !Cucumber::Cli::Main.execute(ARGV)
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,46 @@
1
+ module AllGreen::Engines
2
+ class RailsEngine < AllGreen::BaseEngine
3
+ @engine_name = :rails_tests
4
+ @engine_human_name = 'Rails Tests'
5
+
6
+ def self.load_gem
7
+ require 'rails'
8
+ require 'rake/testtask'
9
+ require 'rails/test_unit/sub_test_task'
10
+ end
11
+
12
+ def self.run_gem
13
+ errors = []
14
+
15
+ Rails::SubTestTask.new(:units) do |t|
16
+ t.libs << 'test'
17
+ t.pattern = 'test/unit/**/*_test.rb'
18
+ end
19
+
20
+ Rails::SubTestTask.new(:functionals) do |t|
21
+ t.libs << 'test'
22
+ t.pattern = 'test/functional/**/*_test.rb'
23
+ end
24
+
25
+ Rails::SubTestTask.new(:integration) do |t|
26
+ t.libs << 'test'
27
+ t.pattern = 'test/integration/**/*_test.rb'
28
+ end
29
+
30
+ %w(units functionals integration).each do |task|
31
+ begin
32
+ Rake::Task[task].invoke
33
+ rescue => e
34
+ errors << { :task => task, :exception => e }
35
+ end
36
+ end
37
+
38
+ if errors.any?
39
+ log errors.map { |e| "Errors running test:#{e[:task]}! #{e[:exception].inspect}" }.join("\n")
40
+ return false
41
+ end
42
+ true
43
+ end
44
+ end
45
+ end
46
+
@@ -1,5 +1,8 @@
1
1
  module AllGreen::Engines
2
2
  class RSpecEngine < AllGreen::BaseEngine
3
+ @engine_name = :rspec
4
+ @engine_human_name = 'RSpec'
5
+
3
6
  def self.load_gem
4
7
  require 'rspec'
5
8
  end
@@ -1,5 +1,8 @@
1
1
  module AllGreen::Engines
2
2
  class SpinachEngine < AllGreen::BaseEngine
3
+ @engine_name = :spinach
4
+ @engine_human_name = 'Spinach'
5
+
3
6
  def self.load_gem
4
7
  require 'spinach'
5
8
  end
@@ -2,9 +2,13 @@ require 'rspec'
2
2
 
3
3
  module AllGreen
4
4
  class Runner
5
- def initialize
5
+ def initialize(options = {})
6
+ @options = options
7
+ @options[:order] ||= [:rspec, :rails_tests, :cucumber, :spinach]
8
+
6
9
  @engines = []
7
10
  load_engines
11
+ sort_engines
8
12
  end
9
13
 
10
14
  def run
@@ -22,5 +26,9 @@ module AllGreen
22
26
  def load_engine(engine)
23
27
  @engines << engine if engine.load
24
28
  end
29
+
30
+ def sort_engines
31
+ @engines.sort_by! { |e| @options[:order].index(e.engine_name) || 99 }
32
+ end
25
33
  end
26
34
  end
@@ -1,3 +1,3 @@
1
1
  module AllGreen
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,6 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- class TestEngine < AllGreen::BaseEngine; end
3
+ class TestEngine < AllGreen::BaseEngine
4
+ @engine_name = :test_engine
5
+ end
4
6
 
5
7
  describe AllGreen::BaseEngine do
6
8
  describe '.load' do
@@ -21,6 +23,10 @@ describe AllGreen::BaseEngine do
21
23
  end
22
24
 
23
25
  describe '.run' do
26
+ before do
27
+ AllGreen::BaseEngine.stub(:log)
28
+ end
29
+
24
30
  it 'should invoke .run_gem' do
25
31
  TestEngine.should_receive(:run_gem)
26
32
  TestEngine.run
data/spec/runner_spec.rb CHANGED
@@ -1,7 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
- class TestEngine1 < AllGreen::BaseEngine; end
4
- class TestEngine2 < AllGreen::BaseEngine; end
3
+ class TestEngine1 < AllGreen::BaseEngine
4
+ @engine_name = :test_engine1
5
+ end
6
+
7
+ class TestEngine2 < AllGreen::BaseEngine
8
+ @engine_name = :test_engine2
9
+ end
5
10
 
6
11
  describe AllGreen::Runner do
7
12
  describe '#run' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: all_green
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,19 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-09 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2012-08-12 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: colorize
16
+ requirement: &15179820 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *15179820
14
25
  description: Run all your test suites (rspec, cucumber, rails unit tests and more...)
15
26
  using one command
16
27
  email:
@@ -31,6 +42,8 @@ files:
31
42
  - lib/all_green.rb
32
43
  - lib/all_green/base_engine.rb
33
44
  - lib/all_green/command_line.rb
45
+ - lib/all_green/engines/cucumber.rb
46
+ - lib/all_green/engines/rails.rb
34
47
  - lib/all_green/engines/rspec.rb
35
48
  - lib/all_green/engines/spinach.rb
36
49
  - lib/all_green/runner.rb
@@ -38,7 +51,7 @@ files:
38
51
  - spec/base_engine_spec.rb
39
52
  - spec/runner_spec.rb
40
53
  - spec/spec_helper.rb
41
- homepage: ''
54
+ homepage: http://github.com/kbackowski/all_green
42
55
  licenses: []
43
56
  post_install_message:
44
57
  rdoc_options: []
@@ -50,21 +63,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
63
  - - ! '>='
51
64
  - !ruby/object:Gem::Version
52
65
  version: '0'
53
- segments:
54
- - 0
55
- hash: -232015811990800181
56
66
  required_rubygems_version: !ruby/object:Gem::Requirement
57
67
  none: false
58
68
  requirements:
59
69
  - - ! '>='
60
70
  - !ruby/object:Gem::Version
61
71
  version: '0'
62
- segments:
63
- - 0
64
- hash: -232015811990800181
65
72
  requirements: []
66
73
  rubyforge_project:
67
- rubygems_version: 1.8.21
74
+ rubygems_version: 1.8.15
68
75
  signing_key:
69
76
  specification_version: 3
70
77
  summary: Run all your test suites (rspec, cucumber, rails unit tests and more...)