shell_mock 0.5.0 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b756c372c9477ca0a21a3894fb4d07c35e87c14e
4
- data.tar.gz: 565cb68f40d84a3f2d97ccaa50cad9aa41f16eb1
3
+ metadata.gz: 7c6fffa51532c59b133e8176343ab0fb1d6ca8b5
4
+ data.tar.gz: 71450c650b0e65096422bb2a7f467516bf810846
5
5
  SHA512:
6
- metadata.gz: 40cf06dcafcc3e976cedac4a59623a1d47fc4c4f90f437a149d90f26ef62a3b200b6a342273bdd96036070107fa031d234a34a6fc56b457c9b0be99645257383
7
- data.tar.gz: 9cdd1c5d0e1a1d8630aa03506493b2e847ad142fe47b4a56bfd5623522b1e8268369e045ea55fa9518f596b77a002730d3e50b5dc4e1d7597848b4a5e87baf5c
6
+ metadata.gz: 92aae540345018da0abd3b68d0704f56f0e8e9aa1bdf8ecabae9cc051fb1606a7874c6dc007ac0c368ef971974997550593feb42e03e5bd25bdbd51711187a31
7
+ data.tar.gz: 2d2d7ac3b2c6a3542ab48e16d16e3b9a36d7e6ddcfc35c369c26e61b984bf1e652ec29f98cebb3ff4df4594653e8aff1fa97bff4c61a549346a05ec6d51450db
data/CHANGELOG.md CHANGED
@@ -1,11 +1,23 @@
1
1
  ## ROADMAP 1.0.0
2
2
 
3
+ * `IOPopenMonkeyPatch`
4
+ * `PTYSpawnMonkeyPatch`
5
+ * `OpenMonkeyPatch`
6
+ * should `SpawnMonkeyPatch` be 2 patches (`KernelSpawnMonkeyPatch` and `ProcessSpawnMonkeyPatch`)?
3
7
  * convert `CommandStub#and_exit` to `CommandStub#will_exit`
4
8
  * convert `CommandStub#and_output` to `CommandStub#will_output`
5
9
  * convert `CommandStub#and_return` to `CommandStub#will_return`
6
10
  * add `CommandStub#will_cause(&blk)` for specifying desired side effects
7
11
  * add `CommandStub#will_stdout(str)` & `CommandStub#will_stderr(str)`. these will work differently for backtick than it will for system & exec.
12
+ * ADD YARD DOCUMENTATION TO METHODS
8
13
  * maybe add `CommandStub#with_stdin(str)` for `spawn`?
14
+ * maybe adding the ability to specify the order in which commands output to stdout vs. stderr (like, a sequence of outputs) would be useful? would definitely be fun to build, not sure how useful it would be though.
15
+
16
+ ## RELEASE 0.6.0
17
+
18
+ * FEATURE: use `#and_succeed` to set an invocation's exit status to 0
19
+ * FEATURE: use `#and_fail` to set an invocation's exit status to 1
20
+ * FIX: `ShellMock.disable` now resets the `let_commands_run` flag, preventing that from carrying between tests
9
21
 
10
22
  ## RELEASE 0.5.0
11
23
 
data/README.adoc ADDED
@@ -0,0 +1,142 @@
1
+ = ShellMock
2
+ :ext-relative: .adoc
3
+ :source-highlighter: coderay
4
+ :sectanchors:
5
+ :linkattrs:
6
+ :icons: font
7
+ :toc: macro
8
+ :toc-title:
9
+ :toclevels: 3
10
+ ifdef::env-github[]
11
+ :tip-caption: :bulb:
12
+ :note-caption: :information_source:
13
+ :important-caption: :heavy_exclamation_mark:
14
+ :caution-caption: :fire:
15
+ :warning-caption: :warning:
16
+ endif::[]
17
+
18
+ http://badge.fury.io/rb/shell_mock[image:https://badge.fury.io/rb/shell_mock.png[Gem Version]]
19
+ http://travis-ci.org/yarmiganosca/shell_mock[image:https://secure.travis-ci.org/yarmiganosca/shell_mock.png[Build Status]]
20
+
21
+ toc::[]
22
+
23
+ == What is ShellMock?
24
+
25
+ It's http://github.com/bblimke/webmock[webmock, target="_blank"] for shell commands. It's pretty simple. You can do things like this:
26
+
27
+ [source,ruby]
28
+ ----
29
+ require 'shell_mock/rspec'
30
+
31
+ RSpec.describe "shelling out to run 'ls'" do
32
+ before { ShellMock.enable } # <1>
33
+ after { ShellMock.disable }
34
+
35
+ let(:stub) { ShellMock.stub_command('ls') } # <2>
36
+
37
+ it "works"
38
+ system('ls') # <3>
39
+
40
+ expect(stub).to have_been_called # <4>
41
+ end
42
+ end
43
+ ----
44
+ <1> enables ShellMock's monkey patches during the test
45
+ <2> creates a command stub that will match the command `"ls"` (by default it will exit `0` and have no output)
46
+ <3> shells out to run `"ls"` (in this case using `Kernel#system`)
47
+ <4> correctly expects that our command stub for `"ls"` will have recorded an invocation
48
+
49
+ == Using ShellMock
50
+
51
+ === You can narrow what invocations are matched to your command stub:
52
+
53
+ Match env vars as well as the command: `ShellMock.stub_command('ls').with_env({'FOO' => 'bar'})`
54
+
55
+ Provide a more complete invocation: `ShellMock.stub_command('ls $HOME')`
56
+
57
+ Shelling out to run `"ls"` won't match this command stub, but shelling out to run `"ls $HOME"` will.
58
+
59
+ NOTE: ShellMock always matches as strictly as possible, so if you stubbed both `"ls"` and `"ls $HOME"`, invocations of `"ls $HOME'` will only ever match against the `"ls $HOME"` stub and never the `"ls"` stub.
60
+
61
+ === Setting the behavior of the command invocation:
62
+
63
+ Have the mock command invocation write to stdout: `ShellMock.stub_command('ls').and_output("\n")`
64
+
65
+ Set the mock command invocation's exit status: `ShellMock.stub_command('ls').and_exit(2)`
66
+
67
+ Set the mock command invocation's exit status to `0`: `ShellMock.stub_command('ls').and_succeed`
68
+
69
+ Set the mock command invocation's exit status to `1`: `ShellMock.stub_command('ls').and_fail`
70
+
71
+ If you want to both write to stdout and set the exit code (a common pair), `ShellMock.stub_command('ls').and_return("\n")` will both have the command invocation write the passed string to stdout, and will set the mock command invocation's exit status to `0`.
72
+
73
+ === Specifying the expected number of command invocations:
74
+
75
+ Called exactly once: `expect(stub).to have_been_called.once`
76
+
77
+ Not called: `expect(stub).to have_been_called.never`
78
+
79
+ Not called (using RSpec expectation negation): `expect(stub).to_not have_been_called`
80
+
81
+ Called exactly `n` times: `expect(stub).to have_been_called.times(n)`
82
+
83
+ Called more than `n` times: `expect(stub).to have_been_called.more_than(n)`
84
+
85
+ Called fewer than `n` times: `expect(stub).to have_been_called.fewer_than(n)`
86
+
87
+ `less_than` can be used as an alias for `fewer_than`
88
+
89
+ == Limitations
90
+
91
+ Currently, only exact string matches of the stubbed command string are supported. Basic regex support or more complex matching for arguments and flags may be added later.
92
+
93
+ ShellMock supports stubbing these ways of shelling out in Ruby:
94
+
95
+ * https://ruby-doc.org/core/Kernel.html#method-i-60[`Kernel#``, window="_blank"] (aka "backticks")
96
+ * https://ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/syntax.html#command[`%x` command literal, window="_blank"] (which delegates to backticks)
97
+ * https://ruby-doc.org/core/Kernel.html#method-i-system[`Kernel#system`, window="_blank"]
98
+ * https://ruby-doc.org/core/Kernel.html#method-i-exec[`Kernel#exec`, window="_blank"]
99
+ * https://ruby-doc.org/core/Kernel.html#method-i-spawn[`Kernel#spawn`, window="_blank"]
100
+ * https://ruby-doc.org/core/Process.html#method-c-spawn[`Process.spawn`, window="_blank"]
101
+ * https://ruby-doc.org/stdlib/libdoc/open3/rdoc/Open3.html[the `Open3` module, window="_blank"] (since all its methods use `spawn`)
102
+
103
+ ShellMock currently *DOES NOT* support stubbing these ways of shelling out in Ruby (but will):
104
+
105
+ * https://ruby-doc.org/core/IO.html#method-c-popen[`IO.popen`, window="_blank"]
106
+ * https://ruby-doc.org/stdlib/libdoc/pty/rdoc/PTY.html#method-c-spawn[`PTY.spawn`, window="_blank"]
107
+ * https://devver.wordpress.com/2009/07/13/a-dozen-or-so-ways-to-start-sub-processes-in-ruby-part-2/[passing a string that starts with `"|"`, window="_blank"] to https://ruby-doc.org/core/Kernel.html#method-i-open[`Kernel#open`, window="_blank"]
108
+
109
+ == Installation
110
+
111
+ Add this line to your application's Gemfile:
112
+
113
+ [source,ruby]
114
+ ----
115
+ gem 'shell_mock'
116
+ ----
117
+
118
+ And then execute:
119
+
120
+ ....
121
+ $ bundle
122
+ ....
123
+
124
+ Or install it yourself as:
125
+
126
+ ....
127
+ $ gem install shell_mock
128
+ ....
129
+
130
+ == Development
131
+
132
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
133
+
134
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to https://rubygems.org[rubygems.org].
135
+
136
+ == Contributing
137
+
138
+ Bug reports and pull requests are welcome on GitHub at https://github.com/yarmiganosca/shell_mock. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the http://contributor-covenant.org[Contributor Covenant] code of conduct.
139
+
140
+ == License
141
+
142
+ The gem is available as open source under the terms of the http://opensource.org/licenses/MIT[MIT License].
@@ -16,7 +16,7 @@ module ShellMock
16
16
  stub = StubRegistry.stub_matching({}, command, {})
17
17
 
18
18
  if stub
19
- stub.called_with({}, command, {})
19
+ stub.ran
20
20
 
21
21
  stub.side_effect.call
22
22
 
@@ -1,4 +1,3 @@
1
- require 'shell_mock/call_verifier'
2
1
  require 'shell_mock/stub_registry'
3
2
 
4
3
  module ShellMock
@@ -7,12 +6,14 @@ module ShellMock
7
6
 
8
7
  def initialize(command)
9
8
  @command = command
10
- @env = {}
11
- @options = {}
12
9
  @side_effect = proc {}
13
- @exitstatus = 0
14
10
 
15
11
  @reader, @writer = IO.pipe
12
+
13
+ with_env({})
14
+ with_options({})
15
+ and_output(nil)
16
+ and_succeed
16
17
  end
17
18
 
18
19
  def with_env(env)
@@ -45,40 +46,43 @@ module ShellMock
45
46
  self
46
47
  end
47
48
 
48
- def calls
49
- @calls ||= 0
50
-
51
- marshaled_signatures.each do |marshaled_signature|
52
- @calls += 1
53
- end
54
-
55
- @calls
49
+ def and_succeed
50
+ and_exit(0)
56
51
  end
57
52
 
58
- def called_with(env, command, options)
59
- writer.puts("called\n")
53
+ def and_fail
54
+ and_exit(1)
60
55
  end
61
56
 
62
- def to_oneliner
63
- "echo '#{output}' && exit #{exitstatus}"
64
- end
65
-
66
- private
67
-
68
- attr_reader :reader, :writer
69
-
70
- def marshaled_signatures
71
- messages = ""
57
+ def runs
58
+ @runs ||= 0
72
59
 
73
60
  loop do
74
61
  begin
75
- messages += reader.read_nonblock(1)
62
+ reader.read_nonblock(1)
63
+ @runs += 1
76
64
  rescue IO::WaitReadable
77
65
  break
78
66
  end
79
67
  end
80
68
 
81
- messages.split("\n")
69
+ @runs
82
70
  end
71
+
72
+ def ran
73
+ writer.write("R")
74
+ end
75
+
76
+ def to_oneliner
77
+ if output
78
+ "echo '#{output}' && exit #{exitstatus}"
79
+ else
80
+ "exit #{exitstatus}"
81
+ end
82
+ end
83
+
84
+ private
85
+
86
+ attr_reader :reader, :writer
83
87
  end
84
88
  end
@@ -16,7 +16,7 @@ module ShellMock
16
16
  stub = StubRegistry.stub_matching(env, command, options)
17
17
 
18
18
  if stub
19
- stub.called_with(env, command, options)
19
+ stub.ran
20
20
 
21
21
  stub.side_effect.call
22
22
 
@@ -1,9 +1,11 @@
1
- require 'shell_mock/call_verifier'
1
+ require 'shell_mock/run_verifier'
2
2
 
3
3
  module ShellMock
4
4
  module Matchers
5
- def have_been_called
6
- ShellMock::CallVerifier.new
5
+ def have_run
6
+ ShellMock::RunVerifier.new
7
7
  end
8
+ alias have_been_called have_run
9
+ alias have_ran have_run
8
10
  end
9
11
  end
@@ -1,5 +1,3 @@
1
- require 'shell_mock'
2
-
3
1
  require 'rspec/core'
4
2
  require 'rspec/expectations'
5
3
 
@@ -1,24 +1,24 @@
1
1
  module ShellMock
2
- class CallVerifier
2
+ class RunVerifier
3
3
  def initialize
4
4
  more_than(0)
5
5
  end
6
6
 
7
7
  def times(n)
8
- match_calls_when { |calls| calls == n }
8
+ match_runs_when { |runs| runs == n }
9
9
 
10
10
  self
11
11
  end
12
12
 
13
13
  def fewer_than(n)
14
- match_calls_when { |calls| calls < n }
14
+ match_runs_when { |runs| runs < n }
15
15
 
16
16
  self
17
17
  end
18
18
  alias less_than fewer_than
19
19
 
20
20
  def more_than(n)
21
- match_calls_when { |calls| calls > n }
21
+ match_runs_when { |runs| runs > n }
22
22
 
23
23
  self
24
24
  end
@@ -34,7 +34,7 @@ module ShellMock
34
34
  def matches?(command_stub)
35
35
  @command_stub = command_stub
36
36
 
37
- condition.call(command_stub.calls)
37
+ condition.call(command_stub.runs)
38
38
  end
39
39
 
40
40
  def failure_message
@@ -49,7 +49,7 @@ module ShellMock
49
49
 
50
50
  attr_reader :command_stub, :condition
51
51
 
52
- def match_calls_when(&blk)
52
+ def match_runs_when(&blk)
53
53
  @condition = blk
54
54
  end
55
55
  end
@@ -16,7 +16,7 @@ module ShellMock
16
16
  stub = StubRegistry.stub_matching(env, command, options)
17
17
 
18
18
  if stub
19
- stub.called_with(env, command, options)
19
+ stub.ran
20
20
 
21
21
  stub.side_effect.call
22
22
 
@@ -16,7 +16,7 @@ module ShellMock
16
16
  stub = StubRegistry.stub_matching(env, command, options)
17
17
 
18
18
  if stub
19
- stub.called_with(env, command, options)
19
+ stub.ran
20
20
 
21
21
  stub.side_effect.call
22
22
 
@@ -1,3 +1,3 @@
1
1
  module ShellMock
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/lib/shell_mock.rb CHANGED
@@ -3,6 +3,7 @@ require 'shell_mock/stub_registry'
3
3
  require 'shell_mock/command_stub'
4
4
  require 'shell_mock/monkey_patches'
5
5
  require 'shell_mock/core_ext/module'
6
+ require 'shell_mock/rspec'
6
7
 
7
8
  module ShellMock
8
9
  def self.stub_command(command)
@@ -42,7 +43,8 @@ module ShellMock
42
43
 
43
44
  StubRegistry.clear
44
45
 
45
- @enabled = false
46
+ @enabled = false
47
+ @let_commands_run = nil
46
48
 
47
49
  true
48
50
  end
data/shell_mock.gemspec CHANGED
@@ -25,4 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'simplecov'
26
26
  spec.add_development_dependency 'pry-byebug'
27
27
  spec.add_development_dependency "structured_changelog", "~> 0.8"
28
+ spec.add_development_dependency "asciidoctor"
28
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shell_mock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hoffman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-24 00:00:00.000000000 Z
11
+ date: 2018-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: asciidoctor
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: WebMock for shell commands
98
112
  email:
99
113
  - yarmiganosca@gmail.com
@@ -109,13 +123,12 @@ files:
109
123
  - CODE_OF_CONDUCT.md
110
124
  - Gemfile
111
125
  - LICENSE.txt
112
- - README.md
126
+ - README.adoc
113
127
  - Rakefile
114
128
  - bin/console
115
129
  - bin/setup
116
130
  - lib/shell_mock.rb
117
131
  - lib/shell_mock/backtick_monkey_patch.rb
118
- - lib/shell_mock/call_verifier.rb
119
132
  - lib/shell_mock/command_stub.rb
120
133
  - lib/shell_mock/core_ext/module.rb
121
134
  - lib/shell_mock/exec_monkey_patch.rb
@@ -124,6 +137,7 @@ files:
124
137
  - lib/shell_mock/no_stub_specified.rb
125
138
  - lib/shell_mock/rspec.rb
126
139
  - lib/shell_mock/rspec/matchers.rb
140
+ - lib/shell_mock/run_verifier.rb
127
141
  - lib/shell_mock/spawn_monkey_patch.rb
128
142
  - lib/shell_mock/stub_registry.rb
129
143
  - lib/shell_mock/system_monkey_patch.rb
data/README.md DELETED
@@ -1,107 +0,0 @@
1
- # ShellMock
2
- [![Gem Version](https://badge.fury.io/rb/shell_mock.png)](http://badge.fury.io/rb/shell_mock)
3
- [![Build Status](https://secure.travis-ci.org/yarmiganosca/shell_mock.png)](http://travis-ci.org/yarmiganosca/shell_mock)
4
-
5
- It's [webmock](http://github.com/bblimke/webmock) for shell commands. It's pretty simple. You can do things like this:
6
-
7
- ```ruby
8
- require 'shell_mock/rspec'
9
-
10
- RSpec.describe "shelling out to run 'ls'" do
11
- before { ShellMock.enable }
12
- after { ShellMock.disable }
13
-
14
- let(:stub) { ShellMock.stub_command('ls') }
15
-
16
- it "works"
17
- expect(system('ls')).to eq true
18
-
19
- expect(stub).to have_been_called
20
- end
21
- end
22
- ```
23
-
24
- This:
25
- 1. enables ShellMock's monkey patches during the test
26
- 2. creates a command stub that will match the command `"ls"` (by default it will exit `0` and have no output)
27
- 3. shells out to run `"ls"` (in this case using `Kernel#system`)
28
- 4. correctly expects that our command stub for `"ls"` will have recorded an invocation
29
-
30
- ### You can narrow what invocations are matched to your command stub:
31
-
32
- **Match env vars as well as the command:** `ShellMock.stub_command('ls').with_env({'FOO' => 'bar'})`
33
-
34
- **Provide a more complete invocation:** `ShellMock.stub_command('ls $HOME')`
35
-
36
- Shelling out to run `"ls"` won't match this command stub, but shelling out to run `"ls $HOME"` will. ShellMock always matches as strictly as possible, so if you stubbed `"ls"` and `"ls $HOME"`, invocations of `"ls $HOME'` would only ever match against the latter.
37
-
38
- ### Setting the behavior of the command invocation:
39
-
40
- **Have the mock command invocation write to stdout:** `ShellMock.stub_command('ls').and_output("\n")`
41
-
42
- **Set the mock command invocation's exit status:** `ShellMock.stub_command('ls').and_exit(2)`
43
-
44
- If you want to both write to stdout and set the exit code (a common pair), `ShellMock.stub_command('ls').and_return("\n")` will both have the command invocation write the passed string to stdout, and will set the mock command invocation's exit status to `0`.
45
-
46
- ### Specifying the expected number of command invocations:
47
-
48
- **Called exactly once:** `expect(stub).to have_been_called.once`
49
-
50
- **Not called:** `expect(stub).to have_been_called.never`
51
-
52
- **Not called (using RSpec expectation negation):** `expect(stub).to_not have_been_called`
53
-
54
- **Called exactly `n` times:** `expect(stub).to have_been_called.times(n)`
55
-
56
- **Called more than `n` times:** `expect(stub).to have_been_called.more_than(n)`
57
-
58
- **Called fewer than `n` times:** `expect(stub).to have_been_called.fewer_than(n)`
59
-
60
- `less_than` can be used as an alias for `fewer_than`
61
- ## Limitations
62
-
63
- Currently, only exact string matches of the stubbed command string are supported. Basic regex support or more complex matching for arguments and flags may be added later.
64
-
65
- ShellMock supports stubbing these ways of shelling out in Ruby:
66
- * [`` Kernel#` ``](https://ruby-doc.org/core/Kernel.html#method-i-60) (aka "backticks")
67
- * [`%x` command literal](https://ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/syntax.html#command) (which delegates to backticks)
68
- * [`Kernel#system`](https://ruby-doc.org/core/Kernel.html#method-i-system)
69
- * [`Kernel#exec`](https://ruby-doc.org/core/Kernel.html#method-i-exec)
70
- * [`Kernel#spawn`](https://ruby-doc.org/core/Kernel.html#method-i-spawn)
71
- * [`Process.spawn`](https://ruby-doc.org/core/Process.html#method-c-spawn)
72
- * [the `Open3` module](https://ruby-doc.org/stdlib/libdoc/open3/rdoc/Open3.html) (since all its methods use `spawn`)
73
-
74
- ShellMock currently DOES NOT support stubbing these ways of shelling out in Ruby (but will):
75
- * [`IO.popen`](https://ruby-doc.org/core/IO.html#method-c-popen)
76
- * [`PTY.spawn`](https://ruby-doc.org/stdlib/libdoc/pty/rdoc/PTY.html#method-c-spawn)
77
- * [passing a string that starts with `"|"`](https://devver.wordpress.com/2009/07/13/a-dozen-or-so-ways-to-start-sub-processes-in-ruby-part-2/) to [`Kernel#open`](https://ruby-doc.org/core/Kernel.html#method-i-open)
78
-
79
- ## Installation
80
-
81
- Add this line to your application's Gemfile:
82
-
83
- ```ruby
84
- gem 'shell_mock'
85
- ```
86
-
87
- And then execute:
88
-
89
- $ bundle
90
-
91
- Or install it yourself as:
92
-
93
- $ gem install shell_mock
94
-
95
- ## Development
96
-
97
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
98
-
99
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
100
-
101
- ## Contributing
102
-
103
- Bug reports and pull requests are welcome on GitHub at https://github.com/yarmiganosca/shell_mock. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
104
-
105
- ## License
106
-
107
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).