rubytest 0.5.4 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://secure.travis-ci.org/rubyworks/rubytest.png)](http://travis-ci.org/rubyworks/rubytest)
|
9
|
+
[![Gem Version](https://badge.fury.io/rb/rubytest.png)](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
|