subprocess 0.1.6 → 0.15

Sign up to get free protection for your applications and to get access to all the features.
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
-