all_green 0.0.1 → 0.0.2

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