rubytest 0.5.4 → 0.6.0
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/.index +15 -3
- data/HISTORY.md +30 -0
- data/README.md +62 -38
- data/bin/ruby-test +7 -2
- data/bin/rubytest +7 -2
- data/lib/rubytest.rb +18 -3
- data/lib/rubytest.yml +65 -0
- data/lib/rubytest/autorun.rb +2 -14
- data/lib/rubytest/cli.rb +86 -87
- data/lib/rubytest/config.rb +381 -46
- data/lib/rubytest/rake.rb +72 -59
- data/lib/rubytest/runner.rb +80 -159
- data/test/basic_case.rb +2 -0
- data/{.ruby → test/helper.rb} +0 -0
- metadata +53 -4
- data/lib/rubytest/rc.rb +0 -8
data/.index
CHANGED
@@ -9,14 +9,26 @@ authors:
|
|
9
9
|
organizations: []
|
10
10
|
requirements:
|
11
11
|
- name: ansi
|
12
|
+
- groups:
|
13
|
+
- build
|
14
|
+
development: true
|
15
|
+
name: fire
|
12
16
|
- groups:
|
13
17
|
- build
|
14
18
|
development: true
|
15
19
|
name: detroit
|
20
|
+
- groups:
|
21
|
+
- build
|
22
|
+
development: true
|
23
|
+
name: dotopts
|
16
24
|
- groups:
|
17
25
|
- test
|
18
26
|
development: true
|
19
27
|
name: qed
|
28
|
+
- groups:
|
29
|
+
- test
|
30
|
+
development: true
|
31
|
+
name: ae
|
20
32
|
conflicts: []
|
21
33
|
alternatives: []
|
22
34
|
resources:
|
@@ -32,7 +44,7 @@ resources:
|
|
32
44
|
repositories:
|
33
45
|
- name: upstream
|
34
46
|
scm: git
|
35
|
-
uri: git@github.com:rubyworks/
|
47
|
+
uri: git@github.com:rubyworks/rubytest.git
|
36
48
|
categories: []
|
37
49
|
copyrights:
|
38
50
|
- holder: RubyWorks
|
@@ -45,9 +57,9 @@ paths:
|
|
45
57
|
created: '2011-07-23'
|
46
58
|
summary: Ruby Universal Test Harness
|
47
59
|
title: Ruby Test
|
48
|
-
version: 0.
|
60
|
+
version: 0.6.0
|
49
61
|
name: rubytest
|
50
62
|
description: ! "Ruby Test is a universal test harness for Ruby. It can handle any
|
51
63
|
compliant \ntest framework, even running tests from multiple frameworks in a single
|
52
64
|
pass."
|
53
|
-
date: '2013-
|
65
|
+
date: '2013-02-09'
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,35 @@
|
|
1
1
|
# RELEASE HISTORY
|
2
2
|
|
3
|
+
## 0.6.0 / 2013-02-10
|
4
|
+
|
5
|
+
This release of Ruby Test takes a hard step back and reconsiders how
|
6
|
+
to handle configuration from the ground up. Current users of Ruby Test
|
7
|
+
will probably have to make some adjustments. Our apologies for the extra
|
8
|
+
work. But the whole thing simply got more complicated than it needed to
|
9
|
+
be and it was decided that conventional simplicity, with the option
|
10
|
+
unconventional complexity, was the best approach.
|
11
|
+
|
12
|
+
To make a long story short... There is no default config file anymore.
|
13
|
+
The `-p/--profile` command line option has been removed; replaced by
|
14
|
+
a `-c/--config` option which requires a file relative to the working
|
15
|
+
directory. In addition the configuration API had been changed from `Test.run`
|
16
|
+
or `Test.configure`, to adopt the common convention, and it no longer takes
|
17
|
+
a profile name for an argument. `Test.run` still has the same interface as
|
18
|
+
`Test.configure` but it will now run tests immediately! So be sure to change
|
19
|
+
that if you used it the past. Lastly, Ruby Test now supports DotOpts out of
|
20
|
+
the box, so its easier then ever to setup default command line options.
|
21
|
+
|
22
|
+
Changes:
|
23
|
+
|
24
|
+
* Rename `Test.run` to `Test.configure` and remove profile argument.
|
25
|
+
* Add new `Test.run` to immediately run tests.
|
26
|
+
* Add `-c/--config` option for requiring project file.
|
27
|
+
* Add `-C` and `-R` options for changing directory.
|
28
|
+
* Add built-in support for DotOpts.
|
29
|
+
* Deprecate profiles, removing `-p/--profile` cli option.
|
30
|
+
* Deprecate Test::Runner configuration class methods.
|
31
|
+
|
32
|
+
|
3
33
|
## 0.5.4 / 2013-01-22
|
4
34
|
|
5
35
|
This release simply updates configuraiton code to work with RC v0.4.0.
|
data/README.md
CHANGED
@@ -5,15 +5,19 @@
|
|
5
5
|
[Development](http://github.com/rubyworks/rubytest) /
|
6
6
|
[Issues](http://github.com/rubyworks/rubytest/issues)
|
7
7
|
|
8
|
+
[](http://travis-ci.org/rubyworks/rubytest)
|
9
|
+
[](http://badge.fury.io/rb/rubytest)
|
10
|
+
|
11
|
+
|
8
12
|
## Description
|
9
13
|
|
10
|
-
Ruby Test is a universal test harness for Ruby
|
11
|
-
test framework. Ruby Test
|
12
|
-
|
14
|
+
Ruby Test is a universal test harness for Ruby developers. It can be used
|
15
|
+
by any Ruby test framework. You can think of Ruby Test as a *meta test framework*.
|
16
|
+
Ruby Test defines a straight-forward specification that any test framework
|
17
|
+
can utilize as it back-end. This makes it almost trivial to implement new
|
18
|
+
test frameworks. Ruby Test further allows tests from various frameworks
|
19
|
+
to all run through a single uniform user interface in a single pass.
|
13
20
|
|
14
|
-
Ruby Test defines a straight-forward specification that any test framework can
|
15
|
-
easily support which allows Ruby Test to run the frameworks tests through a
|
16
|
-
single uniform user interface in a single pass.
|
17
21
|
|
18
22
|
## Specification
|
19
23
|
|
@@ -25,10 +29,9 @@ over as a test case with each entry handled in the same manner. All test
|
|
25
29
|
objects must respond to `#to_s` so their description can be used in test
|
26
30
|
reports.
|
27
31
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
+
Ruby Test handles assertions with [BRASS](http://rubyworks.github.com/brass)
|
33
|
+
compliance. Any raised exception that responds to `#assertion?` in the
|
34
|
+
affirmative is taken to be a failed assertion rather than simply an error.
|
32
35
|
A test framework may raise a `NotImplementedError` to have a test recorded
|
33
36
|
as *todo* --a _pending_ exception to remind the developer of tests that still
|
34
37
|
need to be written. The `NotImplementedError` is a standard Ruby exception
|
@@ -42,42 +45,62 @@ additional features that can makes its usage even more convenient.
|
|
42
45
|
See the [Wiki](http://github.com/rubyworks/test/wiki) for further details.
|
43
46
|
|
44
47
|
|
45
|
-
##
|
48
|
+
## Installation
|
46
49
|
|
47
|
-
|
50
|
+
Ruby Test is available as a Gem package.
|
48
51
|
|
49
|
-
$ rubytest
|
52
|
+
$ gem install rubytest
|
50
53
|
|
51
|
-
|
52
|
-
|
54
|
+
Ruby Test is compliant with Setup.rb layout standard, so it can
|
55
|
+
also be installed in an FHS compliant fashion if necessary.
|
53
56
|
|
54
|
-
Preconfigurations can be defined in a `.test` file, e.g.
|
55
57
|
|
56
|
-
|
57
|
-
r.format = 'progress'
|
58
|
-
r.requires << 'lemon'
|
59
|
-
r.files << 'test/*_case.rb'
|
60
|
-
end
|
58
|
+
## Running Tests
|
61
59
|
|
62
|
-
There
|
63
|
-
|
60
|
+
There are a few ways to run tests. First, there is the command line tool
|
61
|
+
e.g.
|
64
62
|
|
65
|
-
$
|
63
|
+
$ rubytest test/test_*.rb
|
66
64
|
|
67
|
-
|
65
|
+
The command line tool takes various options, use `-h/--help` to see them.
|
68
66
|
|
69
|
-
|
67
|
+
When running tests, you need to be sure to load in your test framework
|
68
|
+
or your framework's Ruby Test adapter. This is usually done via a helper
|
69
|
+
script in the test files, but might also be done via command line options,
|
70
|
+
e.g.
|
70
71
|
|
71
|
-
|
72
|
+
$ rubytest -r lemon -r ae test/test_*.rb
|
72
73
|
|
73
|
-
|
74
|
+
Ruby Test supports [dotopts](http://rubyworks.github.com/dotopts) out of the
|
75
|
+
box, so it easy to setup reusable options. For example, a `.option` file
|
76
|
+
entry might be:
|
74
77
|
|
78
|
+
rubytest
|
79
|
+
-f progress
|
80
|
+
-r spectroscope
|
81
|
+
-r rspecial
|
82
|
+
spec/spec_*.rb
|
75
83
|
|
76
|
-
|
84
|
+
If you are using a build tool to run your tests, such as Rake or Fire, it is
|
85
|
+
best to shell out to `rubytest`. This keeps your test environent as prestine
|
86
|
+
as possible.
|
77
87
|
|
78
|
-
|
88
|
+
desc "run tests"
|
89
|
+
task :test
|
90
|
+
sh "rubytest"
|
91
|
+
end
|
79
92
|
|
80
|
-
|
93
|
+
RubyTest comes with a Rake task plugin, but its use is all but deprecated
|
94
|
+
because it's basically just a glorified rendition of the above.
|
95
|
+
|
96
|
+
require 'rubytest/rake'
|
97
|
+
|
98
|
+
Test::Rake::TestTask.new :test do |run|
|
99
|
+
run.requires << 'lemon'
|
100
|
+
run.files = 'test/test_*.rb'
|
101
|
+
end
|
102
|
+
|
103
|
+
See the Wiki for more information on the different ways to run tests.
|
81
104
|
|
82
105
|
|
83
106
|
## Requirements
|
@@ -85,28 +108,29 @@ Ruby Test is available as Gem package.
|
|
85
108
|
Ruby Test uses the [ANSI](http://rubyworks.github.com/ansi) gem for color output.
|
86
109
|
|
87
110
|
Because of the "foundational" nature of this library we will look at removing
|
88
|
-
this
|
111
|
+
this dependency for future versions, but for early development the
|
89
112
|
requirements does the job and does it well.
|
90
113
|
|
91
114
|
|
92
115
|
## Development
|
93
116
|
|
94
|
-
Ruby Test is still a "nuby" gem. Please feel OBLIGATED to help improve it ;-)
|
117
|
+
Ruby Test is still a bit of a "nuby" gem. Please feel OBLIGATED to help improve it ;-)
|
95
118
|
|
96
|
-
Ruby Test is a [
|
97
|
-
|
119
|
+
Ruby Test is a [Rubyworks](http://rubyworks.github.com) project. If you can't
|
120
|
+
contribute code, you can still help out by contributing to our development fund.
|
98
121
|
|
99
122
|
|
100
123
|
## Reference Material
|
101
124
|
|
102
|
-
|
125
|
+
* [Standard Definition Of Unit Test](http://c2.com/cgi/wiki?StandardDefinitionOfUnitTest)
|
126
|
+
* [BRASS Assertions Standard](http:rubyworks.github.com/brass)
|
103
127
|
|
104
128
|
|
105
129
|
## Copyrights
|
106
130
|
|
107
131
|
Copyright (c) 2011 Rubyworks
|
108
132
|
|
109
|
-
Made available according to the terms of the <b>
|
133
|
+
Made available according to the terms of the <b>BSD-2-Clause</b> license.
|
110
134
|
|
111
|
-
See
|
135
|
+
See LICENSE.txt for details.
|
112
136
|
|
data/bin/ruby-test
CHANGED
data/bin/rubytest
CHANGED
data/lib/rubytest.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Ruby Test -
|
1
|
+
# Ruby Test - Universal Ruby Test Harness
|
2
2
|
|
3
3
|
$TEST_SUITE = [] unless defined?($TEST_SUITE)
|
4
4
|
$RUBY_IGNORE_CALLERS = [] unless defined?($RUBY_IGNORE_CALLERS)
|
@@ -6,11 +6,27 @@ $RUBY_IGNORE_CALLERS = [] unless defined?($RUBY_IGNORE_CALLERS)
|
|
6
6
|
#require 'brass' # TODO: Should we require BRASS ?
|
7
7
|
require 'ansi/core'
|
8
8
|
|
9
|
+
module Test
|
10
|
+
# Load project index on demand.
|
11
|
+
def self.index
|
12
|
+
@index ||= (
|
13
|
+
require 'yaml'
|
14
|
+
__dir__ = File.dirname(__FILE__)
|
15
|
+
file = File.expand_path('rubytest.yml', __dir__)
|
16
|
+
YAML.load_file(file)
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Lookup missing constant in project index.
|
21
|
+
def self.const_missing(name)
|
22
|
+
index[name.to_s.downcase] || super(name)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
9
26
|
if RUBY_VERSION < '1.9'
|
10
27
|
require 'rubytest/core_ext'
|
11
28
|
require 'rubytest/code_snippet'
|
12
29
|
require 'rubytest/config'
|
13
|
-
require 'rubytest/rc'
|
14
30
|
require 'rubytest/recorder'
|
15
31
|
require 'rubytest/advice'
|
16
32
|
require 'rubytest/runner'
|
@@ -21,7 +37,6 @@ else
|
|
21
37
|
require_relative 'rubytest/core_ext'
|
22
38
|
require_relative 'rubytest/code_snippet'
|
23
39
|
require_relative 'rubytest/config'
|
24
|
-
require_relative 'rubytest/rc'
|
25
40
|
require_relative 'rubytest/recorder'
|
26
41
|
require_relative 'rubytest/advice'
|
27
42
|
require_relative 'rubytest/runner'
|
data/lib/rubytest.yml
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
---
|
2
|
+
revision: 2013
|
3
|
+
type: ruby
|
4
|
+
sources:
|
5
|
+
- var
|
6
|
+
authors:
|
7
|
+
- name: trans
|
8
|
+
email: transfire@gmail.com
|
9
|
+
organizations: []
|
10
|
+
requirements:
|
11
|
+
- name: ansi
|
12
|
+
- groups:
|
13
|
+
- build
|
14
|
+
development: true
|
15
|
+
name: fire
|
16
|
+
- groups:
|
17
|
+
- build
|
18
|
+
development: true
|
19
|
+
name: detroit
|
20
|
+
- groups:
|
21
|
+
- build
|
22
|
+
development: true
|
23
|
+
name: dotopts
|
24
|
+
- groups:
|
25
|
+
- test
|
26
|
+
development: true
|
27
|
+
name: qed
|
28
|
+
- groups:
|
29
|
+
- test
|
30
|
+
development: true
|
31
|
+
name: ae
|
32
|
+
conflicts: []
|
33
|
+
alternatives: []
|
34
|
+
resources:
|
35
|
+
- type: home
|
36
|
+
uri: http://rubyworks.github.com/rubytest
|
37
|
+
label: Homepage
|
38
|
+
- type: code
|
39
|
+
uri: http://github.com/rubyworks/rubytest
|
40
|
+
label: Source Code
|
41
|
+
- type: mail
|
42
|
+
uri: http://groups.google.com/group/rubyworks-mailinglist
|
43
|
+
label: Mailing List
|
44
|
+
repositories:
|
45
|
+
- name: upstream
|
46
|
+
scm: git
|
47
|
+
uri: git@github.com:rubyworks/rubytest.git
|
48
|
+
categories: []
|
49
|
+
copyrights:
|
50
|
+
- holder: RubyWorks
|
51
|
+
year: '2011'
|
52
|
+
license: BSD-2-Clause
|
53
|
+
customs: []
|
54
|
+
paths:
|
55
|
+
lib:
|
56
|
+
- lib
|
57
|
+
created: '2011-07-23'
|
58
|
+
summary: Ruby Universal Test Harness
|
59
|
+
title: Ruby Test
|
60
|
+
version: 0.6.0
|
61
|
+
name: rubytest
|
62
|
+
description: ! "Ruby Test is a universal test harness for Ruby. It can handle any
|
63
|
+
compliant \ntest framework, even running tests from multiple frameworks in a single
|
64
|
+
pass."
|
65
|
+
date: '2013-02-09'
|
data/lib/rubytest/autorun.rb
CHANGED
@@ -1,19 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
if RUBY_VERSION < '1.9'
|
4
|
-
require 'rubytest'
|
5
|
-
else
|
6
|
-
require_relative '../rubytest'
|
7
|
-
end
|
1
|
+
require 'rubytest'
|
8
2
|
|
9
3
|
at_exit {
|
10
|
-
|
11
|
-
options = {
|
12
|
-
:format => ENV['rubytest-format'] # TODO: better name?
|
13
|
-
}
|
14
|
-
|
15
|
-
runner = Ruth::Test::Runner.new(suite, options)
|
16
|
-
success = runner.run
|
4
|
+
success = Test.run
|
17
5
|
exit -1 unless success
|
18
6
|
}
|
19
7
|
|
data/lib/rubytest/cli.rb
CHANGED
@@ -2,65 +2,52 @@ module Test
|
|
2
2
|
|
3
3
|
# Command line interface to test runner.
|
4
4
|
#
|
5
|
+
# TODO: Use `cli` based library instead of option parser?
|
6
|
+
#
|
5
7
|
class CLI
|
6
8
|
|
7
|
-
#
|
8
9
|
# Convenience method for invoking the CLI.
|
9
10
|
#
|
11
|
+
# @return nothing
|
10
12
|
def self.run(*argv)
|
11
13
|
new.run(*argv)
|
12
14
|
end
|
13
15
|
|
14
|
-
#
|
15
16
|
# Initialize CLI instance.
|
16
17
|
#
|
18
|
+
# @return nothing
|
17
19
|
def initialize
|
18
20
|
require 'optparse'
|
19
21
|
|
20
|
-
Test
|
21
|
-
|
22
|
-
#@profile = ENV['profile'] || ENV['p'] || 'default'
|
23
|
-
@config = Test.config
|
24
|
-
@runner = Runner.new
|
22
|
+
@config = Test.configuration(true)
|
25
23
|
end
|
26
24
|
|
25
|
+
# Test run configuration.
|
27
26
|
#
|
28
|
-
# @return [
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
#
|
33
|
-
# @return [Hash]
|
34
|
-
#
|
35
|
-
attr :config
|
36
|
-
|
37
|
-
#
|
38
|
-
def profile
|
39
|
-
ENV['profile'] || ENV['p'] || 'default'
|
27
|
+
# @return [Config]
|
28
|
+
def config
|
29
|
+
@config
|
40
30
|
end
|
41
31
|
|
42
|
-
#
|
43
|
-
def profile=(name)
|
44
|
-
ENV['profile'] = name.to_s
|
45
|
-
end
|
46
|
-
|
47
|
-
#
|
48
32
|
# Run tests.
|
49
33
|
#
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
34
|
+
# @return nothing
|
35
|
+
def run(argv=nil)
|
36
|
+
begin
|
37
|
+
require 'dotopts'
|
38
|
+
rescue LoadError
|
55
39
|
end
|
56
40
|
|
57
|
-
|
41
|
+
argv = (argv || ARGV.dup)
|
58
42
|
|
59
|
-
|
43
|
+
options.parse!(argv)
|
60
44
|
|
61
|
-
|
62
|
-
Test::Config.load_path_setup if runner.autopath?
|
45
|
+
config.files.replace(argv) unless argv.empty?
|
63
46
|
|
47
|
+
config.apply_environment_overrides
|
48
|
+
|
49
|
+
#Test.run(config)
|
50
|
+
runner = Runner.new(config)
|
64
51
|
begin
|
65
52
|
success = runner.run
|
66
53
|
exit -1 unless success
|
@@ -71,90 +58,87 @@ module Test
|
|
71
58
|
end
|
72
59
|
end
|
73
60
|
|
74
|
-
#
|
75
|
-
# Run the common profile if defined and then the specific
|
76
|
-
# profile.
|
77
|
-
#
|
78
|
-
def run_profile
|
79
|
-
raise "no such profile -- #{profile}" unless config[profile] or profile == 'default'
|
80
|
-
|
81
|
-
common = config['common']
|
82
|
-
common.call(runner) if common
|
83
|
-
|
84
|
-
profig = config[profile]
|
85
|
-
profig.call(runner) if profig
|
86
|
-
end
|
87
|
-
|
88
|
-
#
|
89
61
|
# Setup OptionsParser instance.
|
90
62
|
#
|
63
|
+
# @return [OptionParser]
|
91
64
|
def options
|
92
65
|
this = self
|
93
66
|
|
94
67
|
OptionParser.new do |opt|
|
95
|
-
opt.banner = "Usage: #{$0} [options] [files ...]"
|
96
|
-
|
97
|
-
opt.separator "PRESET OPTIONS:"
|
98
|
-
|
99
|
-
opt.on '-p', '--profile NAME', "use configuration profile" do |name|
|
100
|
-
this.profile = name.to_s
|
101
|
-
end
|
68
|
+
opt.banner = "Usage: #{File.basename($0)} [options] [files ...]"
|
102
69
|
|
103
|
-
|
70
|
+
#opt.separator "PRESET OPTIONS:"
|
71
|
+
#pnames = profile_names
|
72
|
+
#unless pnames.empty?
|
73
|
+
# pnames.each do |pname|
|
74
|
+
# opt.separator((" " * 40) + "* #{pname}")
|
75
|
+
# end
|
76
|
+
#end
|
77
|
+
#opt.separator "CONFIG OPTIONS:"
|
104
78
|
|
105
|
-
unless config_names.empty?
|
106
|
-
config_names.each do |name|
|
107
|
-
opt.separator((" " * 40) + "* #{name}")
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
opt.separator "CONFIG OPTIONS:"
|
112
79
|
opt.on '-f', '--format NAME', 'report format' do |name|
|
113
|
-
|
80
|
+
config.format = name
|
114
81
|
end
|
115
82
|
opt.on '-y', '--tapy', 'shortcut for -f tapy' do
|
116
|
-
|
83
|
+
config.format = 'tapy'
|
117
84
|
end
|
118
85
|
opt.on '-j', '--tapj', 'shortcut for -f tapj' do
|
119
|
-
|
86
|
+
config.format = 'tapj'
|
120
87
|
end
|
121
88
|
|
122
89
|
opt.on '-t', '--tag TAG', 'select tests by tag' do |tag|
|
123
|
-
|
90
|
+
config.tags.concat makelist(tag)
|
124
91
|
end
|
125
92
|
opt.on '-u', '--unit TAG', 'select tests by software unit' do |unit|
|
126
|
-
|
93
|
+
config.units.concat makelist(unit)
|
127
94
|
end
|
128
95
|
opt.on '-m', '--match TEXT', 'select tests by description' do |text|
|
129
|
-
|
96
|
+
config.match.concat makelist(text)
|
130
97
|
end
|
131
98
|
|
132
|
-
opt.on '-
|
133
|
-
|
99
|
+
opt.on '-A', '--autopath', 'automatically add paths to $LOAD_PATH' do |paths|
|
100
|
+
config.autopath = true
|
134
101
|
end
|
135
|
-
opt.on '-I', '--loadpath PATH', 'add to $LOAD_PATH' do |paths|
|
136
|
-
paths
|
137
|
-
|
138
|
-
end
|
102
|
+
opt.on '-I', '--loadpath PATH', 'add given path to $LOAD_PATH' do |paths|
|
103
|
+
#makelist(paths).reverse_each do |path|
|
104
|
+
# $LOAD_PATH.unshift path
|
105
|
+
#end
|
106
|
+
config.loadpath.concat makelist(paths)
|
107
|
+
end
|
108
|
+
opt.on '-C', '--chdir DIR', 'change directory before running tests' do |dir|
|
109
|
+
config.chdir = dir
|
110
|
+
end
|
111
|
+
opt.on '-R', '--chroot', 'change to project root directory before running tests' do
|
112
|
+
config.chdir = Config.root
|
139
113
|
end
|
140
114
|
opt.on '-r', '--require FILE', 'require file' do |file|
|
141
|
-
require file
|
115
|
+
#require file
|
116
|
+
config.requires.concat makelist(file)
|
117
|
+
end
|
118
|
+
opt.on '-c', '--config FILE', "require local config file (immediately)" do |file|
|
119
|
+
config.load_config(file)
|
142
120
|
end
|
143
|
-
opt.on '-
|
144
|
-
|
121
|
+
opt.on '-V' , '--verbose', 'provide extra detail in reports' do
|
122
|
+
config.verbose = true
|
145
123
|
end
|
146
|
-
#opt.on('--log
|
147
|
-
#
|
124
|
+
#opt.on('--log PATH', 'log test output to path'){ |path|
|
125
|
+
# config.log = path
|
148
126
|
#}
|
149
127
|
opt.on("--[no-]ansi" , 'turn on/off ANSI colors'){ |v| $ansi = v }
|
150
128
|
opt.on("--debug" , 'turn on debugging mode'){ $DEBUG = true }
|
151
129
|
|
152
|
-
opt.separator "COMMAND OPTIONS:"
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
130
|
+
#opt.separator "COMMAND OPTIONS:"
|
131
|
+
opt.on('--about' , 'display information about rubytest') do
|
132
|
+
puts "Ruby Test v%s" % [Test.index['version']]
|
133
|
+
Test.index['copyrights'].each do |c|
|
134
|
+
puts "(c) %s %s (%s)" % c.values_at('year', 'holder', 'license')
|
135
|
+
end
|
136
|
+
exit
|
137
|
+
end
|
138
|
+
opt.on('--version' , 'display rubytest version') do
|
139
|
+
puts Test::VERSION
|
140
|
+
exit
|
141
|
+
end
|
158
142
|
opt.on('-h', '--help', 'display this help message'){
|
159
143
|
puts opt
|
160
144
|
exit
|
@@ -162,6 +146,21 @@ module Test
|
|
162
146
|
end
|
163
147
|
end
|
164
148
|
|
149
|
+
# If given a String then split up at `:` and `;` markers.
|
150
|
+
# Otherwise ensure the list is an Array and the entries are
|
151
|
+
# all strings and not empty.
|
152
|
+
#
|
153
|
+
# @return [Array<String>]
|
154
|
+
def makelist(list)
|
155
|
+
case list
|
156
|
+
when String
|
157
|
+
list = list.split(/[:;]/)
|
158
|
+
else
|
159
|
+
list = Array(list).map{ |path| path.to_s }
|
160
|
+
end
|
161
|
+
list.reject{ |path| path.strip.empty? }
|
162
|
+
end
|
163
|
+
|
165
164
|
end
|
166
165
|
|
167
166
|
end
|