solea 0.9.30 → 0.9.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/solea +9 -8
  3. data/lib/solea.rb +25 -32
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02c0aa46738e7fc3cfe0cf9245e396a9954cdc14
4
- data.tar.gz: cd6a77dfb14847d494a47cd93ab782a357d8e810
3
+ metadata.gz: 95e5e163b9fcdd8e1d03b1ce15dbfcf62420cf4f
4
+ data.tar.gz: 0d9025310246448d84a1c09491e93e6eb67c5fbc
5
5
  SHA512:
6
- metadata.gz: 7e5a5112311544591975fbcb9ebd1f59d497752a8b481c64c347448bd635c4e048ab31ab4e95d4217511dafb73c755ebf73401d1edb3d1fe4b1a0a9db506f49f
7
- data.tar.gz: 718328dfc79569323029af8146c8d22e8366998407277164bde2641b656c948d5dd0934d3063e11974a14733331877c3570ac3ac6d63a872df8374f90a452c68
6
+ metadata.gz: 028ccdde7c82470b8923247b9e3d2715410019c9e262ac73b85040d292d7aa78705d6023dd5f088415b793b1b8687d5c64962e45b1a2ead36f2ad5d213908899
7
+ data.tar.gz: f2044c39cfd90e7b91493f69869aeec18e6c18b276b1ee95a9bddd07a3d124f511876a71a5fdb1fefd869e10088e9ed548e1e0989413421199de70edb7c3ed46
data/bin/solea CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'solea.rb'
3
+ require 'solea'
4
4
 
5
5
  if ARGV[0]
6
6
  if ARGV[0].match(/.+\.rb\z/)
@@ -9,9 +9,10 @@ if ARGV[0]
9
9
  dir_name = ARGV[0]
10
10
  end
11
11
  end
12
+
12
13
  if ARGV[1]
13
- class_test = Solea.module_eval(File.read(file_name))
14
- requested = class_test.tests.flatten.find do |test|
14
+ load file_name
15
+ requested = Solea.tests.flatten.find do |test|
15
16
  test.metadata[:lineno] == ARGV[1].to_i
16
17
  end
17
18
  if ARGV[2]
@@ -20,7 +21,7 @@ if ARGV[1]
20
21
  puts "Report requested".center(145, "-"), requested.report
21
22
  end
22
23
  else
23
- tests = {}
24
+ files_loaded = []
24
25
  if file_name
25
26
  file_path = file_name
26
27
  else
@@ -28,9 +29,9 @@ else
28
29
  file_path = "#{dir_name}/**/*_spec.rb"
29
30
  end
30
31
  Dir.glob(file_path).each do |file|
31
- class_test = Solea.module_eval(File.read(file))
32
- tests[file] = class_test.tests
32
+ load file
33
+ files_loaded << file
33
34
  end
34
- puts "\nFiles loaded: #{tests.keys.join(", ")}"
35
- puts Solea.report(tests)
35
+ puts "\nFiles loaded: #{files_loaded.join(", ")}"
36
+ puts Solea.report
36
37
  end
@@ -1,47 +1,43 @@
1
1
  module Solea
2
- def self.report(tests)
3
- all_tests = []
4
- passing_tests = []
5
- tests.each do |filename, tests_array|
6
- tests_array = tests_array.flatten
7
- all_tests << tests_array
8
- passing_tests << tests_array.select{|test| test.pass }
9
- tests[filename] = tests_array.select{|test| !test.pass }
10
- end
11
- all_tests, passing_tests = all_tests.flatten, passing_tests.flatten
12
- text_color = (all_tests.count == passing_tests.count ? "37;47;1" : "37;41;1")
13
- message = "\n\e[#{text_color}m" + "#{passing_tests.count} of #{all_tests.count} tests passed.".center(145) + "\e[0m\n\n"
14
- unless all_tests.count == passing_tests.count
15
- message += "Failing tests: \"file path: lineno\"".center(145, "-")
16
- tests.each do |filename, failing_tests|
17
- if failing_tests.any?
18
- message += "\n" + failing_tests.map do |test|
19
- "#{filename} #{test.metadata[:lineno]}"
20
- end.join("\n") + "\n\n"
21
- end
22
- end
2
+ class << self
3
+ attr_accessor :tests
4
+ end
5
+
6
+ def self.report
7
+ all_tests = @tests.flatten
8
+ passing_tests = all_tests.select{|test| test.pass }
9
+ failing_tests = all_tests.select{|test| !test.pass }
10
+ text_color = failing_tests.none? ? "37;47;1" : "37;41;1"
11
+ message = "\n\e[#{text_color}m" + "#{passing_tests.count} of #{all_tests.count} tests passed.".center(145) + "\e[0m\n\n"
12
+ if failing_tests.any?
13
+ message += "Failing tests: \"file path: lineno\"".center(145, "-") + "\n" +
14
+ failing_tests.map do |test|
15
+ "#{test.metadata[:filename]} #{test.metadata[:lineno]}"
16
+ end.join("\n") + "\n\n"
23
17
  end
24
18
  message
25
19
  end
26
20
 
21
+ def self.test_class(class_name, &block)
22
+ @tests ||= []
23
+ class_test = ClassTest.new(class_name)
24
+ class_test.instance_exec &block
25
+ @tests << class_test.tests
26
+ end
27
+
27
28
  class ClassTest
28
29
  attr_accessor :tests
29
30
 
30
- def initialize(class_name, &block)
31
+ def initialize(class_name)
31
32
  @class_name = class_name
32
33
  @tests = []
33
- instance_exec &block
34
34
  end
35
35
 
36
36
  def test_method(method_name, &block)
37
37
  method_test = MethodTest.new(method_name)
38
- method_test.execute &block
38
+ method_test.instance_exec &block
39
39
  @tests << method_test.tests
40
40
  end
41
-
42
- def report
43
- Solea.report({ @filename => @tests })
44
- end
45
41
  end
46
42
 
47
43
  class MethodTest
@@ -53,10 +49,6 @@ module Solea
53
49
  @exceptions = []
54
50
  @notes = []
55
51
  end
56
-
57
- def execute(&block)
58
- instance_exec &block
59
- end
60
52
 
61
53
  def before(&block)
62
54
  @before = yield
@@ -150,6 +142,7 @@ module Solea
150
142
  { :before => @before,
151
143
  :description => @description,
152
144
  :example => @example,
145
+ :filename => (@hypothesis_caller.path if @hypothesis_caller),
153
146
  :lineno => (@hypothesis_caller.lineno if @hypothesis_caller),
154
147
  :exceptions => @exceptions,
155
148
  :notes => @notes,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solea
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.30
4
+ version: 0.9.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Swetnam
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-14 00:00:00.000000000 Z
11
+ date: 2013-09-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple, streamlined unit testing gem.
14
14
  email: jbswetnam@gmail.com