pretty_test 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@ module PrettyTest
4
4
  class Tap < ::MiniTest::MiniTap
5
5
 
6
6
  SKIP_FORMAT = "\e[33m[SKIPPED] %s: %s\e[0m\n%s\n%s"
7
- FAILURE_FORMAT = "\e[31m[FAILURE] %s: %s\e[0m\n%s\n%s"
7
+ FAILURE_FORMAT = "\e[31m[FAILURE] %s: %s\e[0m\n\e[31m%s: %s\e[0m\n%s"
8
8
  ERROR_FORMAT = "\e[31m[ERROR] %s: %s\e[0m\n\e[31m%s: %s\e[0m\n%s"
9
9
  STATUS_FORMAT = "\e[2K\r\e[?7l\e[37m(%.1fs) \e[32m%d/%d tests\e[37m, \e[36m%d assertions\e[37m, \e[31m%d errors\e[37m, \e[31m%d failures\e[37m, \e[33m%d skips \e[37m%s\e[?7h\e[0m"
10
10
 
@@ -40,15 +40,10 @@ module PrettyTest
40
40
  end
41
41
 
42
42
  def tapout_failure(suite, test, test_runner)
43
- @progress += 1
44
- error = test_runner.exception
45
- test_name = pretty_test_name(test)
46
- location = pretty_location(error)
47
- message = error.message.strip
48
- print_error FAILURE_FORMAT, suite_name, test_name, message, location
43
+ tapout_error(suite, test, test_runner, FAILURE_FORMAT)
49
44
  end
50
45
 
51
- def tapout_error(suite, test, test_runner)
46
+ def tapout_error(suite, test, test_runner, format = ERROR_FORMAT)
52
47
  @progress += 1
53
48
  error = test_runner.exception
54
49
  test_name = pretty_test_name(test)
@@ -66,6 +61,12 @@ module PrettyTest
66
61
  end
67
62
  end
68
63
 
64
+ def tapout_(suite, test, test_runner)
65
+ remove_status
66
+ puts "\n\e[31mCould not run #{suite}##{test} for an unknown reason\e[0m\n"
67
+ puts
68
+ end
69
+
69
70
  protected
70
71
 
71
72
  def pretty_suite_name(suite)
@@ -92,12 +93,19 @@ module PrettyTest
92
93
  end
93
94
 
94
95
  def pretty_trace(e)
95
- path, line = location(e)
96
- e.backtrace.map { |trace_line|
97
- prefix = trace_line.index("#{path}:#{line}") ? "\e[1m-> " : " "
98
- file, line = trace_line.sub(/:in .*$/, "").split(":")
99
- clean_trace_line(prefix, file, line)
100
- }.compact.join("\n")
96
+ assertion_index = e.backtrace.rindex { |trace| trace =~ /:in .(assert|refute|flunk|pass|fail|raise|must|wont)/ }
97
+ location_index = if assertion_index
98
+ assertion_index + 1
99
+ else
100
+ e.backtrace.index { |trace_line| trace_line.index(Dir.pwd) }
101
+ end
102
+ lines = []
103
+ e.backtrace.each_with_index do |trace, index|
104
+ prefix = index == location_index ? "\e[1m-> " : " "
105
+ trace_file, trace_line = trace.sub(/:in .*$/, "").split(":")
106
+ lines << clean_trace_line(prefix, trace_file, trace_line)
107
+ end
108
+ lines.compact.join("\n")
101
109
  end
102
110
 
103
111
  def clean_trace_line(prefix, path, line)
@@ -1,3 +1,3 @@
1
1
  module PrettyTest
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pretty_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-19 00:00:00.000000000Z
12
+ date: 2012-01-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
16
- requirement: &70172212915020 !ruby/object:Gem::Requirement
16
+ requirement: &70207780914120 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2.6'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70172212915020
24
+ version_requirements: *70207780914120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitap
27
- requirement: &70172212914080 !ruby/object:Gem::Requirement
27
+ requirement: &70207780913080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0.3'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70172212914080
35
+ version_requirements: *70207780913080
36
36
  description: Minitest patch for pretty (and useful) output.
37
37
  email:
38
38
  - vladimir@tuzinsky.com