childprocess 0.9.0 → 1.0.1

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.document +6 -6
  3. data/.gitignore +28 -28
  4. data/.rspec +1 -1
  5. data/.travis.yml +51 -44
  6. data/CHANGELOG.md +61 -49
  7. data/Gemfile +18 -15
  8. data/LICENSE +20 -20
  9. data/README.md +212 -196
  10. data/Rakefile +61 -61
  11. data/appveyor.yml +54 -60
  12. data/childprocess.gemspec +30 -30
  13. data/ext/mkrf_conf.rb +24 -0
  14. data/lib/childprocess.rb +210 -205
  15. data/lib/childprocess/abstract_io.rb +36 -36
  16. data/lib/childprocess/abstract_process.rb +192 -192
  17. data/lib/childprocess/errors.rb +37 -26
  18. data/lib/childprocess/jruby.rb +56 -56
  19. data/lib/childprocess/jruby/io.rb +16 -16
  20. data/lib/childprocess/jruby/process.rb +184 -159
  21. data/lib/childprocess/jruby/pump.rb +53 -53
  22. data/lib/childprocess/tools/generator.rb +145 -145
  23. data/lib/childprocess/unix.rb +9 -9
  24. data/lib/childprocess/unix/fork_exec_process.rb +70 -70
  25. data/lib/childprocess/unix/io.rb +21 -21
  26. data/lib/childprocess/unix/lib.rb +186 -186
  27. data/lib/childprocess/unix/platform/i386-linux.rb +12 -12
  28. data/lib/childprocess/unix/platform/i386-solaris.rb +11 -11
  29. data/lib/childprocess/unix/platform/x86_64-linux.rb +12 -12
  30. data/lib/childprocess/unix/platform/x86_64-macosx.rb +11 -11
  31. data/lib/childprocess/unix/posix_spawn_process.rb +134 -134
  32. data/lib/childprocess/unix/process.rb +89 -89
  33. data/lib/childprocess/version.rb +3 -3
  34. data/lib/childprocess/windows.rb +33 -33
  35. data/lib/childprocess/windows/handle.rb +91 -91
  36. data/lib/childprocess/windows/io.rb +25 -25
  37. data/lib/childprocess/windows/lib.rb +416 -416
  38. data/lib/childprocess/windows/process.rb +130 -130
  39. data/lib/childprocess/windows/process_builder.rb +178 -175
  40. data/lib/childprocess/windows/structs.rb +148 -148
  41. data/spec/abstract_io_spec.rb +12 -12
  42. data/spec/childprocess_spec.rb +447 -422
  43. data/spec/get_env.ps1 +13 -0
  44. data/spec/io_spec.rb +228 -228
  45. data/spec/jruby_spec.rb +24 -24
  46. data/spec/pid_behavior.rb +12 -12
  47. data/spec/platform_detection_spec.rb +86 -86
  48. data/spec/spec_helper.rb +270 -261
  49. data/spec/unix_spec.rb +57 -57
  50. data/spec/windows_spec.rb +23 -23
  51. metadata +17 -31
@@ -1,57 +1,57 @@
1
- require File.expand_path('../spec_helper', __FILE__)
2
- require "pid_behavior"
3
-
4
- if ChildProcess.unix? && !ChildProcess.jruby? && !ChildProcess.posix_spawn?
5
-
6
- describe ChildProcess::Unix::Process do
7
- it_behaves_like "a platform that provides the child's pid"
8
-
9
- it "handles ECHILD race condition where process dies between timeout and KILL" do
10
- process = sleeping_ruby
11
-
12
- allow(process).to receive(:fork).and_return('fakepid')
13
- allow(process).to receive(:send_term)
14
- allow(process).to receive(:poll_for_exit).and_raise(ChildProcess::TimeoutError)
15
- allow(process).to receive(:send_kill).and_raise(Errno::ECHILD.new)
16
-
17
- process.start
18
- expect { process.stop }.not_to raise_error
19
-
20
- allow(process).to receive(:alive?).and_return(false)
21
-
22
- process.send(:send_signal, 'TERM')
23
- end
24
-
25
- it "handles ESRCH race condition where process dies between timeout and KILL" do
26
- process = sleeping_ruby
27
-
28
- allow(process).to receive(:fork).and_return('fakepid')
29
- allow(process).to receive(:send_term)
30
- allow(process).to receive(:poll_for_exit).and_raise(ChildProcess::TimeoutError)
31
- allow(process).to receive(:send_kill).and_raise(Errno::ESRCH.new)
32
-
33
- process.start
34
- expect { process.stop }.not_to raise_error
35
-
36
- allow(process).to receive(:alive?).and_return(false)
37
-
38
- process.send(:send_signal, 'TERM')
39
- end
40
- end
41
-
42
- describe ChildProcess::Unix::IO do
43
- let(:io) { ChildProcess::Unix::IO.new }
44
-
45
- it "raises an ArgumentError if given IO does not respond to :to_io" do
46
- expect { io.stdout = nil }.to raise_error(ArgumentError, /to respond to :to_io/)
47
- end
48
-
49
- it "raises a TypeError if #to_io does not return an IO" do
50
- fake_io = Object.new
51
- def fake_io.to_io() StringIO.new end
52
-
53
- expect { io.stdout = fake_io }.to raise_error(TypeError, /expected IO, got/)
54
- end
55
- end
56
-
57
- end
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+ require "pid_behavior"
3
+
4
+ if ChildProcess.unix? && !ChildProcess.jruby? && !ChildProcess.posix_spawn?
5
+
6
+ describe ChildProcess::Unix::Process do
7
+ it_behaves_like "a platform that provides the child's pid"
8
+
9
+ it "handles ECHILD race condition where process dies between timeout and KILL" do
10
+ process = sleeping_ruby
11
+
12
+ allow(process).to receive(:fork).and_return('fakepid')
13
+ allow(process).to receive(:send_term)
14
+ allow(process).to receive(:poll_for_exit).and_raise(ChildProcess::TimeoutError)
15
+ allow(process).to receive(:send_kill).and_raise(Errno::ECHILD.new)
16
+
17
+ process.start
18
+ expect { process.stop }.not_to raise_error
19
+
20
+ allow(process).to receive(:alive?).and_return(false)
21
+
22
+ process.send(:send_signal, 'TERM')
23
+ end
24
+
25
+ it "handles ESRCH race condition where process dies between timeout and KILL" do
26
+ process = sleeping_ruby
27
+
28
+ allow(process).to receive(:fork).and_return('fakepid')
29
+ allow(process).to receive(:send_term)
30
+ allow(process).to receive(:poll_for_exit).and_raise(ChildProcess::TimeoutError)
31
+ allow(process).to receive(:send_kill).and_raise(Errno::ESRCH.new)
32
+
33
+ process.start
34
+ expect { process.stop }.not_to raise_error
35
+
36
+ allow(process).to receive(:alive?).and_return(false)
37
+
38
+ process.send(:send_signal, 'TERM')
39
+ end
40
+ end
41
+
42
+ describe ChildProcess::Unix::IO do
43
+ let(:io) { ChildProcess::Unix::IO.new }
44
+
45
+ it "raises an ArgumentError if given IO does not respond to :to_io" do
46
+ expect { io.stdout = nil }.to raise_error(ArgumentError, /to respond to :to_io/)
47
+ end
48
+
49
+ it "raises a TypeError if #to_io does not return an IO" do
50
+ fake_io = Object.new
51
+ def fake_io.to_io() StringIO.new end
52
+
53
+ expect { io.stdout = fake_io }.to raise_error(TypeError, /expected IO, got/)
54
+ end
55
+ end
56
+
57
+ end
@@ -1,23 +1,23 @@
1
- require File.expand_path('../spec_helper', __FILE__)
2
- require "pid_behavior"
3
-
4
- if ChildProcess.windows?
5
- describe ChildProcess::Windows::Process do
6
- it_behaves_like "a platform that provides the child's pid"
7
- end
8
-
9
- describe ChildProcess::Windows::IO do
10
- let(:io) { ChildProcess::Windows::IO.new }
11
-
12
- it "raises an ArgumentError if given IO does not respond to :fileno" do
13
- expect { io.stdout = nil }.to raise_error(ArgumentError, /must have :fileno or :to_io/)
14
- end
15
-
16
- it "raises an ArgumentError if the #to_io does not return an IO " do
17
- fake_io = Object.new
18
- def fake_io.to_io() StringIO.new end
19
-
20
- expect { io.stdout = fake_io }.to raise_error(ArgumentError, /must have :fileno or :to_io/)
21
- end
22
- end
23
- end
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+ require "pid_behavior"
3
+
4
+ if ChildProcess.windows?
5
+ describe ChildProcess::Windows::Process do
6
+ it_behaves_like "a platform that provides the child's pid"
7
+ end
8
+
9
+ describe ChildProcess::Windows::IO do
10
+ let(:io) { ChildProcess::Windows::IO.new }
11
+
12
+ it "raises an ArgumentError if given IO does not respond to :fileno" do
13
+ expect { io.stdout = nil }.to raise_error(ArgumentError, /must have :fileno or :to_io/)
14
+ end
15
+
16
+ it "raises an ArgumentError if the #to_io does not return an IO " do
17
+ fake_io = Object.new
18
+ def fake_io.to_io() StringIO.new end
19
+
20
+ expect { io.stdout = fake_io }.to raise_error(ArgumentError, /must have :fileno or :to_io/)
21
+ end
22
+ end
23
+ end
metadata CHANGED
@@ -1,36 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: childprocess
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jari Bakken
8
8
  - Eric Kessler
9
+ - Shane da Silva
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2018-03-10 00:00:00.000000000 Z
13
+ date: 2019-02-03 00:00:00.000000000 Z
13
14
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: ffi
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '1.0'
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.0.11
24
- type: :runtime
25
- prerelease: false
26
- version_requirements: !ruby/object:Gem::Requirement
27
- requirements:
28
- - - "~>"
29
- - !ruby/object:Gem::Version
30
- version: '1.0'
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.0.11
34
15
  - !ruby/object:Gem::Dependency
35
16
  name: rspec
36
17
  requirement: !ruby/object:Gem::Requirement
@@ -60,39 +41,41 @@ dependencies:
60
41
  - !ruby/object:Gem::Version
61
42
  version: '0.0'
62
43
  - !ruby/object:Gem::Dependency
63
- name: rake
44
+ name: coveralls
64
45
  requirement: !ruby/object:Gem::Requirement
65
46
  requirements:
66
47
  - - "<"
67
48
  - !ruby/object:Gem::Version
68
- version: '12.0'
49
+ version: '1.0'
69
50
  type: :development
70
51
  prerelease: false
71
52
  version_requirements: !ruby/object:Gem::Requirement
72
53
  requirements:
73
54
  - - "<"
74
55
  - !ruby/object:Gem::Version
75
- version: '12.0'
56
+ version: '1.0'
76
57
  - !ruby/object:Gem::Dependency
77
- name: coveralls
58
+ name: rake
78
59
  requirement: !ruby/object:Gem::Requirement
79
60
  requirements:
80
61
  - - "<"
81
62
  - !ruby/object:Gem::Version
82
- version: '1.0'
83
- type: :development
63
+ version: '13.0'
64
+ type: :runtime
84
65
  prerelease: false
85
66
  version_requirements: !ruby/object:Gem::Requirement
86
67
  requirements:
87
68
  - - "<"
88
69
  - !ruby/object:Gem::Version
89
- version: '1.0'
70
+ version: '13.0'
90
71
  description: This gem aims at being a simple and reliable solution for controlling
91
72
  external programs running in the background on any Ruby / OS combination.
92
73
  email:
93
74
  - morrow748@gmail.com
75
+ - shane@dasilva.io
94
76
  executables: []
95
- extensions: []
77
+ extensions:
78
+ - ext/mkrf_conf.rb
96
79
  extra_rdoc_files: []
97
80
  files:
98
81
  - ".document"
@@ -106,6 +89,7 @@ files:
106
89
  - Rakefile
107
90
  - appveyor.yml
108
91
  - childprocess.gemspec
92
+ - ext/mkrf_conf.rb
109
93
  - lib/childprocess.rb
110
94
  - lib/childprocess/abstract_io.rb
111
95
  - lib/childprocess/abstract_process.rb
@@ -135,6 +119,7 @@ files:
135
119
  - lib/childprocess/windows/structs.rb
136
120
  - spec/abstract_io_spec.rb
137
121
  - spec/childprocess_spec.rb
122
+ - spec/get_env.ps1
138
123
  - spec/io_spec.rb
139
124
  - spec/jruby_spec.rb
140
125
  - spec/pid_behavior.rb
@@ -162,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
147
  version: '0'
163
148
  requirements: []
164
149
  rubyforge_project: childprocess
165
- rubygems_version: 2.5.2
150
+ rubygems_version: 2.5.2.3
166
151
  signing_key:
167
152
  specification_version: 4
168
153
  summary: A simple and reliable solution for controlling external programs running
@@ -170,6 +155,7 @@ summary: A simple and reliable solution for controlling external programs runnin
170
155
  test_files:
171
156
  - spec/abstract_io_spec.rb
172
157
  - spec/childprocess_spec.rb
158
+ - spec/get_env.ps1
173
159
  - spec/io_spec.rb
174
160
  - spec/jruby_spec.rb
175
161
  - spec/pid_behavior.rb