cutest 0.1.0 → 0.1.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/README.markdown +3 -1
- data/Rakefile +1 -1
- data/cutest.gemspec +2 -2
- data/lib/cutest.rb +17 -16
- data/test/run.rb +60 -0
- metadata +4 -3
data/README.markdown
CHANGED
@@ -80,8 +80,10 @@ To run the tests:
|
|
80
80
|
|
81
81
|
If you get an error, the report will look like this:
|
82
82
|
|
83
|
+
>> should preserve the original values from the setup
|
83
84
|
=> assert 24 == params[:a]
|
84
|
-
|
85
|
+
test/a_test.rb +14
|
86
|
+
|
85
87
|
|
86
88
|
Instead of a description of the error, you get to see the assertion
|
87
89
|
that failed along with the file and line number. Adding a debugger and
|
data/Rakefile
CHANGED
data/cutest.gemspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cutest"
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.1"
|
4
4
|
s.summary = "Forking tests."
|
5
5
|
s.description = "Run tests in separate processes to avoid shared state."
|
6
6
|
s.authors = ["Damian Janowski", "Michel Martens"]
|
7
7
|
s.email = ["djanowski@dimaion.com", "michel@soveran.com"]
|
8
8
|
s.homepage = "http://github.com/djanowski/cutest"
|
9
|
-
s.files = ["LICENSE", "README.markdown", "Rakefile", "lib/cutest.rb", "cutest.gemspec", "test/assert.rb", "test/assert_raise.rb", "test/prepare.rb", "test/scopes.rb", "test/setup.rb"]
|
9
|
+
s.files = ["LICENSE", "README.markdown", "Rakefile", "lib/cutest.rb", "cutest.gemspec", "test/assert.rb", "test/assert_raise.rb", "test/prepare.rb", "test/run.rb", "test/scopes.rb", "test/setup.rb"]
|
10
10
|
s.add_dependency "batch", "~> 0.0.3"
|
11
11
|
end
|
data/lib/cutest.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "batch"
|
2
2
|
|
3
3
|
class Cutest < Batch
|
4
|
-
VERSION = "0.1.
|
4
|
+
VERSION = "0.1.1"
|
5
5
|
|
6
6
|
def report_error(_, error)
|
7
7
|
$stderr.puts "#{error}\n"
|
@@ -16,10 +16,11 @@ class Cutest < Batch
|
|
16
16
|
|
17
17
|
begin
|
18
18
|
load(file, anonymous)
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
|
20
|
+
rescue Exception => e
|
21
|
+
error = [e.message] +
|
22
|
+
e.backtrace.take_while { |line| !line.index(__FILE__) }
|
23
|
+
write.puts error.join("\n")
|
23
24
|
write.close
|
24
25
|
end
|
25
26
|
end
|
@@ -34,7 +35,11 @@ class Cutest < Batch
|
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
37
|
-
class AssertionFailed < StandardError
|
38
|
+
class AssertionFailed < StandardError
|
39
|
+
def backtrace
|
40
|
+
[]
|
41
|
+
end
|
42
|
+
end
|
38
43
|
|
39
44
|
class Scope
|
40
45
|
def initialize(&scope)
|
@@ -124,17 +129,13 @@ private
|
|
124
129
|
end
|
125
130
|
end
|
126
131
|
|
127
|
-
# Stop the tests and raise an error where the message is the last line
|
128
|
-
# before flunking.
|
129
|
-
def flunk
|
130
|
-
|
131
|
-
ex.set_backtrace(caller)
|
132
|
-
|
133
|
-
file, line = ex.backtrace.shift.split(":")
|
132
|
+
# Stop the tests and raise an error where the message is the last line
|
133
|
+
# executed before flunking.
|
134
|
+
def flunk
|
135
|
+
file, line = caller[1].split(":")
|
134
136
|
code = File.readlines(file)[line.to_i - 1]
|
137
|
+
msg = ">> #{@_test}\n=> #{code.strip}\n #{file} +#{line}"
|
135
138
|
|
136
|
-
|
137
|
-
|
138
|
-
raise ex
|
139
|
+
raise Cutest::AssertionFailed.new(msg)
|
139
140
|
end
|
140
141
|
end
|
data/test/run.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require "stringio"
|
2
|
+
|
3
|
+
def capture
|
4
|
+
stdout, $stdout = $stdout, StringIO.new
|
5
|
+
stderr, $stderr = $stderr, StringIO.new
|
6
|
+
yield
|
7
|
+
[$stdout.string, $stderr.string]
|
8
|
+
ensure
|
9
|
+
$stdout = stdout
|
10
|
+
$stderr = stderr
|
11
|
+
end
|
12
|
+
|
13
|
+
test "output of successful run" do
|
14
|
+
expected = " 0% .\n100% \n"
|
15
|
+
|
16
|
+
stdout, stderr = capture do
|
17
|
+
Cutest.run(Dir["test/fixtures/success.rb"])
|
18
|
+
end
|
19
|
+
|
20
|
+
assert stdout == expected
|
21
|
+
end
|
22
|
+
|
23
|
+
test "output of failed run" do
|
24
|
+
alternatives = [
|
25
|
+
[" 0% E\n100% \n", "\nSome errors occured:\n\n>> failed assertion\n=> assert false\n test/fixtures/failure.rb +2\n\n"],
|
26
|
+
[" 0% E\n100% \n", "\nSome errors occured:\n\n>> failed assertion\n=> assert false\n ./test/fixtures/failure.rb +2\n\n"]
|
27
|
+
]
|
28
|
+
|
29
|
+
stdout, stderr = capture do
|
30
|
+
Cutest.run(Dir["test/fixtures/failure.rb"])
|
31
|
+
end
|
32
|
+
|
33
|
+
assert alternatives.any? { |expected| [stdout, stderr] == expected }
|
34
|
+
end
|
35
|
+
|
36
|
+
test "output of failed run on a custom assertion" do
|
37
|
+
alternatives = [
|
38
|
+
[" 0% E\n100% \n", "\nSome errors occured:\n\n>> failed custom assertion\n=> assert_empty \"foo\"\n test/fixtures/fail_custom_assertion.rb +6\n\n"],
|
39
|
+
[" 0% E\n100% \n", "\nSome errors occured:\n\n>> failed custom assertion\n=> assert_empty \"foo\"\n ./test/fixtures/fail_custom_assertion.rb +6\n\n"]
|
40
|
+
]
|
41
|
+
|
42
|
+
stdout, stderr = capture do
|
43
|
+
Cutest.run(Dir["test/fixtures/fail_custom_assertion.rb"])
|
44
|
+
end
|
45
|
+
|
46
|
+
assert alternatives.any? { |expected| [stdout, stderr] == expected }
|
47
|
+
end
|
48
|
+
|
49
|
+
test "output of failed run on an exception" do
|
50
|
+
alternatives = [
|
51
|
+
[" 0% E\n100% \n", "\nSome errors occured:\n\nOops\ntest/fixtures/exception.rb:2:in `foo'\ntest/fixtures/exception.rb:6:in `block in <top (required)>'\n\n"],
|
52
|
+
[" 0% E\n100% \n", "\nSome errors occured:\n\nOops\n./test/fixtures/exception.rb:2:in `foo'\n./test/fixtures/exception.rb:6\n\n"]
|
53
|
+
]
|
54
|
+
|
55
|
+
stdout, stderr = capture do
|
56
|
+
Cutest.run(Dir["test/fixtures/exception.rb"])
|
57
|
+
end
|
58
|
+
|
59
|
+
assert alternatives.any? { |expected| [stdout, stderr] == expected }
|
60
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Damian Janowski
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-22 00:00:00 -03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- test/assert.rb
|
53
53
|
- test/assert_raise.rb
|
54
54
|
- test/prepare.rb
|
55
|
+
- test/run.rb
|
55
56
|
- test/scopes.rb
|
56
57
|
- test/setup.rb
|
57
58
|
has_rdoc: true
|