aruba 0.11.0.pre4 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +11 -3
- data/README.md +32 -311
- data/aruba.gemspec +1 -1
- data/features/api/filesystem/fixtures.feature +104 -0
- data/features/{core/cleanup_aruba_directory.feature → getting_started/cleanup.feature} +16 -1
- data/features/{usage → getting_started}/install.feature +0 -0
- data/features/getting_started/writing_good_feature_tests.feature +38 -0
- data/features/hooks/after/command.feature +10 -0
- data/features/hooks/before/command.feature +10 -0
- data/features/platforms/jruby.feature +14 -0
- data/features/{commands/debug_command.feature → steps/command/debug.feature} +0 -0
- data/features/steps/command/in_process.feature +11 -0
- data/features/{commands → steps/command}/interactive.feature +1 -1
- data/features/{commands/output/all_output.feature → steps/command/output.feature} +142 -0
- data/features/steps/command/stderr.feature +68 -0
- data/features/{commands/output → steps/command}/stdout.feature +45 -2
- data/features/{announce.feature → steps/core/announce.feature} +0 -0
- data/features/steps/filesystem/append_to_file.feature +45 -0
- data/features/steps/filesystem/cd_to_directory.feature +33 -0
- data/features/steps/filesystem/check_file_content.feature +61 -0
- data/features/steps/filesystem/check_permissions_of_file.feature +39 -0
- data/features/steps/filesystem/compare_files.feature +42 -0
- data/features/steps/filesystem/create_directory.feature +15 -5
- data/features/steps/filesystem/create_file.feature +26 -3
- data/features/steps/filesystem/existence_of_directory.feature +57 -0
- data/features/steps/filesystem/existence_of_file.feature +43 -0
- data/features/steps/filesystem/file_content.feature +22 -0
- data/features/steps/filesystem/fixtures.feature +64 -0
- data/features/steps/filesystem/non_existence_of_directory.feature +69 -0
- data/features/steps/filesystem/non_existence_of_file.feature +80 -0
- data/features/steps/filesystem/remove_directory.feature +38 -0
- data/features/steps/filesystem/remove_file.feature +38 -0
- data/lib/aruba/cucumber/file.rb +17 -15
- data/lib/aruba/version.rb +1 -1
- metadata +52 -31
- data/features/commands/environment_variables.feature +0 -64
- data/features/commands/flushing.feature +0 -74
- data/features/file_system_commands.feature +0 -220
- data/features/output.feature +0 -131
- data/features/utf-8.feature +0 -14
- data/fixtures/fixtures-app/test.txt +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62427bdbd40bcd56afd8712d52200e7ade0a46a3
|
4
|
+
data.tar.gz: 1edaf0abe9e8d71651e9d891fe0f2a9dff81e5e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1576ea1206c4ab02384f227746e4344fc53a02278772a612e68aa16de5d62ada2f6da4406ff38c785ce84fe0409c8e512e0a20e12c5389fe1cd6ce652cbf7062
|
7
|
+
data.tar.gz: d7fc54d5f31c23b02073e6e1ea8879d2a7c7cca254cefc92504c9aac8835160310f36b3c9939c496b2facb99ebc234e51c62c87a424babfc0a89a2a8d6d8c012
|
data/History.md
CHANGED
@@ -1,17 +1,25 @@
|
|
1
1
|
# Latest Release
|
2
2
|
|
3
|
+
## [v0.11.1](https://github.com/cucumber/aruba/compare/v0.11.pre4...v0.11.1)
|
4
|
+
|
5
|
+
* Use fixed version of event-bus
|
6
|
+
* Refactored and improved documentation (feature tests) in PR #309
|
7
|
+
|
8
|
+
# Old releases
|
9
|
+
|
10
|
+
## [v0.11.0](https://github.com/cucumber/aruba/compare/v0.11.pre4...v0.11.0)
|
11
|
+
|
12
|
+
* Accidently pushed to rubygems.org - yanked it afterwards
|
13
|
+
|
3
14
|
## [v0.11.0.pre4](https://github.com/cucumber/aruba/compare/v0.11.pre3...v0.11.0.pre4)
|
4
15
|
|
5
16
|
* Fixed syntax for Hash on ruby 1.8.7
|
6
17
|
* Reorder rubies in .travis.yml
|
7
18
|
|
8
|
-
# Old releases
|
9
|
-
|
10
19
|
## [v0.11.0.pre3](https://github.com/cucumber/aruba/compare/v0.11.pre2...v0.11.0.pre3)
|
11
20
|
|
12
21
|
* Fixed syntax for proc on ruby 1.8.7
|
13
22
|
|
14
|
-
|
15
23
|
## [v0.11.0.pre2](https://github.com/cucumber/aruba/compare/v0.11.pre...v0.11.0.pre2)
|
16
24
|
|
17
25
|
* Integrate `EventBus` to decouple announcers from starting, stopping commands
|
data/README.md
CHANGED
@@ -82,325 +82,46 @@ well. One might want to use it together with `rspec`.
|
|
82
82
|
end
|
83
83
|
```
|
84
84
|
|
85
|
-
|
85
|
+
### Minitest
|
86
86
|
|
87
|
-
|
88
|
-
|
89
|
-
* Creating files/directories
|
90
|
-
* Deleting files/directories
|
91
|
-
* Checking file size
|
92
|
-
* Checking file existence/absence
|
93
|
-
* ...
|
94
|
-
|
95
|
-
A full documentation of the API can be found [here](http://www.rubydoc.info/github/cucumber/aruba/master/frames).
|
96
|
-
|
97
|
-
## Configuration
|
98
|
-
|
99
|
-
Aruba has some default behaviour that you can change if you need to.
|
100
|
-
|
101
|
-
### Use a different working directory
|
102
|
-
|
103
|
-
Per default Aruba will create a directory `tmp/aruba` where it performs its file operations.
|
104
|
-
If you want to change this behaviour put this into your `features/support/env.rb`:
|
105
|
-
|
106
|
-
```ruby
|
107
|
-
Before do
|
108
|
-
@dirs = ["somewhere/else"]
|
109
|
-
end
|
110
|
-
```
|
111
|
-
|
112
|
-
### Modify the PATH
|
113
|
-
|
114
|
-
Aruba will automatically add the `bin` directory of your project to the `PATH` environment variable for
|
115
|
-
the duration of each Cucumber scenario. So if you're developing a Ruby gem with a binary command, you
|
116
|
-
can test those commands as though the gem were already installed.
|
117
|
-
|
118
|
-
If you need other directories to be added to the `PATH`, you can put the following in `features/support/env.rb`:
|
119
|
-
|
120
|
-
```ruby
|
121
|
-
Aruba.configure do |config|
|
122
|
-
config.command_search_paths = config.command_search_paths << '/my/special/bin/path'
|
123
|
-
end
|
124
|
-
```
|
125
|
-
|
126
|
-
### Increasing timeouts
|
127
|
-
|
128
|
-
A process sometimes takes longer than expected to terminate, and Aruba will kill them off (and fail your scenario) if it is still alive after 3 seconds. If you need more time you can modify the timeout by assigning a different value to `#exit_timeout` in a `Aruba.configure` block:
|
129
|
-
|
130
|
-
```ruby
|
131
|
-
Aruba.configure do |config|
|
132
|
-
config.exit_timeout = 5
|
133
|
-
end
|
134
|
-
```
|
135
|
-
|
136
|
-
### Increasing IO wait time
|
137
|
-
|
138
|
-
Running processes interactively can result in race conditions when Aruba executes an IO-related step
|
139
|
-
but the interactive process has not yet flushed or read some content. To help prevent this Aruba waits
|
140
|
-
before reading or writing to the process if it is still running. You can control the wait by setting
|
141
|
-
`aruba.config.io_wait_timeout` to an appropriate value. This is particularly useful with tags:
|
142
|
-
|
143
|
-
```ruby
|
144
|
-
Before('@slow_process') do
|
145
|
-
aruba.config.io_wait_timeout = 5
|
146
|
-
end
|
147
|
-
```
|
148
|
-
|
149
|
-
### Tags
|
150
|
-
|
151
|
-
Aruba defines several tags that you can put on on individual scenarios, or on a feature.
|
152
|
-
|
153
|
-
#### Seeing more output with `@announce-*`
|
154
|
-
|
155
|
-
To get more information on what Aruba is doing, use these tags:
|
156
|
-
|
157
|
-
* `@announce-command` - See what command is run
|
158
|
-
* `@announce-stdout` - See the stdout
|
159
|
-
* `@announce-stderr` - See the stderr
|
160
|
-
* `@announce-output` - See the output of stdout and stderr
|
161
|
-
* `@announce-directory` - See the current directory
|
162
|
-
* `@announce-environment` - See environment variables set by Aruba
|
163
|
-
* `@announce` - Does all of the above
|
164
|
-
|
165
|
-
### Adding Hooks
|
166
|
-
|
167
|
-
You can hook into Aruba's lifecycle just before it runs a command and after it has run the command:
|
168
|
-
|
169
|
-
```ruby
|
170
|
-
Aruba.configure do |config|
|
171
|
-
config.before :command do |cmd|
|
172
|
-
puts "About to run '#{cmd}'"
|
173
|
-
end
|
174
|
-
|
175
|
-
config.after :command do |cmd|
|
176
|
-
puts "After the run of '#{cmd}'"
|
177
|
-
end
|
178
|
-
end
|
179
|
-
```
|
180
|
-
|
181
|
-
#### Keep files around with `@no-clobber`
|
182
|
-
|
183
|
-
Aruba clobbers all files in its working directory before each scenario. -Unless you tag it with `@no-clobber`
|
184
|
-
|
185
|
-
#### Making assertions about ANSI escapes with `@ansi`
|
186
|
-
|
187
|
-
Aruba strips away ANSI escapes from the stdout and stderr of spawned child processes by default. It's usually rather cumbersome to
|
188
|
-
make assertions about coloured output. Still, there might be cases where you want to leave the ANSI escapes intact. Just tag your
|
189
|
-
scenario with `@ansi`. Alternatively you can add your own Before
|
190
|
-
hook that sets `@aruba_keep_ansi = true`.
|
191
|
-
|
192
|
-
### Testing Ruby CLI programs without spawning a new Ruby process.
|
193
|
-
|
194
|
-
If your CLI program is written in Ruby you can speed up your suite of scenarios by running
|
195
|
-
your CLI in the same process as Cucumber/Aruba itself. In order to be able to do this, the
|
196
|
-
entry point for your CLI application must be a class that has a constructor with a particular
|
197
|
-
signature and an `execute!` method:
|
198
|
-
|
199
|
-
```ruby
|
200
|
-
class MyMain
|
201
|
-
def initialize(argv, stdin=STDIN, stdout=STDOUT, stderr=STDERR, kernel=Kernel)
|
202
|
-
@argv, @stdin, @stdout, @stderr, @kernel = argv, stdin, stdout, stderr, kernel
|
203
|
-
end
|
204
|
-
|
205
|
-
def execute!
|
206
|
-
# your code here, assign a value to exitstatus
|
207
|
-
@kernel.exit(exitstatus)
|
208
|
-
end
|
209
|
-
end
|
210
|
-
```
|
211
|
-
|
212
|
-
Your `bin/something` executable would look something like the following:
|
213
|
-
|
214
|
-
```ruby
|
215
|
-
require 'my_main'
|
216
|
-
MyMain.new(ARGV.dup).execute!
|
217
|
-
```
|
218
|
-
|
219
|
-
Then wire it all up in your `features/support/env.rb` file:
|
220
|
-
|
221
|
-
```ruby
|
222
|
-
require 'aruba'
|
223
|
-
require 'aruba/in_process'
|
87
|
+
TBD :-)
|
224
88
|
|
225
|
-
|
226
|
-
Aruba.process.main_class = MyMain
|
227
|
-
```
|
228
|
-
|
229
|
-
That's it! Everything will now run inside the same ruby process, making your suite
|
230
|
-
a lot faster. Cucumber itself uses this approach to test itself, so check out the
|
231
|
-
Cucumber source code for an example.
|
232
|
-
|
233
|
-
*Pros*:
|
234
|
-
|
235
|
-
* Very fast compared to spawning processes
|
236
|
-
* You can use libraries like
|
237
|
-
[simplecov](https://github.com/colszowka/simplecov) more easily, because
|
238
|
-
there is only one "process" which adds data to `simplecov`'s database
|
239
|
-
|
240
|
-
*Cons*:
|
241
|
-
* You might oversee some bugs: You might forget to require libraries in your
|
242
|
-
"production" code, because you have required them in your testing code
|
243
|
-
|
244
|
-
### JRuby Tips
|
245
|
-
|
246
|
-
Improve startup time by disabling JIT and forcing client JVM mode. This can be accomplished by adding
|
247
|
-
|
248
|
-
```ruby
|
249
|
-
require 'aruba/jruby'
|
250
|
-
```
|
251
|
-
|
252
|
-
or setting a hook like this example:
|
253
|
-
|
254
|
-
```ruby
|
255
|
-
Aruba.configure do |config|
|
256
|
-
config.before :command do |cmd|
|
257
|
-
set_env('JRUBY_OPTS', "-X-C #{ENV['JRUBY_OPTS']}") # disable JIT since these processes are so short lived
|
258
|
-
set_env('JAVA_OPTS', "-d32 #{ENV['JAVA_OPTS']}") # force jRuby to use client JVM for faster startup times
|
259
|
-
end
|
260
|
-
end if RUBY_PLATFORM == 'java'
|
261
|
-
```
|
262
|
-
|
263
|
-
*Note* - no conflict resolution on the JAVA/JRuby environment options is
|
264
|
-
done; only merging. For more complex settings please manually set the
|
265
|
-
environment variables in the hook or externally.
|
89
|
+
## Documentation
|
266
90
|
|
267
|
-
|
91
|
+
### User Documentation
|
268
92
|
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
1. Create a `fixtures`-directory
|
284
|
-
2. Create fixture files in this directory
|
285
|
-
|
286
|
-
The `expand_path`-helper will expand `%` to the path of your fixtures
|
287
|
-
directory:
|
288
|
-
|
289
|
-
```ruby
|
290
|
-
expand_path('%/song.mp3')
|
291
|
-
# => /home/user/projects/my_project/fixtures/song.mp3
|
292
|
-
```
|
293
|
-
|
294
|
-
*Example*
|
295
|
-
|
296
|
-
1. Create fixtures directory
|
93
|
+
If you're interested in our steps and API, please browser our [feature
|
94
|
+
files](https://github.com/cucumber/aruba/tree/master/features). You can find a
|
95
|
+
lot of examples there. A good starting point are [Getting
|
96
|
+
Started](https://github.com/cucumber/aruba/tree/master/features/getting_started)
|
97
|
+
and [Step
|
98
|
+
Overview](https://github.com/cucumber/aruba/blob/master/features/steps/overview.feature).
|
99
|
+
A more or less full list of our steps can be found
|
100
|
+
[here](https://github.com/cucumber/aruba/tree/master/features/steps). Our API
|
101
|
+
is documentated
|
102
|
+
[here](https://github.com/cucumber/aruba/tree/master/features/api) and some
|
103
|
+
more information about how to configure `aruba`, can be found
|
104
|
+
[here](https://github.com/cucumber/aruba/tree/master/features/configuration).
|
105
|
+
The "RSpec" matchers provided by `aruba`, are documented
|
106
|
+
[here](https://github.com/cucumber/aruba/tree/master/features/matchers).
|
297
107
|
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
# or
|
303
|
-
mkdir -p test/fixtures/
|
304
|
-
# or
|
305
|
-
mkdir -p spec/fixtures/
|
306
|
-
# or
|
307
|
-
mkdir -p features/fixtures/
|
308
|
-
```
|
309
|
-
|
310
|
-
2. Store `song.mp3` in `fixtures`-directory
|
311
|
-
|
312
|
-
```bash
|
313
|
-
cp song.mp3 fixtures/
|
314
|
-
```
|
108
|
+
You can find our documentation on
|
109
|
+
[Relish](http://www.relishapp.com/cucumber/aruba/docs) as well. Unfortunately
|
110
|
+
"Relish" does not like the way we structered our feature tests. So this
|
111
|
+
documentation found there may be not complete.
|
315
112
|
|
316
|
-
|
113
|
+
### Developer Documentation
|
317
114
|
|
318
|
-
|
319
|
-
|
320
|
-
```ruby
|
321
|
-
RSpec.describe 'My Feature' do
|
322
|
-
describe '#read_music_file' do
|
323
|
-
context 'when the file exists' do
|
324
|
-
let(:path) { expand_path('%/song.mp3') }
|
325
|
-
|
326
|
-
before :each do
|
327
|
-
cd('.') { FileUtils.cp path, 'file.mp3' }
|
328
|
-
end
|
329
|
-
|
330
|
-
before :each do
|
331
|
-
run 'my_command'
|
332
|
-
end
|
333
|
-
|
334
|
-
it { expect(all_stdout).to include('Rate is 128 KB') }
|
335
|
-
end
|
336
|
-
end
|
337
|
-
end
|
338
|
-
```
|
339
|
-
|
340
|
-
## Reporting
|
341
|
-
|
342
|
-
*Important* - you need [Pygments](http://pygments.org/) installed to use this feature.
|
343
|
-
|
344
|
-
Aruba can generate a HTML page for each scenario that contains:
|
345
|
-
|
346
|
-
* The title of the scenario
|
347
|
-
* The description from the scenario (You can use Markdown here)
|
348
|
-
* The command(s) that were run
|
349
|
-
* The output from those commands (in colour if the output uses ANSI escapes)
|
350
|
-
* The files that were created (syntax highlighted in colour)
|
351
|
-
|
352
|
-
In addition to this, it creates an `index.html` file with links to all individual report files.
|
353
|
-
Reporting is off by default, but you can enable it by defining the `ARUBA_REPORT_DIR` environment variable, giving it the value
|
354
|
-
where reports should be written:
|
355
|
-
|
356
|
-
ARUBA_REPORT_DIR=doc cucumber features
|
357
|
-
|
358
|
-
This will use Aruba's built-in template by default (See the `templates` folder). If you want to use your own template you can override its location:
|
359
|
-
|
360
|
-
ARUBA_REPORT_TEMPLATES=templates ARUBA_REPORT_DIR=doc cucumber features
|
361
|
-
|
362
|
-
The templates directory must contain a `main.erb` and `files.erb` template. It can also contain other assets such
|
363
|
-
as css, javascript and images. All of these files will be copied over to the report dir well.
|
364
|
-
|
365
|
-
### Escaping Markdown
|
366
|
-
|
367
|
-
There are some edge cases where Gherkin and Markdown don't agree. Bullet lists using `*` is one example. The `*` is also an alias for
|
368
|
-
step keywords in Gherkin. Markdown headers (the kind starting with a `#`) is another example. They are parsed as comments by Gherkin. To use either of these, just escape them with a backslash. So instead of writing:
|
369
|
-
|
370
|
-
```gherkin
|
371
|
-
Scenario: Make tea
|
372
|
-
## Making tea
|
373
|
-
* Get a pot
|
374
|
-
* And some hot water
|
375
|
-
|
376
|
-
Given...
|
377
|
-
```
|
378
|
-
|
379
|
-
You'd write:
|
380
|
-
|
381
|
-
```gherkin
|
382
|
-
Scenario: Make tea
|
383
|
-
\## Making tea
|
384
|
-
\* Get a pot
|
385
|
-
\* And some hot water
|
386
|
-
|
387
|
-
Given...
|
388
|
-
```
|
389
|
-
|
390
|
-
This way Gherkin won't recognize these lines as special tokens, and the reporter will render them as Markdown. (The reporter strips
|
391
|
-
away any leading the backslashes before handing it off to the Markdown parser).
|
392
|
-
|
393
|
-
Another option is to use alternative Markdown syntax and omit conflicts and escaping altogether:
|
115
|
+
`aruba` provides a wonderful API to be used in your tests:
|
394
116
|
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
- And some hot water
|
117
|
+
* Creating files/directories
|
118
|
+
* Deleting files/directories
|
119
|
+
* Checking file size
|
120
|
+
* Checking file existence/absence
|
121
|
+
* ...
|
401
122
|
|
402
|
-
|
403
|
-
|
123
|
+
A full documentation of the API can be found
|
124
|
+
[here](http://www.rubydoc.info/github/cucumber/aruba/master/frames).
|
404
125
|
|
405
126
|
## Contributing
|
406
127
|
|
@@ -408,4 +129,4 @@ Please see the `CONTRIBUTING.md`.
|
|
408
129
|
|
409
130
|
## Copyright
|
410
131
|
|
411
|
-
Copyright (c) 2010
|
132
|
+
Copyright (c) 2010-2015 Aslak Hellesøy et al. See LICENSE for details.
|
data/aruba.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_runtime_dependency 'rspec-expectations', '>= 2.99'
|
20
20
|
s.add_runtime_dependency 'contracts', '~> 0.9'
|
21
21
|
s.add_runtime_dependency 'thor', '~> 0.19'
|
22
|
-
s.add_runtime_dependency 'event-bus', '~> 0.2
|
22
|
+
s.add_runtime_dependency 'event-bus', '~> 0.2'
|
23
23
|
|
24
24
|
s.add_development_dependency 'bundler', '~> 1.10.2'
|
25
25
|
|
@@ -0,0 +1,104 @@
|
|
1
|
+
Feature: Use fixtures in your tests
|
2
|
+
|
3
|
+
Sometimes your tests need existing files to work - e.g binary data files you
|
4
|
+
cannot create programmatically. Since `aruba` >= 0.6.3 includes some basic
|
5
|
+
support for fixtures. All you need to do is the following:
|
6
|
+
|
7
|
+
1. Create a `fixtures`-directory
|
8
|
+
2. Create fixture files in this directory
|
9
|
+
|
10
|
+
|
11
|
+
Background:
|
12
|
+
Given I use a fixture named "cli-app"
|
13
|
+
|
14
|
+
Scenario: Use a fixture for your tests
|
15
|
+
Given a file named "features/fixtures.feature" with:
|
16
|
+
"""
|
17
|
+
Feature: Fixture
|
18
|
+
Scenario: Fixture
|
19
|
+
Given a file named "fixtures_spec.rb" with:
|
20
|
+
\"\"\"
|
21
|
+
RSpec.describe 'My Feature' do
|
22
|
+
describe '#read_music_file' do
|
23
|
+
context 'when the file exists' do
|
24
|
+
before :each { copy '%/song.mp3', 'file.mp3' }
|
25
|
+
|
26
|
+
it { expect('file.mp3').to be_an_existing_file }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
\"\"\"
|
31
|
+
"""
|
32
|
+
And a directory named "fixtures"
|
33
|
+
And an empty file named "fixtures/fixtures-app/test.txt"
|
34
|
+
When I run `rspec`
|
35
|
+
Then the specs should all pass
|
36
|
+
|
37
|
+
Scenario: Use a fixture for your tests in test/
|
38
|
+
Given a file named "features/fixtures.feature" with:
|
39
|
+
"""
|
40
|
+
Feature: Fixture
|
41
|
+
Scenario: Fixture
|
42
|
+
Given a file named "fixtures_spec.rb" with:
|
43
|
+
\"\"\"
|
44
|
+
RSpec.describe 'My Feature' do
|
45
|
+
describe '#read_music_file' do
|
46
|
+
context 'when the file exists' do
|
47
|
+
before :each { copy '%/song.mp3', 'file.mp3' }
|
48
|
+
|
49
|
+
it { expect('file.mp3').to be_an_existing_file }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
\"\"\"
|
54
|
+
"""
|
55
|
+
And a directory named "test/fixtures"
|
56
|
+
And an empty file named "test/fixtures/fixtures-app/test.txt"
|
57
|
+
When I run `rspec`
|
58
|
+
Then the specs should all pass
|
59
|
+
|
60
|
+
Scenario: Use a fixture for your tests in spec/
|
61
|
+
Given a file named "features/fixtures.feature" with:
|
62
|
+
"""
|
63
|
+
Feature: Fixture
|
64
|
+
Scenario: Fixture
|
65
|
+
Given a file named "fixtures_spec.rb" with:
|
66
|
+
\"\"\"
|
67
|
+
RSpec.describe 'My Feature' do
|
68
|
+
describe '#read_music_file' do
|
69
|
+
context 'when the file exists' do
|
70
|
+
before :each { copy '%/song.mp3', 'file.mp3' }
|
71
|
+
|
72
|
+
it { expect('file.mp3').to be_an_existing_file }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
\"\"\"
|
77
|
+
"""
|
78
|
+
And a directory named "spec/fixtures"
|
79
|
+
And an empty file named "spec/fixtures/fixtures-app/test.txt"
|
80
|
+
When I run `rspec`
|
81
|
+
Then the specs should all pass
|
82
|
+
|
83
|
+
Scenario: Use a fixture for your tests in features/
|
84
|
+
Given a file named "features/fixtures.feature" with:
|
85
|
+
"""
|
86
|
+
Feature: Fixture
|
87
|
+
Scenario: Fixture
|
88
|
+
Given a file named "fixtures_spec.rb" with:
|
89
|
+
\"\"\"
|
90
|
+
RSpec.describe 'My Feature' do
|
91
|
+
describe '#read_music_file' do
|
92
|
+
context 'when the file exists' do
|
93
|
+
before :each { copy '%/song.mp3', 'file.mp3' }
|
94
|
+
|
95
|
+
it { expect('file.mp3').to be_an_existing_file }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
\"\"\"
|
100
|
+
"""
|
101
|
+
And a directory named "features/fixtures"
|
102
|
+
And an empty file named "features/fixtures/fixtures-app/test.txt"
|
103
|
+
When I run `rspec`
|
104
|
+
Then the specs should all pass
|