baretest 0.4.0 → 0.4.1
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/MANIFEST.txt +0 -1
- data/lib/baretest.rb +2 -2
- data/lib/baretest/run/spec.rb +3 -1
- data/lib/baretest/run/tap.rb +3 -2
- data/lib/baretest/version.rb +1 -1
- metadata +4 -5
- data/lib/baretest/run/profile.rb +0 -151
data/MANIFEST.txt
CHANGED
data/lib/baretest.rb
CHANGED
@@ -84,14 +84,14 @@ module BareTest
|
|
84
84
|
|
85
85
|
# Enure that the suite is run wiht a minimal version of baretest
|
86
86
|
def self.require_baretest(version)
|
87
|
-
if (version.split(".").map { |s| s.to_i } <=> BareTest::VERSION.to_a)
|
87
|
+
if (version.split(".").map { |s| s.to_i } <=> BareTest::VERSION.to_a) > 0 then
|
88
88
|
abort "Requires baretest version #{version}, you have #{BareTest::VERSION}"
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
92
|
# Ensure that the suite is run with a minimal version of ruby
|
93
93
|
def self.require_ruby(version)
|
94
|
-
if (version.split(".").map { |s| s.to_i } <=> RUBY_VERSION.split(".").map { |s| s.to_i })
|
94
|
+
if (version.split(".").map { |s| s.to_i } <=> RUBY_VERSION.split(".").map { |s| s.to_i }) > 0 then
|
95
95
|
abort "Requires ruby version #{version}, you have #{RUBY_VERSION}"
|
96
96
|
end
|
97
97
|
end
|
data/lib/baretest/run/spec.rb
CHANGED
@@ -24,12 +24,14 @@ module BareTest
|
|
24
24
|
return super unless suite.description
|
25
25
|
puts("\n"+' '*@depth+suite.description)
|
26
26
|
@depth += 1
|
27
|
-
super
|
27
|
+
rv = super
|
28
28
|
@depth -= 1
|
29
|
+
rv
|
29
30
|
end
|
30
31
|
|
31
32
|
def run_test(assertion, setup)
|
32
33
|
puts(' '*@depth+assertion.description)
|
34
|
+
BareTest::Status.new(assertion, :success)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
data/lib/baretest/run/tap.rb
CHANGED
@@ -21,7 +21,6 @@ module BareTest
|
|
21
21
|
count = proc { |acc,csuite|
|
22
22
|
acc+
|
23
23
|
csuite.assertions.size+
|
24
|
-
csuite.skipped.size+
|
25
24
|
csuite.suites.map { |d,suite| suite }.inject(0, &count)
|
26
25
|
}
|
27
26
|
puts "1..#{count[0, suite]}"
|
@@ -34,8 +33,10 @@ module BareTest
|
|
34
33
|
printf "%sok %d - %s%s\n",
|
35
34
|
rv.status == :success ? '' : 'not ',
|
36
35
|
@current+=1,
|
37
|
-
|
36
|
+
assertion.description,
|
38
37
|
rv.status == :success ? '' : " # #{rv.status}"
|
38
|
+
|
39
|
+
rv
|
39
40
|
end
|
40
41
|
end
|
41
42
|
end
|
data/lib/baretest/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 4
|
8
|
-
-
|
9
|
-
version: 0.4.
|
8
|
+
- 1
|
9
|
+
version: 0.4.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Stefan Rusterholz
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-16 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -71,7 +71,6 @@ files:
|
|
71
71
|
- lib/baretest/run/cli.rb
|
72
72
|
- lib/baretest/run/minimal.rb
|
73
73
|
- lib/baretest/run/none.rb
|
74
|
-
- lib/baretest/run/profile.rb
|
75
74
|
- lib/baretest/run/spec.rb
|
76
75
|
- lib/baretest/run/tap.rb
|
77
76
|
- lib/baretest/run/xml.rb
|
@@ -129,7 +128,7 @@ rdoc_options:
|
|
129
128
|
- --tab-width
|
130
129
|
- "2"
|
131
130
|
- -t
|
132
|
-
- baretest-0.4.
|
131
|
+
- baretest-0.4.1
|
133
132
|
require_paths:
|
134
133
|
- lib
|
135
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
data/lib/baretest/run/profile.rb
DELETED
@@ -1,151 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#--
|
3
|
-
# Copyright 2009-2010 by Stefan Rusterholz.
|
4
|
-
# All rights reserved.
|
5
|
-
# See LICENSE.txt for permissions.
|
6
|
-
#++
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
module BareTest
|
11
|
-
class Run
|
12
|
-
|
13
|
-
# CLI runner is invoked with `-f cli` or `--format cli`.
|
14
|
-
# It is intended for use with an interactive shell, to provide a comfortable, human
|
15
|
-
# readable output.
|
16
|
-
# It prints colored output (requires ANSI colors compatible terminal).
|
17
|
-
#
|
18
|
-
module Profile # :nodoc:
|
19
|
-
Formats = {
|
20
|
-
:pending => "\e[43m%9s\e[0m %s%s (%s)\n",
|
21
|
-
:skipped => "\e[43m%9s\e[0m %s%s (%s)\n",
|
22
|
-
:success => "\e[42m%9s\e[0m %s%s (%s)\n",
|
23
|
-
:failure => "\e[41m%9s\e[0m %s%s (%s)\n",
|
24
|
-
:error => "\e[37;40;1m%9s\e[0m %s%s (%s)\n" # ]]]]]]]] - bbedit hates open brackets...
|
25
|
-
}
|
26
|
-
|
27
|
-
FooterFormats = {
|
28
|
-
:incomplete => "\e[43m%9s\e[0m\n",
|
29
|
-
:success => "\e[42m%9s\e[0m\n",
|
30
|
-
:failure => "\e[41m%9s\e[0m\n",
|
31
|
-
:error => "\e[37;40;1m%9s\e[0m\n" # ]]]]]]]] - bbedit hates open brackets...
|
32
|
-
}
|
33
|
-
|
34
|
-
def run_all(*args)
|
35
|
-
@depth = 0
|
36
|
-
puts "Running all tests#{' verbosly' if $VERBOSE}"
|
37
|
-
start = Time.now
|
38
|
-
super # run all suites
|
39
|
-
status = global_status
|
40
|
-
printf "\n%2$d tests run in %1$.1fs\n%3$d successful, %4$d pending, %5$d failures, %6$d errors\n",
|
41
|
-
Time.now-start, *@count.values_at(:test, :success, :pending, :failure, :error)
|
42
|
-
print "Final status: "
|
43
|
-
printf FooterFormats[status], status_label(status)
|
44
|
-
end
|
45
|
-
|
46
|
-
def run_suite(suite)
|
47
|
-
return super unless suite.description
|
48
|
-
skipped = suite.skipped.size
|
49
|
-
case size = suite.assertions.size
|
50
|
-
when 0
|
51
|
-
if skipped.zero? then
|
52
|
-
puts "\n \e[1m#{' '*@depth+suite.description}\e[0m"
|
53
|
-
else
|
54
|
-
puts "\n \e[1m#{' '*@depth+suite.description}\e[0m (#{skipped} skipped)"
|
55
|
-
end
|
56
|
-
when 1
|
57
|
-
if skipped.zero? then
|
58
|
-
puts "\n \e[1m#{' '*@depth+suite.description}\e[0m (1 test)"
|
59
|
-
else
|
60
|
-
puts "\n \e[1m#{' '*@depth+suite.description}\e[0m (1 test/#{skipped} skipped)"
|
61
|
-
end
|
62
|
-
else
|
63
|
-
if skipped.zero? then
|
64
|
-
puts "\n \e[1m#{' '*@depth+suite.description}\e[0m (#{size} tests)"
|
65
|
-
else
|
66
|
-
puts "\n \e[1m#{' '*@depth+suite.description}\e[0m (#{size} tests/#{skipped} skipped)"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
@depth += 1
|
70
|
-
super(suite) # run the suite
|
71
|
-
@depth -= 1
|
72
|
-
end
|
73
|
-
|
74
|
-
def run_test(assertion, setup)
|
75
|
-
start = Time.now
|
76
|
-
rv = super # run the assertion
|
77
|
-
times = [Time.now-start]
|
78
|
-
|
79
|
-
if times.first < 1e-3 then
|
80
|
-
iters = 19
|
81
|
-
elsif times.first < 1
|
82
|
-
iters = 2
|
83
|
-
else
|
84
|
-
iters = 0
|
85
|
-
end
|
86
|
-
|
87
|
-
iters.times do
|
88
|
-
assertion.reset
|
89
|
-
start = Time.now
|
90
|
-
assertion.execute
|
91
|
-
times << (Time.now-start)
|
92
|
-
end
|
93
|
-
|
94
|
-
time = times.inject{ |a,b| a+b }/iters
|
95
|
-
|
96
|
-
indent = ' '+' '*@depth
|
97
|
-
message = []
|
98
|
-
deeper = []
|
99
|
-
|
100
|
-
printf(
|
101
|
-
Formats[rv.status],
|
102
|
-
status_label(rv.status),
|
103
|
-
' '*@depth,
|
104
|
-
rv.description,
|
105
|
-
humanized_duration(time)
|
106
|
-
)
|
107
|
-
if rv.status == :error then
|
108
|
-
message = (rv.exception.message || "no error message given").split("\n")
|
109
|
-
deeper = $VERBOSE ? rv.exception.backtrace : rv.exception.backtrace.first(1)
|
110
|
-
elsif rv.status == :failure
|
111
|
-
message = (rv.reason || "no failure reason given").split("\n")
|
112
|
-
deeper = ["#{rv.file}:#{rv.line}"]
|
113
|
-
end
|
114
|
-
message.each do |line| print(indent, line, "\n") end
|
115
|
-
deeper.each do |line| print(indent, ' ', line, "\n") end
|
116
|
-
|
117
|
-
rv
|
118
|
-
end
|
119
|
-
|
120
|
-
def word_wrap(string, cols)
|
121
|
-
str.scan(/[^ ]+ /)
|
122
|
-
end
|
123
|
-
|
124
|
-
def status_label(status)
|
125
|
-
status.to_s.capitalize.center(9)
|
126
|
-
end
|
127
|
-
|
128
|
-
def humanized_duration(duration)
|
129
|
-
case
|
130
|
-
when duration < 1e-3
|
131
|
-
"%dµs" % (duration*1e6)
|
132
|
-
when duration < 1
|
133
|
-
"%.1fms" % (duration*1e3)
|
134
|
-
when duration < 60
|
135
|
-
"%.1fs" % duration
|
136
|
-
else
|
137
|
-
minutes, seconds = *duration.divmod(60)
|
138
|
-
hours, minutes = *minutes.divmod(60)
|
139
|
-
# lets assume unit tests don't take more than a day :)
|
140
|
-
if hours > 0 then
|
141
|
-
"#{hours}h #{minutes}m #{seconds}s"
|
142
|
-
else
|
143
|
-
"#{minutes}m #{seconds}s"
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
@format["baretest/run/profile"] = Run::Profile # register the extender
|
151
|
-
end
|