rspec 0.5.11 → 0.5.12
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +12 -0
- data/README +4 -2
- data/Rakefile +14 -4
- data/bin/spec +7 -7
- data/bin/test2spec +13 -8
- data/lib/spec/api/helper/diff.rb +53 -0
- data/lib/spec/api/helper/instance_helper.rb +11 -11
- data/lib/spec/api/helper/instance_negator.rb +11 -11
- data/lib/spec/api/helper/kind_helper.rb +11 -11
- data/lib/spec/api/helper/kind_negator.rb +11 -11
- data/lib/spec/api/helper/respond_helper.rb +11 -11
- data/lib/spec/api/helper/respond_negator.rb +11 -11
- data/lib/spec/api/helper/should_base.rb +6 -6
- data/lib/spec/api/helper/should_helper.rb +35 -35
- data/lib/spec/api/helper/should_negator.rb +20 -20
- data/lib/spec/rake/spectask.rb +15 -6
- data/lib/spec/runner.rb +1 -0
- data/lib/spec/runner/backtrace_tweaker.rb +2 -0
- data/lib/spec/runner/base_text_formatter.rb +3 -1
- data/lib/spec/runner/html_formatter.rb +153 -0
- data/lib/spec/runner/option_parser.rb +9 -2
- data/lib/spec/runner/progress_bar_formatter.rb +4 -0
- data/lib/spec/runner/rdoc_formatter.rb +3 -0
- data/lib/spec/runner/reporter.rb +5 -5
- data/lib/spec/runner/specdoc_formatter.rb +3 -0
- data/lib/spec/test_to_spec/sexp_transformer.rb +1 -0
- data/lib/spec/test_to_spec/translation_test_runner.rb +10 -2
- data/lib/spec/version.rb +1 -1
- data/test/spec/api/helper/arbitrary_predicate_test.rb +49 -73
- data/test/spec/api/helper/diff_test.rb +60 -0
- data/test/spec/api/helper/equality_test.rb +14 -0
- data/test/spec/api/helper/should_have_test.rb +0 -29
- data/test/spec/api/helper/typing_test.rb +87 -87
- data/test/spec/api/sugar_test.rb +0 -6
- data/test/spec/runner/backtrace_tweaker_test.rb +8 -2
- data/test/spec/runner/html_formatter_test.rb +47 -0
- data/test/spec/runner/option_parser_test.rb +0 -5
- data/test/test_classes.rb +73 -0
- data/test/test_helper.rb +3 -0
- metadata +8 -49
- data/doc/README +0 -3
- data/doc/config.yaml +0 -2
- data/doc/plugin/syntax.rb +0 -60
- data/doc/plugin/version.rb +0 -19
- data/doc/src/core_team.page +0 -31
- data/doc/src/default.css +0 -199
- data/doc/src/default.template +0 -31
- data/doc/src/documentation/index.page +0 -188
- data/doc/src/documentation/meta.info +0 -22
- data/doc/src/documentation/mocks.page +0 -287
- data/doc/src/documentation/underscores.page +0 -21
- data/doc/src/examples.page +0 -9
- data/doc/src/images/David_and_Aslak.jpg +0 -0
- data/doc/src/images/Whats_That_Dude.jpg +0 -0
- data/doc/src/images/ducks1.png +0 -0
- data/doc/src/images/ul.gif +0 -0
- data/doc/src/index.page +0 -74
- data/doc/src/meta.info +0 -33
- data/doc/src/tools/index.page +0 -49
- data/doc/src/tools/meta.info +0 -18
- data/doc/src/tools/rails.page +0 -132
- data/doc/src/tools/rake.page +0 -21
- data/doc/src/tools/rcov.page +0 -28
- data/doc/src/tools/spec.page +0 -129
- data/doc/src/tools/test2spec.page +0 -103
- data/doc/src/tutorials/index.page +0 -52
- data/doc/src/tutorials/meta.info +0 -36
- data/doc/src/tutorials/notes.txt +0 -263
- data/doc/src/tutorials/stack.rb +0 -11
- data/doc/src/tutorials/stack_01.page +0 -226
- data/doc/src/tutorials/stack_02.page +0 -182
- data/doc/src/tutorials/stack_03.page +0 -283
- data/doc/src/tutorials/stack_04.page +0 -164
- data/doc/src/tutorials/stack_04.page.orig +0 -123
- data/doc/src/tutorials/stack_05.page +0 -90
- data/doc/src/tutorials/stack_05.page.orig +0 -124
- data/doc/src/tutorials/stack_06.page +0 -359
- data/doc/src/tutorials/stack_06.page.orig +0 -359
- data/doc/src/tutorials/stack_spec.rb +0 -25
- data/doc/src/ul.gif +0 -0
@@ -1,21 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Underscore sugar
|
3
|
-
inMenu: true
|
4
|
-
---
|
5
|
-
h2. Underscore sugar
|
6
|
-
|
7
|
-
The internal implementation of RSpec actually uses chained method calls, so it's possible
|
8
|
-
to write:
|
9
|
-
|
10
|
-
<ruby>
|
11
|
-
lambda { 1.should.not.equal 1 }.should.raise
|
12
|
-
</ruby>
|
13
|
-
|
14
|
-
However, in order to make RSpec look and feel closer to other ruby code,
|
15
|
-
RSpec allows you to use underscores instead if you wish:
|
16
|
-
|
17
|
-
<ruby>
|
18
|
-
lambda { 1.should_not_equal 1 }.should_raise
|
19
|
-
</ruby>
|
20
|
-
|
21
|
-
Therefore, you will see the underscored syntax throughout the documentation and examples.
|
data/doc/src/examples.page
DELETED
Binary file
|
Binary file
|
data/doc/src/images/ducks1.png
DELETED
Binary file
|
data/doc/src/images/ul.gif
DELETED
Binary file
|
data/doc/src/index.page
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Overview
|
3
|
-
inMenu: true
|
4
|
-
---
|
5
|
-
|
6
|
-
h2. Behaviour Driven Development
|
7
|
-
|
8
|
-
Test Driven Development (TDD) has you define the behaviour of your system by
|
9
|
-
writing small tests that precisely define some small piece of your system's
|
10
|
-
behaviour. Then you implement that behaviour. Then you clean up & improve your
|
11
|
-
design.
|
12
|
-
|
13
|
-
At least that's how you're supposed to do it.
|
14
|
-
|
15
|
-
This focus on behaviour is the real value in TDD, and marks the genuinely
|
16
|
-
experienced TDD practitioner.
|
17
|
-
|
18
|
-
However, with the ubiquity of testing related terminology in TDD and it's
|
19
|
-
supporting frameworks, it is no surprise that it takes beginners some time to
|
20
|
-
get to the understanding that TDD isn't about testing at all... if they ever
|
21
|
-
do.
|
22
|
-
|
23
|
-
The aim of BDD is to address this shortcoming and, by using terminology
|
24
|
-
focused on the behavioural aspects of the system rather than testing, attempt
|
25
|
-
to help direct developers towards a focus on the real value to be found in TDD
|
26
|
-
at its most successful, or BDD as we call it.
|
27
|
-
|
28
|
-
(paraphrased from "behaviour-driven.org":http://behaviour-driven.org)
|
29
|
-
|
30
|
-
Dan North, who was the first to coin the term BDD, and who has been actively
|
31
|
-
refining it since, started promoting BDD in 2003. "JBehave":http://jbehave.codehaus.org/
|
32
|
-
was the first BDD framework to support this new thinking.
|
33
|
-
|
34
|
-
h2. RSpec
|
35
|
-
|
36
|
-
RSpec is a framework for practicing __Behaviour Driven Development__ (BDD) in Ruby.
|
37
|
-
|
38
|
-
It all started with a blogpost
|
39
|
-
("A New Look at Test Driven Development":http://blog.daveastels.com/articles/2005/07/05/a-new-look-at-test-driven-development)
|
40
|
-
of Dave's where he talked about his ideas for BDD and a BDD framework. One thing he mentioned was that his ideas
|
41
|
-
would be easily implemented in Smalltalk, and probably Ruby.
|
42
|
-
|
43
|
-
Steven Baker wrote the first version of the rspec core. Dave added mock support (initially inspired from Schmock by
|
44
|
-
Ben Griffiths). Dave and David had met & talked about BDD at Agile'05 just after Dave's blog
|
45
|
-
post (above). David started thinking about a BDD framework in C#. As fate, or
|
46
|
-
the gods, would have it Dave & David ended up working at the same client in
|
47
|
-
the greater Chicago area, allowing them to explore some ideas resulting in the totally rewriting of the expectation mechanism.
|
48
|
-
Aslak joined in and the three rewrote the higher level syntax and the core, reworking RSpec into what you see now:
|
49
|
-
|
50
|
-
<ruby>
|
51
|
-
context "BDD framework" do
|
52
|
-
|
53
|
-
setup do
|
54
|
-
@bdd_framework = BddFramework.new
|
55
|
-
end
|
56
|
-
|
57
|
-
specify "should be adopted quickly" do
|
58
|
-
@bdd_framework.should_be_adopted_quickly
|
59
|
-
end
|
60
|
-
|
61
|
-
specify "should be intuitive" do
|
62
|
-
@bdd_framework.should_be_intuitive
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
</ruby>
|
67
|
-
|
68
|
-
RSpec provides a framework for writing what we call __executable
|
69
|
-
specifications of program behaviour__. Since that's rather wordy, we usually
|
70
|
-
just call them __specs__.
|
71
|
-
"Some other people":http://www.testing.com/cgi-bin/blog/2006/04/12#spec-vs-example call these things __examples__.
|
72
|
-
|
73
|
-
On this site you will find examples, documentation, and tutorials as well as
|
74
|
-
links to download and community resources.
|
data/doc/src/meta.info
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
index.page:
|
2
|
-
orderInfo: 1
|
3
|
-
|
4
|
-
examples.page:
|
5
|
-
orderInfo: 2
|
6
|
-
|
7
|
-
tutorials:
|
8
|
-
title: Tutorial
|
9
|
-
orderInfo: 5
|
10
|
-
|
11
|
-
documentation:
|
12
|
-
title: Documentation
|
13
|
-
orderInfo: 6
|
14
|
-
|
15
|
-
download.html:
|
16
|
-
title: Download
|
17
|
-
inMenu: true
|
18
|
-
dest: http://rubyforge.org/frs/?group_id=797
|
19
|
-
orderInfo: 7
|
20
|
-
|
21
|
-
tools:
|
22
|
-
title: Tools
|
23
|
-
orderInfo: 8
|
24
|
-
|
25
|
-
core_team.page:
|
26
|
-
orderInfo: 9
|
27
|
-
|
28
|
-
community.html:
|
29
|
-
title: Community
|
30
|
-
inMenu: true
|
31
|
-
dest: http://rubyforge.org/projects/rspec
|
32
|
-
orderInfo: 10
|
33
|
-
|
data/doc/src/tools/index.page
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Seven tools in one
|
3
|
-
inMenu: true
|
4
|
-
---
|
5
|
-
|
6
|
-
h2. Seven tools in one
|
7
|
-
|
8
|
-
RSpec combines several tools in one...
|
9
|
-
|
10
|
-
h3. 1) A language for expressing behavior
|
11
|
-
|
12
|
-
RSpec provides programmers with a domain specific language for defining expected behavior of Ruby code.
|
13
|
-
|
14
|
-
h3. 2) A runner for verifying behavior
|
15
|
-
|
16
|
-
RSpec provides a command line utility for executing behavior specifications.
|
17
|
-
|
18
|
-
h3. 3) Mock objects
|
19
|
-
|
20
|
-
Mock objects frameworks usually come as separate add-ons to existing XUnit frameworks. In RSpec it's an integrated
|
21
|
-
part of the framework.
|
22
|
-
|
23
|
-
h3. 4) Testdox-like reports
|
24
|
-
|
25
|
-
Expressing behavior in real sentences improves communication between programmer,
|
26
|
-
analysts and testers. It also helps programmers keep a more critical mind about the code being developed.
|
27
|
-
|
28
|
-
RSpec's built in support for generating "testdox-like":http://agiledox.sourceforge.net/ reports makes the code's behavior more transparent
|
29
|
-
to everybody (assuming you publish it to a webpage where everybody who needs to can see it).
|
30
|
-
|
31
|
-
h3. 5) Coverage tool
|
32
|
-
|
33
|
-
While coverage tools cannot prove that you have verified everything there is to verify about your code,
|
34
|
-
they can prove when you have not verified everything there is to verify about your code. RCov is such a
|
35
|
-
coverage tool, and RSpec supportws it out-of the box via its Rake task.
|
36
|
-
|
37
|
-
h3. 6) Coverage threshold verification
|
38
|
-
|
39
|
-
Except for the times when programmers agree to keep a close eye on coverage and keep it at, say 90%, it
|
40
|
-
will inevitably drop when they get other things to think about and start to write code in the wild.
|
41
|
-
|
42
|
-
RSpec ships with a special Rake task that can verify that the coverage remains on a level defined by the
|
43
|
-
development team. Should the coverage drop, the build will fail, and developers are encouraged to address
|
44
|
-
it right away.
|
45
|
-
|
46
|
-
h3. 7) Test::Unit translation
|
47
|
-
|
48
|
-
Did you invest a lot of time in writing Test::Unit tests and want to switch to RSpec? Try out the test2spec
|
49
|
-
tool, which will do most of the translation for you. (test2spec tool is experimental)
|
data/doc/src/tools/meta.info
DELETED
data/doc/src/tools/rails.page
DELETED
@@ -1,132 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: RSpec on Rails
|
3
|
-
inMenu: true
|
4
|
-
---
|
5
|
-
h2. RSpec on Rails
|
6
|
-
|
7
|
-
RSpec's rspec_generator Rubygem brings RSpec to Rails.
|
8
|
-
|
9
|
-
h3. Features
|
10
|
-
|
11
|
-
* Integrated fixture loading
|
12
|
-
* Uses many of the controller-test integration features
|
13
|
-
* Special generators for models and controllers that generate specs instead of tests.
|
14
|
-
|
15
|
-
h3. Installation
|
16
|
-
|
17
|
-
RSpec support for rails lives in a separate gem. Install that gem:
|
18
|
-
|
19
|
-
<pre>
|
20
|
-
gem install rspec_generator
|
21
|
-
</pre>
|
22
|
-
|
23
|
-
Once the gem is installed, you must configure you Rails app. Stand in the root of your Rails app and run:
|
24
|
-
|
25
|
-
<pre>
|
26
|
-
ruby script/generate rspec
|
27
|
-
</pre>
|
28
|
-
|
29
|
-
Now, you can generate models and controllers in a similar fashion to Rails' builtin generators. Example:
|
30
|
-
|
31
|
-
<pre>
|
32
|
-
ruby script/generate rspec_model person
|
33
|
-
</pre>
|
34
|
-
|
35
|
-
or
|
36
|
-
|
37
|
-
<pre>
|
38
|
-
ruby script/generate rspec_controller person
|
39
|
-
</pre>
|
40
|
-
|
41
|
-
For more information on each generator, just run them without any arguments.
|
42
|
-
|
43
|
-
h3. Running specs
|
44
|
-
|
45
|
-
All specs can be run with
|
46
|
-
|
47
|
-
<pre>
|
48
|
-
rake spec
|
49
|
-
</pre>
|
50
|
-
|
51
|
-
Model specs can be run with
|
52
|
-
|
53
|
-
<pre>
|
54
|
-
rake spec:models
|
55
|
-
</pre>
|
56
|
-
|
57
|
-
Controller specs can be run with
|
58
|
-
|
59
|
-
<pre>
|
60
|
-
rake spec:controllers
|
61
|
-
</pre>
|
62
|
-
|
63
|
-
To see all the RSpec related tasks, run
|
64
|
-
|
65
|
-
<pre>
|
66
|
-
rake --tasks spec
|
67
|
-
</pre>
|
68
|
-
|
69
|
-
h3. Naming conventions
|
70
|
-
|
71
|
-
When you use Rails without RSpec (with Test::Unit), tests for models end up in tests/unit and tests for controllers
|
72
|
-
end up in tests/functional.
|
73
|
-
|
74
|
-
In order to make things more consistent, RSpec chooses a slightly different naming convention for direcotries and
|
75
|
-
Rake tasks. So you will find model specs under specs/models, and controller specs under specs/controllers. The
|
76
|
-
Rake tasks are named accordingly.
|
77
|
-
|
78
|
-
h3. Examples
|
79
|
-
|
80
|
-
RSpec on Rails adds several methods to your specs with a look and feel similar to Test::Unit. Example:
|
81
|
-
|
82
|
-
Model:
|
83
|
-
<ruby file="../vendor/rspec_on_rails/spec/models/person_spec.rb"/>
|
84
|
-
|
85
|
-
Controller:
|
86
|
-
<ruby file="../vendor/rspec_on_rails/spec/controllers/person_controller_spec.rb"/>
|
87
|
-
|
88
|
-
h3. Translating existing Test::Unit tests
|
89
|
-
|
90
|
-
The test2spec tool that ships with RSpec translates existing tests into RSpec specs.
|
91
|
-
Translating tests to specs in a Rails environment requires some manual steps...
|
92
|
-
|
93
|
-
h4. Install the rspec_generator
|
94
|
-
How to do this is described above
|
95
|
-
|
96
|
-
h4. Modify your test/test_helper.rb
|
97
|
-
In order to be able to translate any Rails tests, you must modify your test/test_helper.rb file:
|
98
|
-
<pre>
|
99
|
-
# This line must be commented out in order for test2spec to work.
|
100
|
-
# require 'test_help'
|
101
|
-
require 'test2spec_help'
|
102
|
-
</pre>
|
103
|
-
|
104
|
-
The reason for this is that the <tt>test_help</tt> mixin confuses test2spec to the point
|
105
|
-
where it's unable to perform the translation. The <tt>test2spec_help</tt> addresses this
|
106
|
-
shortcoming.
|
107
|
-
|
108
|
-
h4. Perform the translations
|
109
|
-
Now you can translate your unit tests (model tests) with:
|
110
|
-
<pre>
|
111
|
-
test2spec --template spec/test2spec.erb --specdir spec/models test/unit
|
112
|
-
</pre>
|
113
|
-
and your functional tests (controller tests) with:
|
114
|
-
<pre>
|
115
|
-
test2spec --template spec/test2spec.erb --specdir spec/controllers test/functional
|
116
|
-
</pre>
|
117
|
-
|
118
|
-
h4. Edit your translated specs
|
119
|
-
test2spec currently doesn't translate class-level statements such as <tt>fixtures</tt>, so you have to do this yourself.
|
120
|
-
Copy all the <tt>fixtures</tt> statements in your tests to the corresponding contexts. Example:
|
121
|
-
|
122
|
-
<ruby>
|
123
|
-
context "The Foo Model" do
|
124
|
-
fixtures :foo
|
125
|
-
end
|
126
|
-
</ruby>
|
127
|
-
|
128
|
-
h4. Make sure fixtures are found.
|
129
|
-
By default, RSpec on Rails expects to find fixtures under <tt>spec/fixtures</tt>. You should either move your
|
130
|
-
existing <tt>test/fixtures/*.yml</tt> files to <tt>spec/fixtures</tt> or edit your <tt>spec/spec_helper.rb</tt>
|
131
|
-
to point to the old <tt>test/fixtures</tt> location. Beware that every time you do a <tt>script/generate rspec_model</tt>,
|
132
|
-
new fixstures will always be written to <tt>spec/fixtures</tt>.
|
data/doc/src/tools/rake.page
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Rake Task
|
3
|
-
inMenu: true
|
4
|
-
---
|
5
|
-
h2. Rake Task
|
6
|
-
|
7
|
-
RSpec comes with a Rake task for executing specs.
|
8
|
-
See "Spec::Rake::SpecTask":../rdoc/classes/Spec/Rake/SpecTask.html for details.
|
9
|
-
|
10
|
-
h3. Run specs
|
11
|
-
|
12
|
-
<ruby file="../test/tasks/examples.rake"/>
|
13
|
-
|
14
|
-
Also see the "RCov":rcov.html page for info about how to generate a coverage report.
|
15
|
-
|
16
|
-
h3. Generate specdocs
|
17
|
-
|
18
|
-
<ruby file="../test/tasks/examples_specdoc.rake"/>
|
19
|
-
|
20
|
-
This will output the specdocs to a file, which can be included in your RDoc.
|
21
|
-
Just like "this":../rdoc/files/EXAMPLES_rd.html.
|
data/doc/src/tools/rcov.page
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: RCov
|
3
|
-
inMenu: true
|
4
|
-
---
|
5
|
-
h2. RCov
|
6
|
-
|
7
|
-
RSpec has tight integration with "RCov":http://eigenclass.org/hiki.rb?rcov=.
|
8
|
-
|
9
|
-
h3. Run specs with RCov
|
10
|
-
|
11
|
-
<ruby file="../test/tasks/examples_with_rcov.rake"/>
|
12
|
-
|
13
|
-
By adding rcov=true to the rake task, specs will be run with rcov
|
14
|
-
instead of ruby, and a coverage report like "this":../coverage/index.html will be generated.
|
15
|
-
|
16
|
-
See "Spec::Rake::SpecTask":../rdoc/classes/Spec/Rake/SpecTask.html for details.
|
17
|
-
|
18
|
-
h3. Coverage threshold
|
19
|
-
|
20
|
-
You can guard your codebase's coverage from dropping below a certain threshold
|
21
|
-
by using RSpec's built-in task for verification of the total RCov coverage.
|
22
|
-
|
23
|
-
<ruby file="../test/tasks/rcov_verify.rake"/>
|
24
|
-
|
25
|
-
This will give you a :rcov_verify task that will fail your build if the
|
26
|
-
coverage drops below the threshold you define (the higher the better).
|
27
|
-
|
28
|
-
See "RCov::VerifyTask":../rdoc/classes/RCov/VerifyTask.html for details.
|
data/doc/src/tools/spec.page
DELETED
@@ -1,129 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Spec Runner
|
3
|
-
inMenu: true
|
4
|
-
---
|
5
|
-
|
6
|
-
h2. Executing specs directly
|
7
|
-
|
8
|
-
Every RSpec context can be run directly from the command line:
|
9
|
-
|
10
|
-
<pre>
|
11
|
-
ruby path/to/my_spec.rb [options]
|
12
|
-
</pre>
|
13
|
-
|
14
|
-
This will print the results to STDOUT. Use the --help option for more details. This is
|
15
|
-
practical when you only want to run one context. If you want to run more, use the spec tool
|
16
|
-
or the Rake task. It should also be noted that the exitcode will always be 0 when run in standalone mode.
|
17
|
-
|
18
|
-
h2. The spec command line
|
19
|
-
|
20
|
-
After you install RSpec, you should have the spec command line tool on your PATH.
|
21
|
-
This tool can be used to process several RSpec contexts in one go.
|
22
|
-
|
23
|
-
spec will exit with the exitcode 1 if one or more specs fail.
|
24
|
-
|
25
|
-
The general form of the command is
|
26
|
-
|
27
|
-
<pre>
|
28
|
-
spec [options] (FILE|DIRECTORY|GLOB)+
|
29
|
-
</pre>
|
30
|
-
|
31
|
-
Any number of files, directories and shell globs can be provided, all ruby source files
|
32
|
-
that are found are loaded. Running spec on the previous example results in:
|
33
|
-
|
34
|
-
<pre>
|
35
|
-
bin/spec examples
|
36
|
-
{execute: ruby ../bin/spec ../examples}
|
37
|
-
</pre>
|
38
|
-
|
39
|
-
Very simple and to the point. Passing specifications are indicated by a '.',
|
40
|
-
failing ones by a 'F'. Note that failure indicates a violated expectation as
|
41
|
-
well as an unexpected exception being raised. Here's an example with a failing specification:
|
42
|
-
|
43
|
-
<pre>
|
44
|
-
bin/spec failing_examples/stack_spec.rb
|
45
|
-
{execute: ../bin/spec ../failing_examples/stack_spec.rb}
|
46
|
-
</pre>
|
47
|
-
|
48
|
-
In this case, the context is named "An almost full stack (with one item less than capacity)"
|
49
|
-
and the specification is named "should return top when sent pop". These two are concatenated
|
50
|
-
on the first line of the backtrace.
|
51
|
-
|
52
|
-
h2. Command line options
|
53
|
-
|
54
|
-
Additional command line options can be passed to customize the output and behaviour of RSpec.
|
55
|
-
The following options apply whether specs are run in standalone mode (by executing the .rb files directly),
|
56
|
-
or using the spec command.
|
57
|
-
|
58
|
-
h3. -f, --format [specdoc|s|rdoc|r|]
|
59
|
-
|
60
|
-
Specify the output format. Default format is "progress bar" ("." for pass, "F" for fail). Most formats will produce some form of "testdox":http://agiledox.sourceforge.net/
|
61
|
-
output. The --dry-run options may also affect the output format.
|
62
|
-
|
63
|
-
For example, by setting the formatter to rdoc, we can output the kind of input that RDoc
|
64
|
-
needs to produce something like "this":../rdoc/files/EXAMPLES_rd.html
|
65
|
-
<pre>
|
66
|
-
$ bin/spec failing_examples/team_spec.rb -f rdoc
|
67
|
-
|
68
|
-
{execute: ../bin/spec ../failing_examples/team_spec.rb -f rdoc}
|
69
|
-
</pre>
|
70
|
-
|
71
|
-
h4. Custom formatters
|
72
|
-
|
73
|
-
As of RSpec 0.5.7 custom formatters are supported. If the argument to the --format option is none
|
74
|
-
of the builtin formatters, RSpec will assume it's a class name, and try to instantiate that class.
|
75
|
-
If you're using this feature, make sure to use the --require option as well - *before* the
|
76
|
-
--format option.
|
77
|
-
|
78
|
-
See the RDoc for "Spec::Runner::BaseTextFormatter":../rdoc/classes/Spec/Runner/BaseTextFormatter.html
|
79
|
-
for details on how to implement your own. A custom formatter can be found under examples/custom_formatter.rb.
|
80
|
-
|
81
|
-
h3. -r, --require FILE
|
82
|
-
|
83
|
-
Causes FILE to be loaded (via require) before any specs are executed. If you're using a custom
|
84
|
-
formatter, you have to specify this option *before* the --format option.
|
85
|
-
|
86
|
-
h3. -d, --dry-run
|
87
|
-
|
88
|
-
This option tells RSpec not to execute the specs, but they are still being parsed.
|
89
|
-
This can be useful when generating "testdox-like":http://agiledox.sourceforge.net/ documents
|
90
|
-
|
91
|
-
h3. -b, --backtrace
|
92
|
-
|
93
|
-
In order to make it easier to identify causes of failing specifications, RSpec will filter out
|
94
|
-
the parts of the backtrace that come from RSpec itself by default. If you wish to see them,
|
95
|
-
you can use -b or --backtrace:
|
96
|
-
|
97
|
-
<pre>
|
98
|
-
$ bin/spec failing_examples/team_spec.rb -b
|
99
|
-
|
100
|
-
{execute: ../bin/spec ../failing_examples/team_spec.rb -b}
|
101
|
-
</pre>
|
102
|
-
|
103
|
-
h3. -s, --spec <name of context and/or specification>
|
104
|
-
|
105
|
-
Enter the name of a context, spec, or both to run:
|
106
|
-
|
107
|
-
all the specs in a context ...
|
108
|
-
|
109
|
-
<pre>
|
110
|
-
$ bin/spec examples --spec "A stack with one item" -f s
|
111
|
-
|
112
|
-
{execute: ../bin/spec ../examples --spec "A stack with one item" -f s}
|
113
|
-
</pre>
|
114
|
-
|
115
|
-
... any spec in any context with a given name ...
|
116
|
-
|
117
|
-
<pre>
|
118
|
-
$ bin/spec examples --spec "should return top when sent top" -f s
|
119
|
-
|
120
|
-
{execute: ../bin/spec ../examples --spec "should return top when sent top" -f s}
|
121
|
-
</pre>
|
122
|
-
|
123
|
-
... or a specific spec in a specific context:
|
124
|
-
|
125
|
-
<pre>
|
126
|
-
$ bin/spec examples --spec "A stack with one item should return top when sent top" -f s
|
127
|
-
|
128
|
-
{execute: ../bin/spec ../examples --spec "A stack with one item should return top when sent top" -f s}
|
129
|
-
</pre>
|