solea 0.9.30 → 0.9.31

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.
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