test 0.2.1 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- metadata +36 -112
- data/.gemspec +0 -152
- data/.gitignore +0 -7
- data/.ruby +0 -46
- data/.test +0 -11
- data/.yardopts +0 -7
- data/Assembly +0 -46
- data/COPYING.rdoc +0 -31
- data/HISTORY.md +0 -29
- data/LICENSE.txt +0 -25
- data/MANIFEST +0 -37
- data/PROFILE +0 -31
- data/README.md +0 -110
- data/VERSION +0 -1
- data/bin/ruby-test +0 -4
- data/lib/test.rb +0 -3
- data/lib/test/autorun.rb +0 -18
- data/lib/test/cli.rb +0 -110
- data/lib/test/code_snippet.rb +0 -93
- data/lib/test/config.rb +0 -72
- data/lib/test/core_ext.rb +0 -9
- data/lib/test/core_ext/assertion.rb +0 -30
- data/lib/test/core_ext/exception.rb +0 -8
- data/lib/test/core_ext/string.rb +0 -30
- data/lib/test/rake.rb +0 -124
- data/lib/test/recorder.rb +0 -53
- data/lib/test/reporters/abstract.rb +0 -268
- data/lib/test/reporters/abstract_hash.rb +0 -224
- data/lib/test/reporters/dotprogress.rb +0 -89
- data/lib/test/reporters/html.rb +0 -155
- data/lib/test/reporters/outline.rb +0 -211
- data/lib/test/reporters/progress.rb +0 -197
- data/lib/test/reporters/summary.rb +0 -145
- data/lib/test/reporters/tap.rb +0 -61
- data/lib/test/reporters/tapj.rb +0 -53
- data/lib/test/reporters/tapy.rb +0 -53
- data/lib/test/reporters/test.rb +0 -51
- data/lib/test/runner.rb +0 -342
- data/site/assets/images/test_pattern.jpg +0 -0
- data/site/index.html +0 -77
- data/spec/01_test.md +0 -29
- data/spec/02_case.md +0 -34
- data/spec/applique/ruby-test.rb +0 -2
- data/test/basic_case.rb +0 -11
- data/try/raw_example.rb +0 -41
- data/work/NOTES.md +0 -17
data/HISTORY.md
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# RELEASE HISTORY
|
2
|
-
|
3
|
-
## 0.2.0 / 2011-08-10
|
4
|
-
|
5
|
-
With this release Ruby Test is essentially feature complete. Of course there
|
6
|
-
are plenty of tweaks and improvements yet to come, but Ruby Test is fully usable
|
7
|
-
at this point. Only one major aspect of the design remains in question --the
|
8
|
-
way per-testcase "before and after all" advice is handled. Other than that
|
9
|
-
the API fairly solid, even as this early state of development. Always helps
|
10
|
-
when you have a spec to go by!
|
11
|
-
|
12
|
-
Changes:
|
13
|
-
|
14
|
-
* Use Config class to look-up .test file.
|
15
|
-
* Support hard testing, topic and pre-case setup.
|
16
|
-
* Add autorun.rb runner script.
|
17
|
-
* Add a test reporter to use for testing Ruby Test itself.
|
18
|
-
* Improved dotprogess reporter's handling of omissions.
|
19
|
-
* Add unit selection to test runner.
|
20
|
-
|
21
|
-
|
22
|
-
## 0.1.0 / 2011-07-30
|
23
|
-
|
24
|
-
First release of Ruby Test.
|
25
|
-
|
26
|
-
Changes:
|
27
|
-
|
28
|
-
* It's Your Birthday!
|
29
|
-
|
data/LICENSE.txt
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
BSD 2 Clause License
|
2
|
-
|
3
|
-
Copyright 2011 Thomas Sawyer. All rights reserved.
|
4
|
-
|
5
|
-
Redistribution and use in source and binary forms, with or without
|
6
|
-
modification, are permitted provided that the following conditions are met:
|
7
|
-
|
8
|
-
1. Redistributions of source code must retain the above copyright notice,
|
9
|
-
this list of conditions and the following disclaimer.
|
10
|
-
|
11
|
-
2. Redistributions in binary form must reproduce the above copyright
|
12
|
-
notice, this list of conditions and the following disclaimer in the
|
13
|
-
documentation and/or other materials provided with the distribution.
|
14
|
-
|
15
|
-
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
16
|
-
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
18
|
-
COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
19
|
-
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
20
|
-
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
21
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
22
|
-
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
23
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
24
|
-
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
-
|
data/MANIFEST
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
#!mast .ruby .test .yaropts bin lib spec test [A-Z][A-Z]*
|
2
|
-
.ruby
|
3
|
-
.test
|
4
|
-
bin/ruby-test
|
5
|
-
lib/test/autorun.rb
|
6
|
-
lib/test/cli.rb
|
7
|
-
lib/test/code_snippet.rb
|
8
|
-
lib/test/config.rb
|
9
|
-
lib/test/core_ext/assertion.rb
|
10
|
-
lib/test/core_ext/exception.rb
|
11
|
-
lib/test/core_ext/string.rb
|
12
|
-
lib/test/core_ext.rb
|
13
|
-
lib/test/rake.rb
|
14
|
-
lib/test/recorder.rb
|
15
|
-
lib/test/reporters/abstract.rb
|
16
|
-
lib/test/reporters/abstract_hash.rb
|
17
|
-
lib/test/reporters/dotprogress.rb
|
18
|
-
lib/test/reporters/html.rb
|
19
|
-
lib/test/reporters/outline.rb
|
20
|
-
lib/test/reporters/progress.rb
|
21
|
-
lib/test/reporters/summary.rb
|
22
|
-
lib/test/reporters/tap.rb
|
23
|
-
lib/test/reporters/tapj.rb
|
24
|
-
lib/test/reporters/tapy.rb
|
25
|
-
lib/test/reporters/test.rb
|
26
|
-
lib/test/runner.rb
|
27
|
-
lib/test.rb
|
28
|
-
spec/01_test.md
|
29
|
-
spec/02_case.md
|
30
|
-
spec/applique/ruby-test.rb
|
31
|
-
test/basic_case.rb
|
32
|
-
PROFILE
|
33
|
-
LICENSE.txt
|
34
|
-
HISTORY.md
|
35
|
-
README.md
|
36
|
-
VERSION
|
37
|
-
COPYING.rdoc
|
data/PROFILE
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name : test
|
3
|
-
title : Ruby Test
|
4
|
-
summary: Ruby Universal Test Harness
|
5
|
-
created: 2011-07-23
|
6
|
-
|
7
|
-
description:
|
8
|
-
Ruby Test is a universal test harness for Ruby.
|
9
|
-
It can handle any compliant test framework,
|
10
|
-
even running tests from multiple frameworks
|
11
|
-
in a single pass.
|
12
|
-
|
13
|
-
authors:
|
14
|
-
- Thomas Sawyer <transfire@gmail.com>
|
15
|
-
|
16
|
-
requirements:
|
17
|
-
- ansi
|
18
|
-
- detroit (build)
|
19
|
-
- qed (test)
|
20
|
-
|
21
|
-
resources:
|
22
|
-
home: http://rubyworks.github.com/test
|
23
|
-
code: http://github.com/rubyworks/test
|
24
|
-
mail: http://groups.google.com/group/rubyworks-mailinglist
|
25
|
-
|
26
|
-
repositories:
|
27
|
-
upstream: git@github.com:rubyworks/test.git
|
28
|
-
|
29
|
-
copyrights:
|
30
|
-
- 2011 Thomas Sawyer, RubyWorks (FreeBSD)
|
31
|
-
|
data/README.md
DELETED
@@ -1,110 +0,0 @@
|
|
1
|
-
# Ruby Test
|
2
|
-
|
3
|
-
[Homepage](http://rubyworks.github.com/test) ·
|
4
|
-
[User Guide](http://wiki.github.com/rubyworks/test) ·
|
5
|
-
[Development](http://github.com/rubyworks/test) ·
|
6
|
-
[Issues](http://github.com/rubyworks/test/issues)
|
7
|
-
|
8
|
-
## Description
|
9
|
-
|
10
|
-
Ruby Test is a universal test harness for use by any Ruby test framework.
|
11
|
-
It defines a simple specification for compliance, which allows Ruby Test
|
12
|
-
to run the framework's tests, and even test across multiple frameworks
|
13
|
-
in a single pass.
|
14
|
-
|
15
|
-
## Specification
|
16
|
-
|
17
|
-
Ruby Test defines a straight-forward specification that any test framework can
|
18
|
-
easily support which allows Ruby Test to run the frameworks tests through a
|
19
|
-
single uniform user interface.
|
20
|
-
|
21
|
-
The universal access point for testing is the `$TEST_SUITE` global array. A test
|
22
|
-
framework need only add compliant test objects to `$TEST_SUITE`.
|
23
|
-
Ruby Test will iterate through these objects. If a test object responds to
|
24
|
-
`#call`, it is run as a test procedure. If it responds to `#each` it is iterated
|
25
|
-
over as a test case with each entry handled in the same manner. All test
|
26
|
-
objects must respond to `#to_s` so their description can be used in test
|
27
|
-
reports.
|
28
|
-
|
29
|
-
Any raised exception that responds to `#assertion?` in the affirmative is taken
|
30
|
-
to be a failed assertion rather than simply an error. Ruby Test extends the
|
31
|
-
Exception class to support this method for all exceptions.
|
32
|
-
|
33
|
-
A test framework may raise a `NotImplementedError` to have a test recorded
|
34
|
-
as "pending" --a _todo_ item to remind the developer of tests that still
|
35
|
-
need to be written. The `NotImplementedError` is a standard Ruby exception
|
36
|
-
and a subclass of `ScriptError`.
|
37
|
-
|
38
|
-
If the `NotImplmentedError` responds in the affirmative to `#assertion?` then
|
39
|
-
the test is taken to be a purposeful _omission_, rather than simply pending.
|
40
|
-
|
41
|
-
That is the crux of Ruby Test specification. Ruby Test supports some
|
42
|
-
additional features that can makes its usage even more convenient.
|
43
|
-
See the [Wiki](http://github.com/rubyworks/test/wiki) for further details.
|
44
|
-
|
45
|
-
|
46
|
-
## Usage
|
47
|
-
|
48
|
-
There are a few ways to run tests. First, there is a command line tool:
|
49
|
-
|
50
|
-
$ ruby-test
|
51
|
-
|
52
|
-
The command line tool takes various options, use `--help` to see them.
|
53
|
-
Be sure to load in your test framework or framework's Ruby Test adapter.
|
54
|
-
|
55
|
-
Preconfigurations can be defined in a `.test` file, e.g.
|
56
|
-
|
57
|
-
Test.run 'default' do |r|
|
58
|
-
r.format = 'progress'
|
59
|
-
r.requires << 'lemon'
|
60
|
-
r.files << 'test/*_case.rb'
|
61
|
-
end
|
62
|
-
|
63
|
-
There is a 'test/autorun.rb' library script can be loaded which creates an
|
64
|
-
`at_exit` procedure.
|
65
|
-
|
66
|
-
$ ruby -rtest/autorun
|
67
|
-
|
68
|
-
And there is a Rake task.
|
69
|
-
|
70
|
-
require 'test/rake'
|
71
|
-
|
72
|
-
A Detroit plugin is in the works and should be available soon.
|
73
|
-
|
74
|
-
|
75
|
-
## Installation
|
76
|
-
|
77
|
-
Ruby Test is available as Gem package.
|
78
|
-
|
79
|
-
$ gem install test
|
80
|
-
|
81
|
-
|
82
|
-
## Requirements
|
83
|
-
|
84
|
-
Ruby test uses the [ANSI](http://rubyworks.github.com/ansi) gem for color output.
|
85
|
-
|
86
|
-
Because of the "foundational" nature of this library we will look at removing
|
87
|
-
this dependencies for future versions, but for early development the
|
88
|
-
requirements does the job and does it well.
|
89
|
-
|
90
|
-
|
91
|
-
## Development
|
92
|
-
|
93
|
-
Ruby Test is still a "nuby" gem. Please feel OBLIGATED to help improve it ;-)
|
94
|
-
|
95
|
-
Ruby Test is a [RubyWorks](http://rubyworks.github.com) project. If you can't
|
96
|
-
contribue code, you can still help out by contributing to our development fund.
|
97
|
-
|
98
|
-
|
99
|
-
## Reference Material
|
100
|
-
|
101
|
-
[1] [Standard Definition Of Unit Test](http://c2.com/cgi/wiki?StandardDefinitionOfUnitTest)
|
102
|
-
|
103
|
-
|
104
|
-
## Copyrights
|
105
|
-
|
106
|
-
Copyright (c) 2011 Thomas Sawyer, Rubyworks
|
107
|
-
|
108
|
-
Made available according to the terms of the <b>FreeBSD license</b>.
|
109
|
-
|
110
|
-
See COPYING.rdoc for details.
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.1
|
data/bin/ruby-test
DELETED
data/lib/test.rb
DELETED
data/lib/test/autorun.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
$TEST_SUITE = [] unless defined?($TEST_SUITE)
|
2
|
-
|
3
|
-
at_exit {
|
4
|
-
if RUBY_VERSION < '1.9'
|
5
|
-
require 'test/runner'
|
6
|
-
else
|
7
|
-
require_relative 'runner'
|
8
|
-
end
|
9
|
-
|
10
|
-
suite = $TEST_SUITE
|
11
|
-
options = {
|
12
|
-
:format => ENV['ruby-test-format'] # TODO: better name?
|
13
|
-
}
|
14
|
-
|
15
|
-
runner = Test::Runner.new(suite, options)
|
16
|
-
success = runner.run
|
17
|
-
exit -1 unless success
|
18
|
-
}
|
data/lib/test/cli.rb
DELETED
@@ -1,110 +0,0 @@
|
|
1
|
-
module Test
|
2
|
-
|
3
|
-
require 'test/config'
|
4
|
-
require 'test/runner'
|
5
|
-
|
6
|
-
# Command line interface.
|
7
|
-
class Runner
|
8
|
-
|
9
|
-
# Test runner command line interface.
|
10
|
-
#
|
11
|
-
def self.cli(*argv)
|
12
|
-
runner = new
|
13
|
-
|
14
|
-
Test::Config.load
|
15
|
-
|
16
|
-
cli_options(runner, argv)
|
17
|
-
|
18
|
-
begin
|
19
|
-
# Add standard location if it exists.
|
20
|
-
$LOAD_PATH.unshift(File.expand_path('lib')) if File.directory?('lib')
|
21
|
-
|
22
|
-
success = runner.run
|
23
|
-
exit -1 unless success
|
24
|
-
rescue => error
|
25
|
-
raise error if $DEBUG
|
26
|
-
$stderr.puts('ERROR: ' + error.to_s)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
#
|
31
|
-
def self.cli_options(runner, argv)
|
32
|
-
require 'optparse'
|
33
|
-
|
34
|
-
config = Test.config.dup
|
35
|
-
config_loaded = false
|
36
|
-
|
37
|
-
common = config.delete('common')
|
38
|
-
default = config.delete('default')
|
39
|
-
|
40
|
-
common.call(runner) if common
|
41
|
-
|
42
|
-
OptionParser.new do |opt|
|
43
|
-
opt.banner = "Usage: #{$0} [options] [files ...]"
|
44
|
-
|
45
|
-
unless config.empty?
|
46
|
-
opt.separator "PRESET OPTIONS:"
|
47
|
-
config.each do |name, block|
|
48
|
-
opt.on("--#{name}") do
|
49
|
-
block.call(runner)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
opt.separator "CONFIG OPTIONS:"
|
55
|
-
|
56
|
-
opt.on '-f', '--format NAME', 'report format' do |name|
|
57
|
-
runner.format = name
|
58
|
-
end
|
59
|
-
opt.on '-y', '--tapy', 'shortcut for -f tapy' do
|
60
|
-
runner.format = 'tapy'
|
61
|
-
end
|
62
|
-
opt.on '-j', '--tapj', 'shortcut for -f tapj' do
|
63
|
-
runner.format = 'tapj'
|
64
|
-
end
|
65
|
-
|
66
|
-
opt.on '-t', '--tag TAG', 'select tests by tag' do |tag|
|
67
|
-
runner.tags << tag
|
68
|
-
end
|
69
|
-
opt.on '-u', '--unit TAG', 'select tests by software unit' do |unit|
|
70
|
-
runner.units << unit
|
71
|
-
end
|
72
|
-
opt.on '-m', '--match TEXT', 'select tests by description' do |text|
|
73
|
-
runner.match << text
|
74
|
-
end
|
75
|
-
|
76
|
-
opt.on '-I', '--loadpath PATH', 'add to $LOAD_PATH' do |paths|
|
77
|
-
paths.split(/[:;]/).reverse_each do |path|
|
78
|
-
$LOAD_PATH.unshift path
|
79
|
-
end
|
80
|
-
end
|
81
|
-
opt.on '-r', '--require FILE', 'require file' do |file|
|
82
|
-
require file
|
83
|
-
end
|
84
|
-
opt.on '-v' , '--verbose', 'provide extra detailed report' do
|
85
|
-
runner.verbose = true
|
86
|
-
end
|
87
|
-
#opt.on('--log DIRECTORY', 'log directory'){ |dir|
|
88
|
-
# options[:log] = dir
|
89
|
-
#}
|
90
|
-
opt.on_tail("--[no-]ansi" , 'turn on/off ANSI colors'){ |v| $ansi = v }
|
91
|
-
opt.on_tail("--debug" , 'turn on debugging mode'){ $DEBUG = true }
|
92
|
-
#opt.on_tail("--about" , 'display information about lemon'){
|
93
|
-
# puts "Ruby Test v#{VERSION}"
|
94
|
-
# puts "#{COPYRIGHT}"
|
95
|
-
# exit
|
96
|
-
#}
|
97
|
-
opt.on_tail('-h', '--help', 'display this help message'){
|
98
|
-
puts opt
|
99
|
-
exit
|
100
|
-
}
|
101
|
-
end.parse!(argv)
|
102
|
-
|
103
|
-
default.call(runner) if default && !config_loaded
|
104
|
-
|
105
|
-
runner.files.replace(argv) unless argv.empty?
|
106
|
-
end
|
107
|
-
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|
data/lib/test/code_snippet.rb
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
module Test
|
2
|
-
|
3
|
-
# Thanks goes to Suraj N. Kurapati for the origins of this code.
|
4
|
-
#
|
5
|
-
class CodeSnippet
|
6
|
-
|
7
|
-
def self.cache(file)
|
8
|
-
@cache ||= {}
|
9
|
-
@cache[file] ||= File.readlines(file)
|
10
|
-
end
|
11
|
-
|
12
|
-
#
|
13
|
-
def self.from_backtrace(backtrace)
|
14
|
-
backtrace.first =~ /(.+?):(\d+(?=:|\z))/ or return ""
|
15
|
-
file, line = $1, $2.to_i
|
16
|
-
new(file, line)
|
17
|
-
end
|
18
|
-
|
19
|
-
#
|
20
|
-
def self.from_error(exception)
|
21
|
-
backtrace = exception.backtrace
|
22
|
-
from_backtrace(backtrace)
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
def initialize(file, line)
|
27
|
-
@file = file
|
28
|
-
@line = line || 1
|
29
|
-
@code = CodeSnippet.cache(file)
|
30
|
-
end
|
31
|
-
|
32
|
-
#
|
33
|
-
attr :file
|
34
|
-
|
35
|
-
#
|
36
|
-
attr :line
|
37
|
-
|
38
|
-
#
|
39
|
-
attr :code
|
40
|
-
|
41
|
-
#
|
42
|
-
alias :source :code
|
43
|
-
|
44
|
-
#
|
45
|
-
def to_str
|
46
|
-
code[line-1].strip
|
47
|
-
end
|
48
|
-
|
49
|
-
#
|
50
|
-
#--
|
51
|
-
# TODO: ensure proper alignment by zero-padding line numbers
|
52
|
-
#++
|
53
|
-
def to_s(radius=2)
|
54
|
-
r = range(radius)
|
55
|
-
f = " %2s %0#{r.last.to_s.length}d %s"
|
56
|
-
r.map do |n|
|
57
|
-
f % [('=>' if n == line), n, code[n-1].chomp]
|
58
|
-
end.join("\n")
|
59
|
-
end
|
60
|
-
|
61
|
-
#
|
62
|
-
def to_a(radius=2)
|
63
|
-
r = range(radius)
|
64
|
-
r.map do |n|
|
65
|
-
code[n-1].chomp
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
#
|
70
|
-
def to_omap(radius=2)
|
71
|
-
a = []
|
72
|
-
r = range(radius)
|
73
|
-
r.each do |n|
|
74
|
-
a << {n => code[n-1].chomp}
|
75
|
-
end
|
76
|
-
a
|
77
|
-
end
|
78
|
-
|
79
|
-
#
|
80
|
-
def succ
|
81
|
-
line += 1
|
82
|
-
end
|
83
|
-
|
84
|
-
private
|
85
|
-
|
86
|
-
#
|
87
|
-
def range(radius)
|
88
|
-
[line - radius, 1].max..[line + radius, source.length].min
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|