rspec-shell-expectations 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +22 -2
- data/features/developer/{assert_calls.feature → assert-calls.feature} +0 -0
- data/features/developer/{assert_stdin.feature → assert-stdin.feature} +0 -0
- data/features/developer/chain-arguments.feature +20 -0
- data/features/developer/{change_exitstatus.feature → change-exitstatus.feature} +0 -0
- data/features/developer/step_definitions/general_steps.rb +12 -2
- data/features/developer/{stub_commands.feature → stub-commands.feature} +0 -0
- data/features/developer/{stub_output.feature → stub-output.feature} +0 -0
- data/lib/rspec/shell/expectations/stubbed_call.rb +4 -0
- data/lib/rspec/shell/expectations/version.rb +1 -1
- data/spec/chain_args_spec.rb +36 -0
- metadata +16 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e9f440ad12bd32b427963ee19bac8917d16fb35
|
4
|
+
data.tar.gz: 96b950d92f8a37146454dc0b4ea7b7d56e68a94c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e1a7f3c994ca57c059da3b01506bda96c467bd305d3c9c2d33d1c0f1f035aad4d254f642f393063af0f2cea965920d1f15da60ae62ebee8cf008d15e78c635d
|
7
|
+
data.tar.gz: 2b44edac02c0ca132de37eb7cf56e21d7f5c2bffc8426dcb0374ddc6daf6f52ec53611951cd1eabf0919bd4999dc2a79f853f49e7269428a078478e0ff15ddbd
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -22,6 +22,19 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
$ gem install rspec-shell-expectations
|
24
24
|
|
25
|
+
|
26
|
+
You can setup rspec-shell-expectations globally for your spec suite:
|
27
|
+
|
28
|
+
in `spec_helper.rb`:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
require 'rspec/shell/expectations'
|
32
|
+
|
33
|
+
RSpec.configure do |c|
|
34
|
+
c.include Rspec::Shell::Expectations
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
25
38
|
## Usage
|
26
39
|
|
27
40
|
see specs in `spec/` folder:
|
@@ -29,6 +42,8 @@ see specs in `spec/` folder:
|
|
29
42
|
### Running script through stubbed env:
|
30
43
|
|
31
44
|
```ruby
|
45
|
+
require 'rspec/shell/expectations'
|
46
|
+
|
32
47
|
describe 'my shell script' do
|
33
48
|
include Rspec::Shell::Expectations
|
34
49
|
|
@@ -48,8 +63,13 @@ see specs in `spec/` folder:
|
|
48
63
|
|
49
64
|
```ruby
|
50
65
|
let(:stubbed_env) { create_stubbed_env }
|
51
|
-
|
52
|
-
|
66
|
+
let(:bundle) { stubbed_env.stub_command('bundle') }
|
67
|
+
let(:rake) { bundle.with_args('exec', 'rake') }
|
68
|
+
|
69
|
+
it 'is stubbed' do
|
70
|
+
stubbed_env.execute 'my-script.sh'
|
71
|
+
expect(rake.with_args('test')).to be_called
|
72
|
+
expect(bundle.with_args('install)).to be_called
|
53
73
|
end
|
54
74
|
```
|
55
75
|
|
File without changes
|
File without changes
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature:
|
2
|
+
In order to reduce repetition of arguments
|
3
|
+
As a developer
|
4
|
+
I want to chain arguments seperately
|
5
|
+
|
6
|
+
|
7
|
+
Scenario: Chain arguments
|
8
|
+
Given I have the shell script
|
9
|
+
"""
|
10
|
+
#!/bin/bash
|
11
|
+
bundle exec rake test
|
12
|
+
bundle exec rake build
|
13
|
+
"""
|
14
|
+
And I have stubbed "bundle" with args as "rake":
|
15
|
+
| args |
|
16
|
+
| exec |
|
17
|
+
| rake |
|
18
|
+
When I run this script in a simulated environment
|
19
|
+
Then the command "rake" is called with "test"
|
20
|
+
And the command "rake" is called with "build"
|
File without changes
|
@@ -10,6 +10,15 @@ Given(/^I have stubbed "(.*?)"$/) do |command|
|
|
10
10
|
@stubbed_command = simulated_environment.stub_command command
|
11
11
|
end
|
12
12
|
|
13
|
+
Given(/^I have stubbed "(.*?)" with args as "(.*)":$/) do |command, call, table|
|
14
|
+
# table is a Cucumber::Ast::Table
|
15
|
+
args = table.hashes.map { |d| d['args'] }
|
16
|
+
@stubbed_command = simulated_environment.stub_command(command)
|
17
|
+
.with_args(*args)
|
18
|
+
@remembered_commands ||= {}
|
19
|
+
@remembered_commands[call] = @stubbed_command
|
20
|
+
end
|
21
|
+
|
13
22
|
Given(/^I have stubbed "(.*?)" with args:$/) do |command, table|
|
14
23
|
# table is a Cucumber::Ast::Table
|
15
24
|
args = table.hashes.map { |d| d['args'] }
|
@@ -58,9 +67,10 @@ Then(/^the exitstatus will be (\d+)$/) do |statuscode|
|
|
58
67
|
expect(@status.exitstatus).to eql statuscode.to_i
|
59
68
|
end
|
60
69
|
|
61
|
-
c = /^(the command "
|
70
|
+
c = /^(the command "[^"]+")/
|
62
71
|
Transform(/^the command "(.*)"/) do |command|
|
63
|
-
|
72
|
+
cmd = (@remembered_commands || {})[command]
|
73
|
+
cmd || simulated_environment.stub_command(command)
|
64
74
|
end
|
65
75
|
|
66
76
|
Then(/#{c} is called$/) do |command|
|
File without changes
|
File without changes
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'English'
|
2
|
+
require 'rspec/shell/expectations'
|
3
|
+
|
4
|
+
describe 'Assert called' do
|
5
|
+
include Rspec::Shell::Expectations
|
6
|
+
let(:stubbed_env) { create_stubbed_env }
|
7
|
+
let!(:rake) { stubbed_env.stub_command('bundle').with_args('exec', 'rake') }
|
8
|
+
|
9
|
+
let(:script) do
|
10
|
+
<<-SCRIPT
|
11
|
+
bundle exec rake foo:bar
|
12
|
+
SCRIPT
|
13
|
+
end
|
14
|
+
let(:script_path) { Pathname.new '/tmp/test_script.sh' }
|
15
|
+
|
16
|
+
before do
|
17
|
+
script_path.open('w') { |f| f.puts script }
|
18
|
+
script_path.chmod 0777
|
19
|
+
end
|
20
|
+
|
21
|
+
after do
|
22
|
+
script_path.delete
|
23
|
+
end
|
24
|
+
|
25
|
+
subject do
|
26
|
+
stubbed_env.execute script_path.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'assert called' do
|
30
|
+
it 'returns called status' do
|
31
|
+
subject
|
32
|
+
expect(rake.with_args('foo:bar')).to be_called
|
33
|
+
expect(rake.with_args('foo')).not_to be_called
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-shell-expectations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthijs Groen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -59,13 +59,14 @@ files:
|
|
59
59
|
- Rakefile
|
60
60
|
- bin/stub
|
61
61
|
- features/README.md
|
62
|
-
- features/developer/
|
63
|
-
- features/developer/
|
64
|
-
- features/developer/
|
62
|
+
- features/developer/assert-calls.feature
|
63
|
+
- features/developer/assert-stdin.feature
|
64
|
+
- features/developer/chain-arguments.feature
|
65
|
+
- features/developer/change-exitstatus.feature
|
65
66
|
- features/developer/provide-env-vars.feature
|
66
67
|
- features/developer/step_definitions/general_steps.rb
|
67
|
-
- features/developer/
|
68
|
-
- features/developer/
|
68
|
+
- features/developer/stub-commands.feature
|
69
|
+
- features/developer/stub-output.feature
|
69
70
|
- features/developer/support/simulated_env.rb
|
70
71
|
- features/developer/support/tempfiles.rb
|
71
72
|
- features/developer/support/workfolder.rb
|
@@ -79,6 +80,7 @@ files:
|
|
79
80
|
- rspec-shell-expectations.gemspec
|
80
81
|
- spec/assert_called_spec.rb
|
81
82
|
- spec/assert_stdin_spec.rb
|
83
|
+
- spec/chain_args_spec.rb
|
82
84
|
- spec/change_exitstatus_spec.rb
|
83
85
|
- spec/provide_env_vars_spec.rb
|
84
86
|
- spec/replace_shell_commands_spec.rb
|
@@ -109,18 +111,20 @@ specification_version: 4
|
|
109
111
|
summary: Fake execution environments to TDD shell scripts
|
110
112
|
test_files:
|
111
113
|
- features/README.md
|
112
|
-
- features/developer/
|
113
|
-
- features/developer/
|
114
|
-
- features/developer/
|
114
|
+
- features/developer/assert-calls.feature
|
115
|
+
- features/developer/assert-stdin.feature
|
116
|
+
- features/developer/chain-arguments.feature
|
117
|
+
- features/developer/change-exitstatus.feature
|
115
118
|
- features/developer/provide-env-vars.feature
|
116
119
|
- features/developer/step_definitions/general_steps.rb
|
117
|
-
- features/developer/
|
118
|
-
- features/developer/
|
120
|
+
- features/developer/stub-commands.feature
|
121
|
+
- features/developer/stub-output.feature
|
119
122
|
- features/developer/support/simulated_env.rb
|
120
123
|
- features/developer/support/tempfiles.rb
|
121
124
|
- features/developer/support/workfolder.rb
|
122
125
|
- spec/assert_called_spec.rb
|
123
126
|
- spec/assert_stdin_spec.rb
|
127
|
+
- spec/chain_args_spec.rb
|
124
128
|
- spec/change_exitstatus_spec.rb
|
125
129
|
- spec/provide_env_vars_spec.rb
|
126
130
|
- spec/replace_shell_commands_spec.rb
|