infinity_test 0.2.0 → 1.0.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/.gitignore +3 -0
- data/.infinity_test +30 -2
- data/.rspec +2 -0
- data/.rvmrc +1 -1
- data/Gemfile +10 -2
- data/Gemfile.lock +52 -12
- data/History.markdown +86 -2
- data/LICENSE.txt +22 -0
- data/Rakefile +25 -9
- data/Readme.markdown +47 -23
- data/TODO.markdown +12 -0
- data/Tasks +2 -3
- data/VERSION.yml +2 -2
- data/bin/infinity_test +1 -1
- data/features/heuristics.feature +23 -0
- data/features/support/env.rb +2 -0
- data/images/fuuu/failure.png +0 -0
- data/images/fuuu/pending.png +0 -0
- data/images/fuuu/sucess.png +0 -0
- data/infinity_test.gemspec +62 -29
- data/lib/infinity_test.rb +29 -9
- data/lib/infinity_test/application.rb +222 -68
- data/lib/infinity_test/application_library/rails.rb +94 -0
- data/lib/infinity_test/application_library/rubygems.rb +43 -0
- data/lib/infinity_test/binary_path.rb +30 -8
- data/lib/infinity_test/builder.rb +56 -0
- data/lib/infinity_test/command.rb +18 -24
- data/lib/infinity_test/configuration.rb +96 -44
- data/lib/infinity_test/continuous_testing.rb +17 -39
- data/lib/infinity_test/dependencies.rb +76 -41
- data/lib/infinity_test/environment.rb +15 -0
- data/lib/infinity_test/heuristics.rb +36 -0
- data/lib/infinity_test/heuristics_helper.rb +9 -0
- data/lib/infinity_test/options.rb +56 -19
- data/lib/infinity_test/runner.rb +25 -17
- data/lib/infinity_test/test_framework.rb +109 -0
- data/lib/infinity_test/test_library/bacon.rb +55 -0
- data/lib/infinity_test/test_library/cucumber.rb +22 -0
- data/lib/infinity_test/test_library/rspec.rb +58 -0
- data/lib/infinity_test/test_library/test_unit.rb +46 -0
- data/spec/factories/company/Gemfile +0 -0
- data/spec/factories/infinity_test_example +2 -2
- data/spec/infinity_test/application_library/rails_spec.rb +140 -0
- data/spec/infinity_test/application_library/rubygems_spec.rb +52 -0
- data/spec/infinity_test/application_spec.rb +274 -50
- data/spec/infinity_test/binary_path_spec.rb +72 -0
- data/spec/infinity_test/builder_spec.rb +7 -0
- data/spec/infinity_test/command_spec.rb +13 -14
- data/spec/infinity_test/configuration_spec.rb +183 -57
- data/spec/infinity_test/continuous_testing_spec.rb +19 -1
- data/spec/infinity_test/environment_spec.rb +23 -0
- data/spec/infinity_test/heuristics_helper_spec.rb +15 -0
- data/spec/infinity_test/heuristics_spec.rb +127 -0
- data/spec/infinity_test/options_spec.rb +48 -26
- data/spec/infinity_test/runner_spec.rb +37 -29
- data/spec/infinity_test/test_framework_spec.rb +127 -0
- data/spec/infinity_test/test_library/bacon_spec.rb +150 -0
- data/spec/infinity_test/test_library/cucumber_spec.rb +8 -0
- data/spec/infinity_test/test_library/rspec_spec.rb +185 -0
- data/spec/infinity_test/test_library/test_unit_spec.rb +184 -0
- data/spec/infinity_test_spec.rb +23 -12
- data/spec/spec_helper.rb +86 -30
- metadata +62 -32
- data/lib/infinity_test/notifications/growl.rb +0 -15
- data/lib/infinity_test/notifications/lib_notify.rb +0 -11
- data/lib/infinity_test/rspec.rb +0 -87
- data/lib/infinity_test/test_unit.rb +0 -74
- data/spec/infinity_test/notifications/growl_spec.rb +0 -9
- data/spec/infinity_test/notifications/lib_notify_spec.rb +0 -9
- data/spec/infinity_test/rspec_spec.rb +0 -189
- data/spec/infinity_test/test_unit_spec.rb +0 -182
- data/spec/spec.opts +0 -1
data/TODO.markdown
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
Future
|
2
|
+
======
|
3
|
+
|
4
|
+
- Support Rails apps
|
5
|
+
- Support Cucumber
|
6
|
+
- Make Infinity Test support Rubinius (I tried to run without success - Investigate this!)
|
7
|
+
- Run with failed tests (Focus mode!!)
|
8
|
+
|
9
|
+
Bugs
|
10
|
+
====
|
11
|
+
|
12
|
+
- Coloring the output (maybe using RedGreen)
|
data/Tasks
CHANGED
data/VERSION.yml
CHANGED
data/bin/infinity_test
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
Feature: Infinity test Heuristics
|
2
|
+
In order to add or remove the paths to monitoring
|
3
|
+
As a user
|
4
|
+
I want to add/remove my own patterns to monitoring changes
|
5
|
+
|
6
|
+
Scenario: Show the default patterns to RubyGems
|
7
|
+
When I run "ruby ../../bin/infinity_test --heuristics --rubygems --rspec"
|
8
|
+
Then the output should contain:
|
9
|
+
"""
|
10
|
+
- "^lib/*/(.*).rb"
|
11
|
+
- "^spec/*/(.*)_spec.rb"
|
12
|
+
- "^spec/*/spec_helper.rb"
|
13
|
+
"""
|
14
|
+
|
15
|
+
Scenario: Show the default patterns to RubyGems
|
16
|
+
When I run "ruby ../../bin/infinity_test --heuristics --rubygems --test-unit"
|
17
|
+
Then the output should contain:
|
18
|
+
"""
|
19
|
+
- "^lib/*/(.*).rb"
|
20
|
+
- "^test/*/(.*)_test.rb"
|
21
|
+
- "^test/*/test_helper.rb"
|
22
|
+
"""
|
23
|
+
|
Binary file
|
Binary file
|
Binary file
|
data/infinity_test.gemspec
CHANGED
@@ -5,15 +5,18 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{infinity_test}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "1.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tomas D'Stefano"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-11-16}
|
13
13
|
s.default_executable = %q{infinity_test}
|
14
|
-
s.description = %q{Infinity Test is a continuous testing library and a flexible alternative to Autotest, using Watchr library with Rspec
|
14
|
+
s.description = %q{Infinity Test is a continuous testing library and a flexible alternative to Autotest, using Watchr library with Rspec, Test::Unit or Bacon with RVM funcionality, giving the possibility to test with all Rubies that you have in your RVM configuration.}
|
15
15
|
s.email = %q{tomasdestefi@gmail.com}
|
16
16
|
s.executables = ["infinity_test"]
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"LICENSE.txt"
|
19
|
+
]
|
17
20
|
s.files = [
|
18
21
|
".gitignore",
|
19
22
|
".infinity_test",
|
@@ -22,17 +25,24 @@ Gem::Specification.new do |s|
|
|
22
25
|
"Gemfile",
|
23
26
|
"Gemfile.lock",
|
24
27
|
"History.markdown",
|
28
|
+
"LICENSE.txt",
|
25
29
|
"Rakefile",
|
26
30
|
"Readme.markdown",
|
31
|
+
"TODO.markdown",
|
27
32
|
"Tasks",
|
28
33
|
"VERSION.yml",
|
29
34
|
"bin/infinity_test",
|
30
35
|
"buzz_images/buzz_lightyear.jpg",
|
31
36
|
"buzz_images/buzz_lightyear_continencia.gif",
|
32
37
|
"buzz_images/to_infinity_and_beyond.png",
|
38
|
+
"features/heuristics.feature",
|
39
|
+
"features/support/env.rb",
|
33
40
|
"images/faces/failure.png",
|
34
41
|
"images/faces/pending.png",
|
35
42
|
"images/faces/sucess.png",
|
43
|
+
"images/fuuu/failure.png",
|
44
|
+
"images/fuuu/pending.png",
|
45
|
+
"images/fuuu/sucess.png",
|
36
46
|
"images/hands/failure.png",
|
37
47
|
"images/hands/pending.png",
|
38
48
|
"images/hands/sucess.png",
|
@@ -57,20 +67,28 @@ Gem::Specification.new do |s|
|
|
57
67
|
"infinity_test.gemspec",
|
58
68
|
"lib/infinity_test.rb",
|
59
69
|
"lib/infinity_test/application.rb",
|
70
|
+
"lib/infinity_test/application_library/rails.rb",
|
71
|
+
"lib/infinity_test/application_library/rubygems.rb",
|
60
72
|
"lib/infinity_test/binary_path.rb",
|
73
|
+
"lib/infinity_test/builder.rb",
|
61
74
|
"lib/infinity_test/command.rb",
|
62
75
|
"lib/infinity_test/configuration.rb",
|
63
76
|
"lib/infinity_test/continuous_testing.rb",
|
64
77
|
"lib/infinity_test/dependencies.rb",
|
65
|
-
"lib/infinity_test/
|
66
|
-
"lib/infinity_test/
|
78
|
+
"lib/infinity_test/environment.rb",
|
79
|
+
"lib/infinity_test/heuristics.rb",
|
80
|
+
"lib/infinity_test/heuristics_helper.rb",
|
67
81
|
"lib/infinity_test/options.rb",
|
68
|
-
"lib/infinity_test/rspec.rb",
|
69
82
|
"lib/infinity_test/runner.rb",
|
70
|
-
"lib/infinity_test/
|
83
|
+
"lib/infinity_test/test_framework.rb",
|
84
|
+
"lib/infinity_test/test_library/bacon.rb",
|
85
|
+
"lib/infinity_test/test_library/cucumber.rb",
|
86
|
+
"lib/infinity_test/test_library/rspec.rb",
|
87
|
+
"lib/infinity_test/test_library/test_unit.rb",
|
71
88
|
"lib/infinity_test/test_unit_loader.rb",
|
72
89
|
"spec/factories/buzz/lib/buzz.rb",
|
73
90
|
"spec/factories/buzz/spec/buzz_spec.rb",
|
91
|
+
"spec/factories/company/Gemfile",
|
74
92
|
"spec/factories/company/lib/company.rb",
|
75
93
|
"spec/factories/company/test/company_test.rb",
|
76
94
|
"spec/factories/images/failure.png",
|
@@ -84,18 +102,25 @@ Gem::Specification.new do |s|
|
|
84
102
|
"spec/factories/travel/test/travel_test.rb",
|
85
103
|
"spec/factories/wood/lib/wood.rb",
|
86
104
|
"spec/factories/wood/spec/wood_spec.rb",
|
105
|
+
"spec/infinity_test/application_library/rails_spec.rb",
|
106
|
+
"spec/infinity_test/application_library/rubygems_spec.rb",
|
87
107
|
"spec/infinity_test/application_spec.rb",
|
108
|
+
"spec/infinity_test/binary_path_spec.rb",
|
109
|
+
"spec/infinity_test/builder_spec.rb",
|
88
110
|
"spec/infinity_test/command_spec.rb",
|
89
111
|
"spec/infinity_test/configuration_spec.rb",
|
90
112
|
"spec/infinity_test/continuous_testing_spec.rb",
|
91
|
-
"spec/infinity_test/
|
92
|
-
"spec/infinity_test/
|
113
|
+
"spec/infinity_test/environment_spec.rb",
|
114
|
+
"spec/infinity_test/heuristics_helper_spec.rb",
|
115
|
+
"spec/infinity_test/heuristics_spec.rb",
|
93
116
|
"spec/infinity_test/options_spec.rb",
|
94
|
-
"spec/infinity_test/rspec_spec.rb",
|
95
117
|
"spec/infinity_test/runner_spec.rb",
|
96
|
-
"spec/infinity_test/
|
118
|
+
"spec/infinity_test/test_framework_spec.rb",
|
119
|
+
"spec/infinity_test/test_library/bacon_spec.rb",
|
120
|
+
"spec/infinity_test/test_library/cucumber_spec.rb",
|
121
|
+
"spec/infinity_test/test_library/rspec_spec.rb",
|
122
|
+
"spec/infinity_test/test_library/test_unit_spec.rb",
|
97
123
|
"spec/infinity_test_spec.rb",
|
98
|
-
"spec/spec.opts",
|
99
124
|
"spec/spec_helper.rb"
|
100
125
|
]
|
101
126
|
s.homepage = %q{http://github.com/tomas-stefano/infinity_test}
|
@@ -103,17 +128,17 @@ Gem::Specification.new do |s|
|
|
103
128
|
--------------------------------------------------------------------------------
|
104
129
|
T O I N F I N I T Y A N D B E Y O N D !!!
|
105
130
|
|
106
|
-
The Infinity uses the awesome RVM to run.
|
131
|
+
The Infinity uses the awesome RVM to run.
|
107
132
|
If you don't have the RVM installed, stop what you doing =p.
|
108
133
|
RVM Installation Instructions:
|
109
|
-
http://rvm.beginrescueend.com/rvm/install/
|
110
|
-
And don't forget to see how you can customize Infinity Test here:
|
134
|
+
http://rvm.beginrescueend.com/rvm/install/
|
135
|
+
And don't forget to see how you can customize Infinity Test here:
|
111
136
|
http://github.com/tomas-stefano/infinity_test/wiki/Customize-Infinity-Test
|
112
137
|
|
113
138
|
Happy Coding! :)
|
114
139
|
|
115
140
|
--------------------------------------------------------------------------------
|
116
|
-
|
141
|
+
|
117
142
|
}
|
118
143
|
s.rdoc_options = ["--charset=UTF-8"]
|
119
144
|
s.require_paths = ["lib"]
|
@@ -130,16 +155,24 @@ Gem::Specification.new do |s|
|
|
130
155
|
"spec/factories/travel/test/travel_test.rb",
|
131
156
|
"spec/factories/wood/lib/wood.rb",
|
132
157
|
"spec/factories/wood/spec/wood_spec.rb",
|
158
|
+
"spec/infinity_test/application_library/rails_spec.rb",
|
159
|
+
"spec/infinity_test/application_library/rubygems_spec.rb",
|
133
160
|
"spec/infinity_test/application_spec.rb",
|
161
|
+
"spec/infinity_test/binary_path_spec.rb",
|
162
|
+
"spec/infinity_test/builder_spec.rb",
|
134
163
|
"spec/infinity_test/command_spec.rb",
|
135
164
|
"spec/infinity_test/configuration_spec.rb",
|
136
165
|
"spec/infinity_test/continuous_testing_spec.rb",
|
137
|
-
"spec/infinity_test/
|
138
|
-
"spec/infinity_test/
|
166
|
+
"spec/infinity_test/environment_spec.rb",
|
167
|
+
"spec/infinity_test/heuristics_helper_spec.rb",
|
168
|
+
"spec/infinity_test/heuristics_spec.rb",
|
139
169
|
"spec/infinity_test/options_spec.rb",
|
140
|
-
"spec/infinity_test/rspec_spec.rb",
|
141
170
|
"spec/infinity_test/runner_spec.rb",
|
142
|
-
"spec/infinity_test/
|
171
|
+
"spec/infinity_test/test_framework_spec.rb",
|
172
|
+
"spec/infinity_test/test_library/bacon_spec.rb",
|
173
|
+
"spec/infinity_test/test_library/cucumber_spec.rb",
|
174
|
+
"spec/infinity_test/test_library/rspec_spec.rb",
|
175
|
+
"spec/infinity_test/test_library/test_unit_spec.rb",
|
143
176
|
"spec/infinity_test_spec.rb",
|
144
177
|
"spec/spec_helper.rb"
|
145
178
|
]
|
@@ -150,20 +183,20 @@ Gem::Specification.new do |s|
|
|
150
183
|
|
151
184
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
152
185
|
s.add_runtime_dependency(%q<watchr>, [">= 0.7"])
|
153
|
-
s.
|
154
|
-
s.add_development_dependency(%q<
|
155
|
-
s.add_development_dependency(%q<
|
186
|
+
s.add_runtime_dependency(%q<notifiers>, [">= 1.1.0"])
|
187
|
+
s.add_development_dependency(%q<rspec>, [">= 2.0.1"])
|
188
|
+
s.add_development_dependency(%q<jeweler>, [">= 1.4.0"])
|
156
189
|
else
|
157
190
|
s.add_dependency(%q<watchr>, [">= 0.7"])
|
158
|
-
s.add_dependency(%q<
|
159
|
-
s.add_dependency(%q<
|
160
|
-
s.add_dependency(%q<
|
191
|
+
s.add_dependency(%q<notifiers>, [">= 1.1.0"])
|
192
|
+
s.add_dependency(%q<rspec>, [">= 2.0.1"])
|
193
|
+
s.add_dependency(%q<jeweler>, [">= 1.4.0"])
|
161
194
|
end
|
162
195
|
else
|
163
196
|
s.add_dependency(%q<watchr>, [">= 0.7"])
|
164
|
-
s.add_dependency(%q<
|
165
|
-
s.add_dependency(%q<
|
166
|
-
s.add_dependency(%q<
|
197
|
+
s.add_dependency(%q<notifiers>, [">= 1.1.0"])
|
198
|
+
s.add_dependency(%q<rspec>, [">= 2.0.1"])
|
199
|
+
s.add_dependency(%q<jeweler>, [">= 1.4.0"])
|
167
200
|
end
|
168
201
|
end
|
169
202
|
|
data/lib/infinity_test.rb
CHANGED
@@ -1,31 +1,51 @@
|
|
1
1
|
require 'infinity_test/dependencies'
|
2
2
|
|
3
3
|
module InfinityTest
|
4
|
+
|
4
5
|
autoload :Application, 'infinity_test/application'
|
5
6
|
autoload :BinaryPath, 'infinity_test/binary_path'
|
7
|
+
autoload :Builder, 'infinity_test/builder'
|
6
8
|
autoload :Command, 'infinity_test/command'
|
7
9
|
autoload :Configuration, 'infinity_test/configuration'
|
8
10
|
autoload :ContinuousTesting, 'infinity_test/continuous_testing'
|
11
|
+
autoload :Environment, 'infinity_test/environment'
|
12
|
+
autoload :Heuristics, 'infinity_test/heuristics'
|
13
|
+
autoload :HeuristicsHelper, 'infinity_test/heuristics_helper'
|
9
14
|
autoload :Options, 'infinity_test/options'
|
10
|
-
autoload :Rspec, 'infinity_test/rspec'
|
11
15
|
autoload :Runner, 'infinity_test/runner'
|
12
|
-
autoload :
|
16
|
+
autoload :TestFramework, 'infinity_test/test_framework'
|
17
|
+
|
18
|
+
module ApplicationLibrary
|
19
|
+
autoload :Rails , 'infinity_test/application_library/rails'
|
20
|
+
autoload :RubyGems, 'infinity_test/application_library/rubygems'
|
21
|
+
end
|
22
|
+
|
23
|
+
module TestLibrary
|
24
|
+
autoload :Bacon, 'infinity_test/test_library/bacon'
|
25
|
+
autoload :Cucumber, 'infinity_test/test_library/cucumber'
|
26
|
+
autoload :Rspec, 'infinity_test/test_library/rspec'
|
27
|
+
autoload :TestUnit, 'infinity_test/test_library/test_unit'
|
28
|
+
end
|
13
29
|
|
14
30
|
def self.application
|
15
31
|
@application ||= Application.new
|
16
32
|
end
|
17
|
-
|
33
|
+
|
18
34
|
def self.configuration
|
19
35
|
@configuration ||= Configuration.new
|
20
36
|
end
|
21
|
-
|
37
|
+
|
38
|
+
def self.watchr
|
39
|
+
@watchr ||= Watchr::Script.new
|
40
|
+
end
|
41
|
+
|
22
42
|
def self.start!
|
23
|
-
Runner.new(
|
43
|
+
Runner.new(ARGV).run!
|
24
44
|
end
|
25
45
|
|
26
|
-
|
27
|
-
|
28
|
-
|
46
|
+
def self.version
|
47
|
+
version = YAML.load_file(File.dirname(__FILE__) + '/../VERSION.yml')
|
48
|
+
[version[:major], version[:minor], version[:patch]].compact.join(".")
|
29
49
|
end
|
30
50
|
|
31
|
-
end
|
51
|
+
end
|
@@ -1,23 +1,33 @@
|
|
1
1
|
module InfinityTest
|
2
2
|
class Application
|
3
|
-
include
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
include InfinityTest::TestLibrary
|
4
|
+
include InfinityTest::ApplicationLibrary
|
5
|
+
include Notifiers
|
6
|
+
|
7
|
+
attr_accessor :config, :watchr, :global_commands
|
8
|
+
|
9
|
+
# Initialize the Application object with the configuration instance to
|
8
10
|
# load configuration and set properly
|
9
11
|
#
|
10
12
|
def initialize
|
11
13
|
@config = InfinityTest.configuration
|
12
|
-
@
|
14
|
+
@watchr = InfinityTest.watchr
|
15
|
+
end
|
16
|
+
|
17
|
+
def load_configuration_file_or_read_the_options!(options)
|
18
|
+
load_configuration_file
|
19
|
+
setup!(options)
|
13
20
|
end
|
14
|
-
|
21
|
+
|
15
22
|
# Load the Configuration file
|
16
23
|
#
|
17
|
-
#
|
18
|
-
#
|
24
|
+
# Command line options can be persisted in a .infinity_test file in a project.
|
25
|
+
# You can also store a .infinity_test file in your home directory (~/.infinity_test) with global options.
|
19
26
|
#
|
20
|
-
#
|
27
|
+
# Precedence is:
|
28
|
+
# command line
|
29
|
+
# ./.infinity_test
|
30
|
+
# ~/.infinity_test
|
21
31
|
#
|
22
32
|
# Example:
|
23
33
|
#
|
@@ -31,89 +41,193 @@ module InfinityTest
|
|
31
41
|
load_global_configuration # Separate global and local configuration
|
32
42
|
load_project_configuration # because it's more easy to test
|
33
43
|
end
|
34
|
-
|
44
|
+
|
45
|
+
# Setup over a precendence show below.
|
46
|
+
#
|
47
|
+
# THIS IS NOT RESPONSABILITY OF Application instances!!!
|
48
|
+
#
|
49
|
+
def setup!(options)
|
50
|
+
config.use(
|
51
|
+
:rubies => (options[:rubies] || rubies),
|
52
|
+
:test_framework => (options[:test_framework] || config.test_framework),
|
53
|
+
:app_framework => (options[:app_framework] || config.app_framework),
|
54
|
+
:cucumber => options[:cucumber],
|
55
|
+
:verbose => options[:verbose] || config.verbose)
|
56
|
+
config.skip_bundler! if options[:skip_bundler?]
|
57
|
+
add_heuristics!
|
58
|
+
heuristics_users_high_priority!
|
59
|
+
end
|
60
|
+
|
61
|
+
# Run the global commands
|
62
|
+
#
|
63
|
+
def run_global_commands!
|
64
|
+
run!(global_commands)
|
65
|
+
end
|
66
|
+
|
67
|
+
# Construct the Global Commands and cache for all suite
|
68
|
+
#
|
69
|
+
def global_commands
|
70
|
+
@global_commands ||= construct_commands
|
71
|
+
end
|
72
|
+
|
73
|
+
# Return the sucess image to show in the notifications
|
74
|
+
#
|
35
75
|
def sucess_image
|
36
76
|
config.sucess_image
|
37
77
|
end
|
38
|
-
|
78
|
+
|
79
|
+
# Return the failure image to show in the notifications
|
80
|
+
#
|
39
81
|
def failure_image
|
40
82
|
config.failure_image
|
41
83
|
end
|
42
|
-
|
84
|
+
|
85
|
+
# Return the pending image to show in the notifications
|
86
|
+
#
|
43
87
|
def pending_image
|
44
88
|
config.pending_image
|
45
89
|
end
|
46
|
-
|
90
|
+
|
47
91
|
# Return the block object setting in the config file
|
48
|
-
#
|
92
|
+
#
|
49
93
|
def before_callback
|
50
94
|
config.before_callback
|
51
95
|
end
|
52
|
-
|
96
|
+
|
53
97
|
# Return the block object setting in the config file
|
54
98
|
#
|
55
99
|
def after_callback
|
56
100
|
config.after_callback
|
57
101
|
end
|
58
|
-
|
102
|
+
|
103
|
+
# Return the block object setting in the before(:each_ruby) block
|
104
|
+
#
|
59
105
|
def before_each_ruby_callback
|
60
106
|
config.before_each_ruby_callback
|
61
107
|
end
|
62
|
-
|
108
|
+
|
109
|
+
# Return the block object setting in the after(:each_ruby) block
|
110
|
+
#
|
63
111
|
def after_each_ruby_callback
|
64
112
|
config.after_each_ruby_callback
|
65
113
|
end
|
66
|
-
|
114
|
+
|
67
115
|
# Return the rubies setting in the config file or the command line
|
68
116
|
#
|
69
117
|
def rubies
|
70
118
|
config.rubies
|
71
119
|
end
|
72
|
-
|
120
|
+
|
121
|
+
# Return true if verbose mode is on
|
122
|
+
# Verbose mode is false as default
|
123
|
+
#
|
124
|
+
def verbose?
|
125
|
+
config.verbose
|
126
|
+
end
|
127
|
+
|
128
|
+
# Return true if the user application has a Gemfile
|
129
|
+
# Return false if not exist the Gemfile
|
130
|
+
#
|
131
|
+
def have_gemfile?
|
132
|
+
File.exist?(gemfile)
|
133
|
+
end
|
134
|
+
|
135
|
+
# Return false if you want the InfinityTest run with bundler
|
136
|
+
# Return true otherwise
|
137
|
+
#
|
138
|
+
def skip_bundler?
|
139
|
+
config.skip_bundler?
|
140
|
+
end
|
141
|
+
|
142
|
+
# Contruct all the commands for the test framework
|
143
|
+
#
|
73
144
|
def construct_commands
|
74
145
|
test_framework.construct_commands
|
75
146
|
end
|
76
|
-
|
77
|
-
def test_directory_pattern
|
78
|
-
test_framework.test_directory_pattern
|
79
|
-
end
|
80
|
-
|
147
|
+
|
81
148
|
# Return a instance of the test framework class
|
82
149
|
#
|
83
150
|
def test_framework
|
84
151
|
@test_framework ||= setting_test_framework
|
85
152
|
end
|
86
|
-
|
87
|
-
# Return
|
153
|
+
|
154
|
+
# Return true if the application is using Test::Unit
|
155
|
+
# Return false otherwise
|
88
156
|
#
|
89
|
-
def
|
90
|
-
|
157
|
+
def using_test_unit?
|
158
|
+
test_framework.instance_of?(TestUnit)
|
159
|
+
end
|
160
|
+
|
161
|
+
# Return a instance of the app framework class
|
162
|
+
#
|
163
|
+
def app_framework
|
164
|
+
@app_framework ||= setting_app_framework
|
165
|
+
end
|
166
|
+
|
167
|
+
# Return all the Heuristics of the application
|
168
|
+
#
|
169
|
+
def heuristics
|
170
|
+
config.instance_variable_get(:@heuristics)
|
171
|
+
end
|
172
|
+
|
173
|
+
# Triggers the #add_heuristics! method in the application_framework
|
174
|
+
#
|
175
|
+
def add_heuristics!
|
176
|
+
app_framework.add_heuristics!
|
91
177
|
end
|
92
|
-
|
178
|
+
|
179
|
+
def heuristics_users_high_priority!
|
180
|
+
@watchr.rules.reverse!
|
181
|
+
end
|
182
|
+
|
183
|
+
# Pass many commands(expecting something that talk like Hash) and run them
|
184
|
+
# First, triggers all the before each callbacks, run the commands
|
185
|
+
# and last, triggers after each callbacks
|
186
|
+
#
|
93
187
|
def run!(commands)
|
94
188
|
before_callback.call if before_callback
|
189
|
+
|
95
190
|
commands.each do |ruby_version, command|
|
96
191
|
call_each_ruby_callback(:before_each_ruby_callback, ruby_version)
|
97
192
|
command = say_the_ruby_version_and_run_the_command!(ruby_version, command) # This method exist because it's more easier to test
|
98
193
|
notify!(:results => command.results, :ruby_version => ruby_version)
|
99
194
|
call_each_ruby_callback(:after_each_ruby_callback, ruby_version)
|
100
195
|
end
|
196
|
+
|
101
197
|
after_callback.call if after_callback
|
102
198
|
end
|
103
|
-
|
199
|
+
|
200
|
+
# Return the notification_framework setting in the configuration file
|
201
|
+
# Maybe is: :growl, :lib_notify
|
202
|
+
#
|
203
|
+
def notification_framework
|
204
|
+
config.notification_framework
|
205
|
+
end
|
206
|
+
|
207
|
+
# Send the message,image and the actual ruby version to show in the notification system
|
208
|
+
#
|
104
209
|
def notify!(options)
|
105
|
-
if notification_framework
|
210
|
+
if notification_framework
|
106
211
|
message = parse_results(options[:results])
|
107
|
-
|
212
|
+
title = options[:ruby_version]
|
213
|
+
send(notification_framework).title(title).message(message).image(image_to_show).notify!
|
108
214
|
else
|
109
215
|
# skip(do nothing) when not have notification framework
|
110
216
|
end
|
111
217
|
end
|
112
|
-
|
218
|
+
|
219
|
+
# Parse the results for each command to the test framework
|
220
|
+
#
|
221
|
+
# app.parse_results(['.....','108 examples']) # => '108 examples'
|
222
|
+
#
|
113
223
|
def parse_results(results)
|
114
224
|
test_framework.parse_results(results)
|
115
225
|
end
|
116
226
|
|
227
|
+
# If the test pass, show the sucess image
|
228
|
+
# If is some pending test, show the pending image
|
229
|
+
# If the test fails, show the failure image
|
230
|
+
#
|
117
231
|
def image_to_show
|
118
232
|
if test_framework.failure?
|
119
233
|
failure_image
|
@@ -121,70 +235,110 @@ module InfinityTest
|
|
121
235
|
pending_image
|
122
236
|
else
|
123
237
|
sucess_image
|
124
|
-
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
# Return the files that match by the options
|
242
|
+
# This very used in the #run method called in the heuristics instances
|
243
|
+
#
|
244
|
+
# Example:
|
245
|
+
#
|
246
|
+
# files_to_run!(:all => :files) # => Return all test files
|
247
|
+
# files_to_run!(:all => :files, :in_dir => :models) # => Return all the test files in the models directory
|
248
|
+
# files_to_run!(:test_for => match_data) # => Return the tests that match with the MatchData Object
|
249
|
+
# files_to_run!(:test_for => match_data, :in_dir => :controllers) # => Return the tests that match with the MatchData Object
|
250
|
+
# files_to_run!(match_data) # => return the test file
|
251
|
+
#
|
252
|
+
def files_to_run!(options)
|
253
|
+
return options.to_s if options.is_a?(MatchData)
|
254
|
+
if options.equal?(:all) or options.include?(:all)
|
255
|
+
search_files_in_dir(all_test_files, :in_dir => options[:in_dir]).join(' ')
|
256
|
+
else
|
257
|
+
search_file(:pattern => options[:test_for][1], :in_dir => options[:in_dir]) if options.include?(:test_for)
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
# Search files under the dir(s) specified
|
262
|
+
#
|
263
|
+
def search_files_in_dir(files, options)
|
264
|
+
dirs = [options[:in_dir]].compact.flatten
|
265
|
+
match_files = dirs.collect do |directory|
|
266
|
+
files.select { |file| file.match(directory.to_s) }
|
267
|
+
end
|
268
|
+
match_files.empty? ? files : match_files
|
125
269
|
end
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
270
|
+
|
271
|
+
# Search files that matches with the pattern
|
272
|
+
#
|
273
|
+
def search_file(options)
|
274
|
+
files = all_test_files.grep(/#{options[:pattern]}/i)
|
275
|
+
search_files_in_dir(files, :in_dir => options[:in_dir]).join(' ')
|
131
276
|
end
|
132
|
-
|
133
|
-
|
134
|
-
|
277
|
+
|
278
|
+
# Return all the tests files in the User application
|
279
|
+
#
|
280
|
+
def all_test_files
|
281
|
+
test_framework.all_files
|
135
282
|
end
|
136
|
-
|
283
|
+
|
284
|
+
# Run commands for a file
|
285
|
+
# If dont have a file, do nothing
|
286
|
+
#
|
137
287
|
def run_commands_for_file(file)
|
138
|
-
|
139
|
-
|
288
|
+
if file and !file.empty?
|
289
|
+
commands = test_framework.construct_commands(file)
|
290
|
+
run!(commands)
|
291
|
+
end
|
140
292
|
end
|
141
|
-
|
142
|
-
def
|
143
|
-
|
293
|
+
|
294
|
+
def say_the_ruby_version_and_run_the_command!(ruby_version, command)
|
295
|
+
puts; puts "* { :ruby => #{ruby_version} }"
|
296
|
+
puts command if verbose?
|
297
|
+
Command.new(:ruby_version => ruby_version, :command => command).run!
|
144
298
|
end
|
145
|
-
|
299
|
+
|
146
300
|
private
|
147
|
-
|
301
|
+
|
148
302
|
def call_each_ruby_callback(callback_type, ruby_version)
|
149
303
|
callback = send(callback_type)
|
150
304
|
callback.call(RVM::Environment.new(ruby_version)) if callback
|
151
305
|
end
|
152
|
-
|
153
|
-
def say_the_ruby_version_and_run_the_command!(ruby_version, command)
|
154
|
-
puts; puts "* { :ruby => #{ruby_version} }"
|
155
|
-
puts command if verbose?
|
156
|
-
Command.new(:ruby_version => ruby_version, :command => command).run!
|
157
|
-
end
|
158
|
-
|
306
|
+
|
159
307
|
def setting_test_framework
|
160
308
|
case config.test_framework
|
161
309
|
when :rspec
|
162
310
|
Rspec.new :rubies => rubies
|
163
311
|
when :test_unit
|
164
312
|
TestUnit.new :rubies => rubies
|
313
|
+
when :bacon
|
314
|
+
Bacon.new :rubies => rubies
|
165
315
|
end
|
166
316
|
end
|
167
|
-
|
168
|
-
def
|
169
|
-
case config.
|
170
|
-
when :
|
171
|
-
|
172
|
-
when :
|
173
|
-
|
317
|
+
|
318
|
+
def setting_app_framework
|
319
|
+
case config.app_framework
|
320
|
+
when :rails
|
321
|
+
Rails.new
|
322
|
+
when :rubygems
|
323
|
+
RubyGems.new
|
174
324
|
end
|
175
325
|
end
|
176
326
|
|
177
327
|
def load_global_configuration
|
178
328
|
load_file(File.expand_path('~/.infinity_test'))
|
179
329
|
end
|
180
|
-
|
330
|
+
|
181
331
|
def load_project_configuration
|
182
332
|
load_file('./.infinity_test')
|
183
333
|
end
|
184
|
-
|
334
|
+
|
185
335
|
def load_file(file)
|
186
336
|
load(file) if File.exist?(file)
|
187
337
|
end
|
188
338
|
|
339
|
+
def gemfile
|
340
|
+
File.join(Dir.pwd, 'Gemfile')
|
341
|
+
end
|
342
|
+
|
189
343
|
end
|
190
|
-
end
|
344
|
+
end
|