infinity_test 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/.gitignore +3 -0
  2. data/.infinity_test +30 -2
  3. data/.rspec +2 -0
  4. data/.rvmrc +1 -1
  5. data/Gemfile +10 -2
  6. data/Gemfile.lock +52 -12
  7. data/History.markdown +86 -2
  8. data/LICENSE.txt +22 -0
  9. data/Rakefile +25 -9
  10. data/Readme.markdown +47 -23
  11. data/TODO.markdown +12 -0
  12. data/Tasks +2 -3
  13. data/VERSION.yml +2 -2
  14. data/bin/infinity_test +1 -1
  15. data/features/heuristics.feature +23 -0
  16. data/features/support/env.rb +2 -0
  17. data/images/fuuu/failure.png +0 -0
  18. data/images/fuuu/pending.png +0 -0
  19. data/images/fuuu/sucess.png +0 -0
  20. data/infinity_test.gemspec +62 -29
  21. data/lib/infinity_test.rb +29 -9
  22. data/lib/infinity_test/application.rb +222 -68
  23. data/lib/infinity_test/application_library/rails.rb +94 -0
  24. data/lib/infinity_test/application_library/rubygems.rb +43 -0
  25. data/lib/infinity_test/binary_path.rb +30 -8
  26. data/lib/infinity_test/builder.rb +56 -0
  27. data/lib/infinity_test/command.rb +18 -24
  28. data/lib/infinity_test/configuration.rb +96 -44
  29. data/lib/infinity_test/continuous_testing.rb +17 -39
  30. data/lib/infinity_test/dependencies.rb +76 -41
  31. data/lib/infinity_test/environment.rb +15 -0
  32. data/lib/infinity_test/heuristics.rb +36 -0
  33. data/lib/infinity_test/heuristics_helper.rb +9 -0
  34. data/lib/infinity_test/options.rb +56 -19
  35. data/lib/infinity_test/runner.rb +25 -17
  36. data/lib/infinity_test/test_framework.rb +109 -0
  37. data/lib/infinity_test/test_library/bacon.rb +55 -0
  38. data/lib/infinity_test/test_library/cucumber.rb +22 -0
  39. data/lib/infinity_test/test_library/rspec.rb +58 -0
  40. data/lib/infinity_test/test_library/test_unit.rb +46 -0
  41. data/spec/factories/company/Gemfile +0 -0
  42. data/spec/factories/infinity_test_example +2 -2
  43. data/spec/infinity_test/application_library/rails_spec.rb +140 -0
  44. data/spec/infinity_test/application_library/rubygems_spec.rb +52 -0
  45. data/spec/infinity_test/application_spec.rb +274 -50
  46. data/spec/infinity_test/binary_path_spec.rb +72 -0
  47. data/spec/infinity_test/builder_spec.rb +7 -0
  48. data/spec/infinity_test/command_spec.rb +13 -14
  49. data/spec/infinity_test/configuration_spec.rb +183 -57
  50. data/spec/infinity_test/continuous_testing_spec.rb +19 -1
  51. data/spec/infinity_test/environment_spec.rb +23 -0
  52. data/spec/infinity_test/heuristics_helper_spec.rb +15 -0
  53. data/spec/infinity_test/heuristics_spec.rb +127 -0
  54. data/spec/infinity_test/options_spec.rb +48 -26
  55. data/spec/infinity_test/runner_spec.rb +37 -29
  56. data/spec/infinity_test/test_framework_spec.rb +127 -0
  57. data/spec/infinity_test/test_library/bacon_spec.rb +150 -0
  58. data/spec/infinity_test/test_library/cucumber_spec.rb +8 -0
  59. data/spec/infinity_test/test_library/rspec_spec.rb +185 -0
  60. data/spec/infinity_test/test_library/test_unit_spec.rb +184 -0
  61. data/spec/infinity_test_spec.rb +23 -12
  62. data/spec/spec_helper.rb +86 -30
  63. metadata +62 -32
  64. data/lib/infinity_test/notifications/growl.rb +0 -15
  65. data/lib/infinity_test/notifications/lib_notify.rb +0 -11
  66. data/lib/infinity_test/rspec.rb +0 -87
  67. data/lib/infinity_test/test_unit.rb +0 -74
  68. data/spec/infinity_test/notifications/growl_spec.rb +0 -9
  69. data/spec/infinity_test/notifications/lib_notify_spec.rb +0 -9
  70. data/spec/infinity_test/rspec_spec.rb +0 -189
  71. data/spec/infinity_test/test_unit_spec.rb +0 -182
  72. data/spec/spec.opts +0 -1
@@ -0,0 +1,94 @@
1
+ module InfinityTest
2
+ module ApplicationLibrary
3
+ class Rails
4
+ include HeuristicsHelper
5
+ attr_accessor :lib_pattern,
6
+ :test_pattern,
7
+ :configuration_pattern,
8
+ :routes_pattern,
9
+ :fixtures_pattern,
10
+ :controllers_pattern,
11
+ :models_pattern,
12
+ :helpers_pattern,
13
+ :mailers_pattern,
14
+ :application_controller_pattern,
15
+ :application_helper_pattern
16
+
17
+ def initialize
18
+ @application = InfinityTest.application
19
+ resolve_patterns!
20
+ end
21
+
22
+ def add_heuristics!
23
+ rails = self
24
+ heuristics do
25
+
26
+ add(rails.application_controller_pattern) do |file|
27
+ run :all => :tests, :in_dir => :controllers
28
+ end
29
+
30
+ add(rails.application_helper_pattern) do |file|
31
+ run :all => :tests, :in_dir => [:helpers, :views]
32
+ end
33
+
34
+ add(rails.configuration_pattern) do |file|
35
+ run(:all => :tests)
36
+ end
37
+
38
+ add(rails.routes_pattern) do |file|
39
+ run(:all => :tests)
40
+ end
41
+
42
+ add(rails.controllers_pattern) do |file|
43
+ run :test_for => file, :in_dir => :controllers
44
+ end
45
+
46
+ add(rails.models_pattern) do |file|
47
+ run :test_for => file, :in_dir => :models
48
+ end
49
+
50
+ add(rails.helpers_pattern) do |file|
51
+ run :test_for => file, :in_dir => :helpers
52
+ end
53
+
54
+ add(rails.mailers_pattern) do |file|
55
+ run :test_for => file, :in_dir => :mailers
56
+ end
57
+
58
+ add(rails.lib_pattern) do |file|
59
+ run :test_for => file, :in_dir => :lib
60
+ end
61
+
62
+ add(rails.test_pattern) do |file|
63
+ run file
64
+ end
65
+
66
+ add(rails.fixtures_pattern) do |file|
67
+ run :all => :tests, :in_dir => :models
68
+ end
69
+
70
+ end
71
+ end
72
+
73
+ def resolve_patterns!
74
+ @configuration_pattern = "^config/application.rb"
75
+ @routes_pattern = "^config/routes\.rb"
76
+ @lib_pattern = "^lib/*/(.*)\.rb"
77
+ if @application.using_test_unit?
78
+ @test_pattern = "^test/*/(.*)_test.rb"
79
+ @fixtures_pattern = "^test/fixtures/(.*).yml"
80
+ else
81
+ @test_pattern = "^spec/*/(.*)_spec.rb"
82
+ @fixtures_pattern = "^spec/fixtures/(.*).yml"
83
+ end
84
+ @controllers_pattern = "^app/controllers/(.*)\.rb"
85
+ @models_pattern = "^app/models/(.*)\.rb"
86
+ @helpers_pattern = "^app/helpers/(.*)\.rb"
87
+ @mailers_pattern = "^app/mailers/(.*)\.rb"
88
+ @application_controller_pattern = "^app/controllers/application_controller.rb"
89
+ @application_helper_pattern = "^app/helpers/application_helper.rb"
90
+ end
91
+
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,43 @@
1
+ module InfinityTest
2
+ module ApplicationLibrary
3
+ class RubyGems
4
+ include HeuristicsHelper
5
+ attr_accessor :lib_pattern, :test_pattern, :application, :test_helper_pattern
6
+
7
+ def initialize
8
+ @application = InfinityTest.application
9
+ @lib_pattern = "^lib/*/(.*)\.rb"
10
+ if @application.using_test_unit?
11
+ @test_pattern = "^test/*/(.*)_test.rb"
12
+ @test_helper_pattern = "^test/*/test_helper.rb"
13
+ else
14
+ @test_pattern = "^spec/*/(.*)_spec.rb"
15
+ @test_helper_pattern = "^spec/*/spec_helper.rb"
16
+ end
17
+ end
18
+
19
+ # Add Heuristics to send to Watchr Methods
20
+ # This methods aren't tested!
21
+ #
22
+ def add_heuristics!
23
+ rubygems = self
24
+ heuristics do
25
+
26
+ add(rubygems.lib_pattern) do |file|
27
+ run :test_for => file
28
+ end
29
+
30
+ add(rubygems.test_pattern) do |file|
31
+ run file
32
+ end
33
+
34
+ add(rubygems.test_helper_pattern) do |file|
35
+ run :all => :tests
36
+ end
37
+
38
+ end
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -1,21 +1,43 @@
1
1
  module InfinityTest
2
2
  module BinaryPath
3
-
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ base.send :include, ClassMethods
7
+ end
8
+
4
9
  def rvm_bin_path(environment, binary)
5
- "~/.rvm/gems/#{environment.expanded_name}/bin/#{binary}"
10
+ environment.path_for(binary)
6
11
  end
7
-
12
+
8
13
  def print_message(gem_name, ruby_version)
9
14
  puts "\n Ruby => #{ruby_version}: I searched the #{gem_name} binary path and I don't find nothing. You have the #{gem_name} installed in this version?"
10
15
  end
11
-
16
+
12
17
  def search_binary(binary_name, options)
13
- File.expand_path(rvm_bin_path(options[:environment], binary_name))
18
+ rvm_bin_path(options[:environment], binary_name)
14
19
  end
15
-
20
+
16
21
  def have_binary?(binary)
17
22
  File.exist?(binary)
18
23
  end
19
-
24
+
25
+ module ClassMethods
26
+
27
+ # Set the binary to search in the RVM binary folder
28
+ #
29
+ # binary :bundle
30
+ #
31
+ def binary(binary_name, options={})
32
+ method_sufix = options[:name] || binary_name
33
+ eval <<-EVAL
34
+ def search_#{method_sufix}(environment)
35
+ search_binary('#{binary_name}', :environment => environment)
36
+ end
37
+ EVAL
38
+ end
39
+
40
+ end
41
+
20
42
  end
21
- end
43
+ end
@@ -0,0 +1,56 @@
1
+ module InfinityTest
2
+ module Builder
3
+
4
+ #
5
+ def construct_command(options)
6
+ binary_name, ruby_version, command, file, environment = resolve_options(options)
7
+ unless have_binary?(binary_name) || options[:skip_binary?]
8
+ print_message(binary_name, ruby_version)
9
+ else
10
+ command = "#{command} #{decide_files(file)}"
11
+ rvm_ruby_version = "rvm #{ruby_version} ruby"
12
+ if application.have_gemfile? and not application.skip_bundler?
13
+ run_with_bundler!(rvm_ruby_version, command, environment)
14
+ else
15
+ run_without_bundler!(rvm_ruby_version, command)
16
+ end
17
+ end
18
+ end
19
+
20
+ #
21
+ def run_with_bundler!(rvm_ruby_version, command, environment)
22
+ bundle_binary = search_bundle(environment)
23
+ unless have_binary?(bundle_binary)
24
+ print_message('bundle', environment.expanded_name)
25
+ else
26
+ %{#{rvm_ruby_version} #{bundle_binary} exec #{command}}
27
+ end
28
+ end
29
+
30
+ #
31
+ def run_without_bundler!(rvm_ruby_version, command)
32
+ %{#{rvm_ruby_version} #{command}}
33
+ end
34
+
35
+ #
36
+ # Contruct all the Commands for each ruby instance variable
37
+ # If don't want to run with many rubies, add the current ruby to the rubies instance
38
+ # and create the command with current ruby
39
+ #
40
+ def construct_commands(file=nil)
41
+ @rubies << RVM::Environment.current.environment_name if @rubies.empty?
42
+ construct_rubies_commands(file)
43
+ end
44
+
45
+ def resolve_options(options)
46
+ ruby_version = options[:for]
47
+ binary_name = options[:skip_binary?] ? '' : options[:binary]
48
+ load_path = %{-I"#{options[:load_path]}"} if options[:load_path]
49
+ environment = options[:environment]
50
+ file = options[:file]
51
+ command = [ binary_name, load_path].compact.join(' ')
52
+ [binary_name, ruby_version, command, file, environment]
53
+ end
54
+
55
+ end
56
+ end
@@ -1,12 +1,13 @@
1
1
  module InfinityTest
2
2
  class Command
3
3
  attr_accessor :command, :results, :line, :ruby_version
4
-
4
+
5
5
  # Create new Command object that receive the ruby_version and the command string
6
6
  #
7
7
  def initialize(options={})
8
8
  @command = options[:command]
9
9
  @ruby_version = options[:ruby_version]
10
+ @current_ruby_string = RVM::Environment.current_ruby_string
10
11
  @results = []
11
12
  @line = []
12
13
  end
@@ -15,19 +16,22 @@ module InfinityTest
15
16
  #
16
17
  def run!
17
18
  old_sync = $stdout.sync
18
- $stdout.sync = true
19
+ $stdout.sync = true
19
20
  begin
20
21
  open("| #{@command}", "r") do |file|
21
22
  until file.eof? do
22
- test_line = file.getc
23
- break unless test_line
24
- putc(test_line)
23
+ test_line = file.getc or break
24
+ if yarv?
25
+ print(test_line)
26
+ else
27
+ putc(test_line)
28
+ end
25
29
  @line.push(test_line)
26
30
  push_in_the_results(test_line)
27
31
  end
28
32
  end
29
33
  ensure
30
- $stdout.sync = old_sync
34
+ $stdout.sync = old_sync
31
35
  end
32
36
  @results = @results.join
33
37
  self
@@ -38,27 +42,17 @@ module InfinityTest
38
42
  # Join otherwise.
39
43
  #
40
44
  def push_in_the_results(test_line)
41
- if end_of_line?(test_line)
42
- @results.push((ree? or mri?) ? @line.pack('c*') : @line.join)
45
+ if test_line == ?\n
46
+ @results.push(yarv? ? @line.join : @line.pack('c*'))
43
47
  @line.clear
44
48
  end
45
49
  end
46
-
47
- # Using Ruby Enterprise Edition?
48
- #
49
- def ree?
50
- RVM::Environment.current_ruby_string =~ /ree/
51
- end
52
-
53
- # Using mri?
50
+
51
+ # Using yarv?
54
52
  #
55
- def mri?
56
- RVM::Environment.current_ruby_string =~ /ruby-1.8/
57
- end
58
-
59
- def end_of_line?(test_line)
60
- test_line == ?\n
53
+ def yarv?
54
+ @current_ruby_string =~ /ruby-1.9/
61
55
  end
62
-
56
+
63
57
  end
64
- end
58
+ end
@@ -1,34 +1,35 @@
1
1
  module InfinityTest
2
2
  class Configuration
3
-
3
+
4
4
  SUPPORTED_FRAMEWORKS = [:growl, :lib_notify] # :snarl, :lib_notify
5
-
6
- attr_accessor :notification_framework,
7
- :sucess_image, :failure_image, :pending_image,
8
- :rubies, :test_framework,
9
- :exceptions_to_ignore,
10
- :before_callback, :before_each_ruby_callback,
11
- :after_callback, :after_each_ruby_callback,
12
- :verbose
13
-
5
+
6
+ attr_accessor :notification_framework,
7
+ :sucess_image, :failure_image, :pending_image,
8
+ :rubies, :test_framework, :app_framework,
9
+ :exceptions_to_ignore, :cucumber,
10
+ :before_callback, :before_each_ruby_callback, :before_environment_callback,
11
+ :after_callback, :after_each_ruby_callback,
12
+ :verbose
13
+
14
14
  IMAGES_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'images'))
15
-
15
+
16
16
  SUCESS = 'sucess'
17
17
  FAILURE = 'failure'
18
18
  PENDING = 'pending'
19
-
19
+
20
20
  # Initialize the Configuration object that keeps the images, callbacks, rubies
21
21
  # and the test framework
22
- #
22
+ #
23
23
  def initialize
24
24
  @default_dir_image = File.join(IMAGES_DIR, 'simpson')
25
25
  @test_framework = :test_unit
26
+ @app_framework = :rubygems
26
27
  @sucess_image = search_image(SUCESS)
27
28
  @failure_image = search_image(FAILURE)
28
29
  @pending_image = search_image(PENDING)
29
30
  @verbose = false
30
31
  end
31
-
32
+
32
33
  # Set the notification framework to use with Infinity Test.
33
34
  # The supported Notification Frameworks are:
34
35
  #
@@ -44,7 +45,8 @@ module InfinityTest
44
45
  # notifications :lib_notify
45
46
  #
46
47
  def notifications(framework, &block)
47
- raise NotificationFrameworkDontSupported, "Notification :#{framework} don't supported. The Frameworks supported are: #{SUPPORTED_FRAMEWORKS.join(',')}" unless SUPPORTED_FRAMEWORKS.include?(framework)
48
+ message = "Notification :#{framework} don't supported. The Frameworks supported are: #{SUPPORTED_FRAMEWORKS.join(',')}"
49
+ raise NotificationFrameworkDontSupported, message unless SUPPORTED_FRAMEWORKS.include?(framework)
48
50
  @notification_framework = framework
49
51
  yield self if block_given?
50
52
  self
@@ -53,9 +55,9 @@ module InfinityTest
53
55
  # Set the Success and Failure image to show in the notification framework
54
56
  #
55
57
  # show_images :failure => 'Users/tomas/images/my_custom_image.png', :sucess => 'custom_image.jpg'
56
- #
58
+ #
57
59
  # Or you cant set modes(directory) for show images (please see the images folder in => http://github.com/tomas-stefano/infinity_test/tree/master/images/ )
58
- #
60
+ #
59
61
  # show_images :mode => :simpson # => This will show images in the folder http://github.com/tomas-stefano/infinity_test/tree/master/images/simpson
60
62
  # show_images :mode => :street_fighter # => This will show images in folder http://github.com/tomas-stefano/infinity_test/tree/master/images/street_fighter
61
63
  # show_images :mode => '~/My/Mode' # => This will show images in the '~/My/Mode' directory
@@ -69,7 +71,7 @@ module InfinityTest
69
71
  @failure_image = options[:failure] || search_image(FAILURE)
70
72
  @pending_image = options[:pending] || search_image(PENDING)
71
73
  end
72
-
74
+
73
75
  # Switch the image directory to show
74
76
  #
75
77
  def switch_mode!(mode)
@@ -80,51 +82,78 @@ module InfinityTest
80
82
  @default_dir_image = File.expand_path(File.join(mode))
81
83
  end
82
84
  end
83
-
85
+
84
86
  # Search the sucess, failure or pending images and return the first in the pattern
85
87
  #
86
88
  def search_image(file)
87
89
  Dir.glob(File.join(@default_dir_image, file) + '*').first
88
90
  end
89
-
91
+
90
92
  # The options method to set:
91
93
  #
92
- # * test framework
94
+ # * test framework
93
95
  # * ruby versions
94
- #
96
+ # * verbose mode
97
+ # * app_framework
98
+ #
95
99
  # Here is the example of Little Domain Language:
96
100
  #
97
101
  # use :rubies => ['1.9.1', '1.9.2'], :test_framework => :rspec
98
102
  #
99
103
  # use :rubies => [ '1.8.7-p249', '1.9.2@rails3'], :test_framework => :test_unit
100
104
  #
105
+ # use :test_framework => :rspec, :app_framework => :rails
106
+ #
101
107
  def use(options={})
102
108
  rubies = options[:rubies]
103
109
  @rubies = (rubies.is_a?(Array) ? rubies.join(',') : rubies) || []
104
110
  @test_framework = options[:test_framework] || @test_framework
105
- @verbose = options[:verbose] || @verbose
106
- if options[:gemset]
107
- @rubies = @rubies.split(',').collect { |ruby|
108
- ruby << "@#{options[:gemset]}"
109
- }.join(',')
110
- end
111
+ @app_framework = options[:app_framework] || @app_framework
112
+ @verbose = options[:verbose] || @verbose
113
+ @cucumber = options[:cucumber]
114
+ setting_gemset_for_each_rubies(options[:gemset]) if options[:gemset]
115
+ end
116
+
117
+ # Setting a gemset for each rubies
118
+ #
119
+ # setting_gemset_for_each_rubies('infinity_test') # => ['1.8.7@infinity_test', '1.9.2@infinity_test']
120
+ #
121
+ def setting_gemset_for_each_rubies(gemset)
122
+ @rubies = @rubies.split(',').collect { |ruby| ruby << "@#{gemset}" }.join(',')
123
+ end
124
+
125
+ # InfinityTest try to use bundler if Gemfile is present.
126
+ # This method tell to InfinityTest to not use this convention.
127
+ #
128
+ def skip_bundler!
129
+ @skip_bundler = true
111
130
  end
112
-
131
+
132
+ # Return false if you want the InfinityTest run with bundler
133
+ #
134
+ def skip_bundler?
135
+ @skip_bundler ? true : false
136
+ end
137
+
138
+ def cucumber?
139
+ @cucumber
140
+ end
141
+
113
142
  # Method to use to ignore some dir/files changes
114
- #
143
+ #
115
144
  # Example:
116
145
  #
117
146
  # ignore :exceptions => %w(.svn .hg .git vendor tmp config rerun.txt)
118
147
  #
119
- # This is useless right now in the Infinity Test because the library
148
+ # This is useless right now in the Infinity Test because the library
120
149
  # only monitoring lib and test/spec/feature folder.
121
150
  #
122
151
  def ignore(options={})
123
152
  @exceptions_to_ignore = options[:exceptions] || []
124
153
  end
125
-
154
+
126
155
  # Callback method to run anything you want, before the run the test suite command
127
- #
156
+ #
128
157
  # Example:
129
158
  #
130
159
  # before_run do
@@ -134,9 +163,9 @@ module InfinityTest
134
163
  def before_run(&block)
135
164
  @before_callback = block
136
165
  end
137
-
166
+
138
167
  # Callback method to run anything you want, after the run the test suite command
139
- #
168
+ #
140
169
  # Example:
141
170
  #
142
171
  # after_run do
@@ -146,7 +175,7 @@ module InfinityTest
146
175
  def after_run(&block)
147
176
  @after_callback = block
148
177
  end
149
-
178
+
150
179
  # Callback method to handle before or after all run and for each ruby too!
151
180
  #
152
181
  # Example:
@@ -167,9 +196,9 @@ module InfinityTest
167
196
  #
168
197
  #
169
198
  def before(hook=:all, &block)
170
- setting_callback(hook, :all => :@before_callback, :each_ruby => :@before_each_ruby_callback, &block)
199
+ setting_callback(hook, :all => :@before_callback, :each_ruby => :@before_each_ruby_callback, :env => :@before_environment_callback, &block)
171
200
  end
172
-
201
+
173
202
  # Callback method to handle before or after all run and for each ruby too!
174
203
  #
175
204
  # Example:
@@ -191,15 +220,39 @@ module InfinityTest
191
220
  def after(hook=:all, &block)
192
221
  setting_callback(hook, :all => :@after_callback, :each_ruby => :@after_each_ruby_callback, &block)
193
222
  end
194
-
223
+
195
224
  # Clear the terminal (Useful in the before callback)
196
225
  #
197
226
  def clear(option)
198
227
  system('clear') if option == :terminal
199
228
  end
200
229
 
230
+ def replace_patterns(&block)
231
+ block.call(InfinityTest.application)
232
+ InfinityTest.application
233
+ end
234
+ alias :before_env :replace_patterns
235
+
236
+ # Added heuristics to the User application
237
+ #
238
+ def heuristics(&block)
239
+ @heuristics ||= Heuristics.new
240
+ @heuristics.instance_eval(&block)
241
+ @heuristics
242
+ end
243
+
244
+ # Set #watch methods (For more information see Watchr gem)
245
+ #
246
+ # If don't want the heuristics 'magic'
247
+ #
248
+ def watch(pattern, &block)
249
+ @script ||= InfinityTest.watchr
250
+ @script.watch(pattern, &block)
251
+ @script
252
+ end
253
+
201
254
  private
202
-
255
+
203
256
  def setting_callback(hook, callback, &block)
204
257
  if hook == :all
205
258
  instance_variable_set(callback[:all], block)
@@ -207,7 +260,7 @@ module InfinityTest
207
260
  instance_variable_set(callback[:each_ruby], block)
208
261
  end
209
262
  end
210
-
263
+
211
264
  end
212
265
  end
213
266
 
@@ -215,7 +268,6 @@ class NotificationFrameworkDontSupported < StandardError
215
268
  end
216
269
 
217
270
  def infinity_test(&block)
218
- configuration = InfinityTest.configuration
219
- configuration.instance_eval(&block)
220
- configuration
271
+ InfinityTest.configuration.instance_eval(&block)
272
+ InfinityTest.configuration
221
273
  end