subprocess 0.1.6 → 0.15

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.
Files changed (48) hide show
  1. data/README.md +72 -0
  2. data/lib/subprocess.rb +529 -20
  3. metadata +55 -121
  4. data/History.txt +0 -4
  5. data/Manifest.txt +0 -46
  6. data/PostInstall.txt +0 -7
  7. data/README.rdoc +0 -77
  8. data/Rakefile +0 -20
  9. data/TODO.rdoc +0 -1
  10. data/examples/simple.irb +0 -22
  11. data/examples/simple_timeout.irb +0 -22
  12. data/features/multiple_popens_sequence.feature +0 -23
  13. data/features/popen.feature +0 -45
  14. data/features/popen_over_ssh.feature +0 -44
  15. data/features/popen_over_ssh_without_blocking.feature +0 -16
  16. data/features/popen_remote_fails_with_invalid_auth_data.feature +0 -13
  17. data/features/popen_reports_runtime.feature +0 -11
  18. data/features/popen_running.feature +0 -11
  19. data/features/popen_with_timeout.feature +0 -19
  20. data/features/popen_without_blocking.feature +0 -16
  21. data/features/step_definitions/common_steps.rb +0 -168
  22. data/features/step_definitions/multiple_popens_sequence_steps.rb +0 -73
  23. data/features/step_definitions/popen_over_ssh_steps.rb +0 -29
  24. data/features/step_definitions/popen_over_ssh_without_blocking_steps.rb +0 -30
  25. data/features/step_definitions/popen_remote_fails_with_invalid_auth_dat_steps.rb +0 -19
  26. data/features/step_definitions/popen_reports_runtime_steps.rb +0 -13
  27. data/features/step_definitions/popen_running_steps.rb +0 -12
  28. data/features/step_definitions/popen_steps.rb +0 -34
  29. data/features/step_definitions/popen_with_timeout_steps.rb +0 -24
  30. data/features/step_definitions/popen_without_blocking_steps.rb +0 -33
  31. data/features/support/common.rb +0 -29
  32. data/features/support/env.rb +0 -15
  33. data/features/support/matchers.rb +0 -11
  34. data/lib/core_ext/hash.rb +0 -14
  35. data/lib/core_ext/process_status.rb +0 -14
  36. data/lib/subprocess/popen.rb +0 -188
  37. data/lib/subprocess/popen_factory.rb +0 -63
  38. data/lib/subprocess/popen_remote.rb +0 -64
  39. data/lib/subprocess/popen_sequence.rb +0 -57
  40. data/script/console +0 -10
  41. data/script/destroy +0 -14
  42. data/script/generate +0 -14
  43. data/spec/spec.opts +0 -1
  44. data/spec/spec_helper.rb +0 -10
  45. data/spec/subprocess/popen_spec.rb +0 -32
  46. data/spec/subprocess_spec.rb +0 -2
  47. data/subprocess.gemspec +0 -36
  48. data/tasks/rspec.rake +0 -21
metadata CHANGED
@@ -1,138 +1,72 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: subprocess
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 6
9
- version: 0.1.6
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.15'
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
12
- - Bram Swenson
7
+ authors:
8
+ - Carl Jackson
9
+ - Evan Broder
10
+ - Nelson Elhage
11
+ - Andy Brody
12
+ - Andreas Fuchs
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
-
17
- date: 2010-05-22 00:00:00 -04:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: rubyforge
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 2
29
- - 0
30
- - 4
31
- version: 2.0.4
16
+ date: 2013-09-27 00:00:00.000000000 Z
17
+ dependencies:
18
+ - !ruby/object:Gem::Dependency
19
+ name: minitest
20
+ requirement: !ruby/object:Gem::Requirement
21
+ none: false
22
+ requirements:
23
+ - - ~>
24
+ - !ruby/object:Gem::Version
25
+ version: '5.0'
32
26
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: hoe
36
27
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 2
43
- - 6
44
- - 0
45
- version: 2.6.0
46
- type: :development
47
- version_requirements: *id002
48
- description: "* Subprocess provides a clean wrapper class around the Kernel.exec method."
49
- email:
50
- - bram@craniumisajar.com
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ description: Control and communicate with spawned processes
35
+ email:
36
+ - carl@stripe.com
37
+ - evan@stripe.com
38
+ - nelhage@stripe.com
39
+ - andy@stripe.com
40
+ - asf@stripe.com
51
41
  executables: []
52
-
53
42
  extensions: []
54
-
55
- extra_rdoc_files:
56
- - History.txt
57
- - Manifest.txt
58
- - PostInstall.txt
59
- files:
60
- - History.txt
61
- - Manifest.txt
62
- - PostInstall.txt
63
- - README.rdoc
64
- - Rakefile
65
- - TODO.rdoc
66
- - examples/simple.irb
67
- - examples/simple_timeout.irb
68
- - features/multiple_popens_sequence.feature
69
- - features/popen.feature
70
- - features/popen_over_ssh.feature
71
- - features/popen_over_ssh_without_blocking.feature
72
- - features/popen_remote_fails_with_invalid_auth_data.feature
73
- - features/popen_reports_runtime.feature
74
- - features/popen_running.feature
75
- - features/popen_with_timeout.feature
76
- - features/popen_without_blocking.feature
77
- - features/step_definitions/common_steps.rb
78
- - features/step_definitions/multiple_popens_sequence_steps.rb
79
- - features/step_definitions/popen_over_ssh_steps.rb
80
- - features/step_definitions/popen_over_ssh_without_blocking_steps.rb
81
- - features/step_definitions/popen_remote_fails_with_invalid_auth_dat_steps.rb
82
- - features/step_definitions/popen_reports_runtime_steps.rb
83
- - features/step_definitions/popen_running_steps.rb
84
- - features/step_definitions/popen_steps.rb
85
- - features/step_definitions/popen_with_timeout_steps.rb
86
- - features/step_definitions/popen_without_blocking_steps.rb
87
- - features/support/common.rb
88
- - features/support/env.rb
89
- - features/support/matchers.rb
90
- - lib/core_ext/hash.rb
91
- - lib/core_ext/process_status.rb
43
+ extra_rdoc_files: []
44
+ files:
92
45
  - lib/subprocess.rb
93
- - lib/subprocess/popen.rb
94
- - lib/subprocess/popen_factory.rb
95
- - lib/subprocess/popen_remote.rb
96
- - lib/subprocess/popen_sequence.rb
97
- - script/console
98
- - script/destroy
99
- - script/generate
100
- - spec/spec.opts
101
- - spec/spec_helper.rb
102
- - spec/subprocess/popen_spec.rb
103
- - spec/subprocess_spec.rb
104
- - subprocess.gemspec
105
- - tasks/rspec.rake
106
- has_rdoc: true
107
- homepage: http://github.com/bramswenson/subprocess
46
+ - README.md
47
+ homepage: https://github.com/stripe/subprocess
108
48
  licenses: []
109
-
110
49
  post_install_message:
111
- rdoc_options:
112
- - --main
113
- - README.rdoc
114
- require_paths:
50
+ rdoc_options: []
51
+ require_paths:
115
52
  - lib
116
- required_ruby_version: !ruby/object:Gem::Requirement
117
- requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- segments:
121
- - 0
122
- version: "0"
123
- required_rubygems_version: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- segments:
128
- - 0
129
- version: "0"
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
130
65
  requirements: []
131
-
132
- rubyforge_project: subprocess
133
- rubygems_version: 1.3.6
66
+ rubyforge_project:
67
+ rubygems_version: 1.8.23
134
68
  signing_key:
135
69
  specification_version: 3
136
- summary: "* Subprocess provides a clean wrapper class around the Kernel.exec method."
70
+ summary: A port of Python's subprocess module to Ruby
137
71
  test_files: []
138
-
72
+ has_rdoc:
data/History.txt DELETED
@@ -1,4 +0,0 @@
1
- === 0.0.1 2010-03-13
2
-
3
- * 1 major enhancement:
4
- * Initial release of Subprocess!
data/Manifest.txt DELETED
@@ -1,46 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- PostInstall.txt
4
- README.rdoc
5
- Rakefile
6
- TODO.rdoc
7
- examples/simple.irb
8
- examples/simple_timeout.irb
9
- features/multiple_popens_sequence.feature
10
- features/popen.feature
11
- features/popen_over_ssh.feature
12
- features/popen_over_ssh_without_blocking.feature
13
- features/popen_remote_fails_with_invalid_auth_data.feature
14
- features/popen_reports_runtime.feature
15
- features/popen_running.feature
16
- features/popen_with_timeout.feature
17
- features/popen_without_blocking.feature
18
- features/step_definitions/common_steps.rb
19
- features/step_definitions/multiple_popens_sequence_steps.rb
20
- features/step_definitions/popen_over_ssh_steps.rb
21
- features/step_definitions/popen_over_ssh_without_blocking_steps.rb
22
- features/step_definitions/popen_remote_fails_with_invalid_auth_dat_steps.rb
23
- features/step_definitions/popen_reports_runtime_steps.rb
24
- features/step_definitions/popen_running_steps.rb
25
- features/step_definitions/popen_steps.rb
26
- features/step_definitions/popen_with_timeout_steps.rb
27
- features/step_definitions/popen_without_blocking_steps.rb
28
- features/support/common.rb
29
- features/support/env.rb
30
- features/support/matchers.rb
31
- lib/core_ext/hash.rb
32
- lib/core_ext/process_status.rb
33
- lib/subprocess.rb
34
- lib/subprocess/popen.rb
35
- lib/subprocess/popen_factory.rb
36
- lib/subprocess/popen_remote.rb
37
- lib/subprocess/popen_sequence.rb
38
- script/console
39
- script/destroy
40
- script/generate
41
- spec/spec.opts
42
- spec/spec_helper.rb
43
- spec/subprocess/popen_spec.rb
44
- spec/subprocess_spec.rb
45
- subprocess.gemspec
46
- tasks/rspec.rake
data/PostInstall.txt DELETED
@@ -1,7 +0,0 @@
1
-
2
- For more information on subprocess, see http://subprocess.rubyforge.org
3
-
4
- NOTE: Change this information in PostInstall.txt
5
- You can also delete it if you don't want it.
6
-
7
-
data/README.rdoc DELETED
@@ -1,77 +0,0 @@
1
- = subprocess
2
-
3
- * http://github.com/bramswenson/subprocess
4
-
5
- == DESCRIPTION:
6
-
7
- * Subprocess provides a clean wrapper class around the Kernel.exec method.
8
-
9
- == FEATURES/PROBLEMS:
10
-
11
- * Provides working Subprocess::Popen class used to call system commands in and object oriented manner.
12
-
13
- == SYNOPSIS:
14
-
15
- === Simple Popen
16
-
17
- >> require 'subprocess'
18
- => true
19
- >>
20
- ?> # a process to get the current version of ruby from ruby command
21
- ?> ruby_version = Subprocess::Popen.new('ruby -v')
22
- => #<Subprocess::Popen:0x7f9220bda3a8 @running=false, @command="ruby -v", @timeout=30, @ipc_parsed=false>
23
- >>
24
- ?> # run the process
25
- ?> ruby_version.run
26
- => true
27
- >>
28
- ?> # wait on process to complete (blocking method)
29
- ?> ruby_version.wait
30
- => true
31
- >>
32
- ?> # the process will have stdout
33
- ?> ruby_version.stdout
34
- => "ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux]"
35
- >>
36
- ?> # and in this case no stderr
37
- ?> ruby_version.stderr
38
- => ""
39
- >>
40
- ?> # the complete process info is in status
41
- ?> ruby_version.status
42
- => {:run_time=>0.0611081123352051, :stopsig=>nil, :exited?=>true, :pid=>16744, :termsig=>nil, :timed_out?=>false, :stopped?=>false, :success?=>true, :exitstatus=>0}
43
-
44
-
45
-
46
- == REQUIREMENTS:
47
-
48
- tested on ruby 1.8.7
49
-
50
- == INSTALL:
51
-
52
- [sudo] gem install subprocess
53
-
54
- == LICENSE:
55
-
56
- (The MIT License)
57
-
58
- Copyright (c) 2010 Bram Swenson
59
-
60
- Permission is hereby granted, free of charge, to any person obtaining
61
- a copy of this software and associated documentation files (the
62
- 'Software'), to deal in the Software without restriction, including
63
- without limitation the rights to use, copy, modify, merge, publish,
64
- distribute, sublicense, and/or sell copies of the Software, and to
65
- permit persons to whom the Software is furnished to do so, subject to
66
- the following conditions:
67
-
68
- The above copyright notice and this permission notice shall be
69
- included in all copies or substantial portions of the Software.
70
-
71
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
72
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
73
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
74
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
75
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
76
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
77
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile DELETED
@@ -1,20 +0,0 @@
1
- require 'rubygems'
2
- gem 'hoe', '>= 2.1.0'
3
- #gem 'rspec', '<= 1.3.0'
4
- require 'hoe'
5
- require 'fileutils'
6
- require './lib/subprocess'
7
-
8
- Hoe.plugin :newgem
9
- # Hoe.plugin :website
10
- Hoe.plugin :cucumberfeatures
11
-
12
- $hoe = Hoe.spec 'subprocess' do
13
- self.developer 'Bram Swenson', 'bram@craniumisajar.com'
14
- end
15
-
16
- require 'newgem/tasks'
17
- Dir['tasks/**/*.rake'].each { |t| load t }
18
-
19
- remove_task :default
20
- task :default => [:spec, :features]
data/TODO.rdoc DELETED
@@ -1 +0,0 @@
1
- * make sure rails config.gem 'subprocess' works
data/examples/simple.irb DELETED
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env irb
2
-
3
- begin
4
- require 'subprocess'
5
- rescue LoadError
6
- require 'rubygems'
7
- require 'subprocess'
8
- end
9
-
10
- # a process to get the current version of ruby from ruby command
11
- ruby_version = Subprocess::Popen.new('ruby -v')
12
- # run the process
13
- ruby_version.run
14
- # wait on process to complete (blocking method)
15
- ruby_version.wait
16
- # the process will have stdout
17
- ruby_version.stdout
18
- # and in this case no stderr
19
- ruby_version.stderr
20
- # the complete process info is in status
21
- ruby_version.status
22
-
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env irb
2
-
3
- begin
4
- require 'subprocess'
5
- rescue LoadError
6
- require 'rubygems'
7
- require 'subprocess'
8
- end
9
-
10
- # a process to get the current version of ruby from ruby command
11
- ruby_version = Subprocess::Popen.new('ruby -v')
12
- # run the process
13
- ruby_version.run
14
- # wait on process to complete (blocking method)
15
- ruby_version.wait
16
- # the process will have stdout
17
- ruby_version.stdout
18
- # and in this case no stderr
19
- ruby_version.stderr
20
- # the complete process info is in status
21
- ruby_version.status
22
-
@@ -1,23 +0,0 @@
1
- Feature: Run a sequence of simple subprocesses in order
2
-
3
- As a ruby hacker
4
- I want to run a sequence of system subprocesses in a sequential order
5
- So I can run complex sequences of commands in a simple way
6
-
7
- Scenario: run a sequence of 2 sequential subprocess successfully
8
- Given I have a subprocess sequence with 2 subprocesses to run
9
- When I run the subprocesses sequence
10
- Then the subprocess sequence completes with success
11
- And the subprocess sequence has stdout for each subprocess
12
- And the subprocess sequence has stderr for each subprocess
13
- And the subprocess sequence has status for each subprocess
14
-
15
- Scenario: run a sequence of 2 sequential subprocess where the first fails
16
- Given I have a subprocess sequence with 2 subprocesses to run with a bad one first
17
- When I run the subprocesses sequence
18
- Then the subprocess sequence completes with failure
19
-
20
- Scenario: run a sequence of sequences
21
- Given I have a subprocess sequence with 2 subprocesses sequences
22
- When I run the sequence
23
- Then the sequences run just like any other subprocess
@@ -1,45 +0,0 @@
1
- Feature: Run simple subprocesses in ruby
2
-
3
- As a ruby hacker
4
- I want to run system subprocesses
5
- And I want to have them presented as objects
6
- So that I can get more data about said subprocesses
7
- And so that I can have more fine grained control of said subprocesses
8
-
9
- Scenario Outline: run simple subprocesses
10
- Given I have a new Subprocess instance initialized with "<command>"
11
- When I invoke the run method of said subprocess
12
- And I invoke the wait method of said subprocess
13
- Then the instance should have a status attribute
14
- And the instances exit status is "<exitstatus>"
15
- And the instances stdout matches "<stdout>"
16
- And the instances stderr matches "<stderr>"
17
- And the instance should have a numerical pid
18
-
19
- Scenarios: zero exit code subprocesses with stdout
20
- | command | exitstatus | stdout | stderr |
21
- | echo 1 | 0 | 1 | |
22
-
23
- Scenarios: zero exit code subprocesses with stderr
24
- | command | exitstatus | stdout | stderr |
25
- | echo 1 1>&2 | 0 | | 1 |
26
-
27
- Scenarios: zero exit code subprocesses with stdout and stderr
28
- | command | exitstatus | stdout | stderr |
29
- | echo 1 && echo 1 1>&2 | 0 | 1 | 1 |
30
-
31
- Scenarios: nonzero exit code subprocesses with stdout
32
- | command | exitstatus | stdout | stderr |
33
- | echo 1 && exit 1 | 1 | 1 | |
34
- | echo 1 && exit 2 | 2 | 1 | |
35
- | echo 1 && exit 99 | 99 | 1 | |
36
-
37
- Scenarios: nonzero exit code subprocesses with stderr
38
- | command | exitstatus | stdout | stderr |
39
- | echo 1 1>&2 && exit 1 | 1 | | 1 |
40
-
41
- Scenarios: nonzero exit code subprocesses with stdout and stderr
42
- | command | exitstatus | stdout | stderr |
43
- | echo 1 && echo 1 1>&2 && exit 1 | 1 | 1 | 1 |
44
-
45
-