win32-process 0.5.2 → 0.5.3
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.
- data/CHANGES +6 -1
- data/MANIFEST +11 -14
- data/README +8 -9
- data/Rakefile +24 -0
- data/lib/win32/process.rb +1 -1
- data/test/tc_process.rb +3 -6
- data/test/tc_process.rb~ +134 -0
- data/win32-process.gemspec +2 -2
- metadata +6 -4
- data/install.rb +0 -11
data/CHANGES
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== 0.5.3 - 29-Jul-2007
|
2
|
+
* Added a Rakefile with tasks for installation and testing.
|
3
|
+
* Removed the install.rb file (now handled by the Rakefile).
|
4
|
+
* Updated the README and MANIFEST files.
|
5
|
+
|
1
6
|
== 0.5.2 - 22-Jan-2007
|
2
7
|
* The startup_info parameter for the Process.create method now accepts
|
3
8
|
'stdin', 'stdout', and 'stderr' as valid parameters, which you can pass
|
@@ -101,4 +106,4 @@
|
|
101
106
|
* Fixed up tc_process.rb a bit.
|
102
107
|
|
103
108
|
== 0.1.0 - 19-Feb-2004
|
104
|
-
* Initial release
|
109
|
+
* Initial release
|
data/MANIFEST
CHANGED
@@ -1,14 +1,11 @@
|
|
1
|
-
CHANGES
|
2
|
-
README
|
3
|
-
MANIFEST
|
4
|
-
|
5
|
-
win32-process.gemspec
|
6
|
-
|
7
|
-
examples/
|
8
|
-
examples/
|
9
|
-
examples/
|
10
|
-
|
11
|
-
|
12
|
-
lib/win32/process.rb
|
13
|
-
|
14
|
-
test/tc_process.rb
|
1
|
+
* CHANGES
|
2
|
+
* README
|
3
|
+
* MANIFEST
|
4
|
+
* Rakefile
|
5
|
+
* win32-process.gemspec
|
6
|
+
* examples/test_create.rb
|
7
|
+
* examples/test_fork_wait.rb
|
8
|
+
* examples/test_fork_waitpid.rb
|
9
|
+
* examples/test_kill.rb
|
10
|
+
* lib/win32/process.rb
|
11
|
+
* test/tc_process.rb
|
data/README
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
|
6
6
|
= Prerequisites
|
7
7
|
Ruby 1.8.2 or later.
|
8
|
-
The 'windows-pr'
|
9
|
-
The 'sys-proctable'
|
8
|
+
The 'windows-pr' library, 0.5.2 or later.
|
9
|
+
The 'sys-proctable' library, 0.7.0 or later (test suite only).
|
10
10
|
|
11
11
|
= Supported Platforms
|
12
12
|
This code is supported on Windows NT, Windows 2000 or Windows XP Pro only.
|
@@ -14,12 +14,8 @@
|
|
14
14
|
platform.
|
15
15
|
|
16
16
|
= Installation Instructions
|
17
|
-
|
18
|
-
|
19
|
-
ruby install.rb
|
20
|
-
== Gem Installation
|
21
|
-
ruby win32-process.gemspec
|
22
|
-
win32-process-X.Y.Z-mswin32.gem
|
17
|
+
rake test (optional)
|
18
|
+
rake install (non-gem) or rake install_gem (gem)
|
23
19
|
|
24
20
|
= Synopsis
|
25
21
|
require 'win32/process'
|
@@ -89,6 +85,9 @@
|
|
89
85
|
== Notes
|
90
86
|
It is unlikely you will be able to kill system processes with this module.
|
91
87
|
It's probably better that you don't.
|
88
|
+
|
89
|
+
You will see some warnings about redefined methods if you run your code
|
90
|
+
with warnings enabled. Yup, we redefined some methods. :)
|
92
91
|
|
93
92
|
== Known Bugs
|
94
93
|
None known (though please see the +Details+ section for quirks). Any
|
@@ -105,7 +104,7 @@
|
|
105
104
|
Ruby's
|
106
105
|
|
107
106
|
== Copyright
|
108
|
-
(C) 2003-
|
107
|
+
(C) 2003-2007 Daniel J. Berger
|
109
108
|
All Rights Reserved
|
110
109
|
|
111
110
|
== Warranty
|
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rbconfig'
|
4
|
+
include Config
|
5
|
+
|
6
|
+
desc 'Install the win32-process package (non-gem)'
|
7
|
+
task :install do
|
8
|
+
install_dir = File.join(CONFIG["sitelibdir"], 'win32')
|
9
|
+
Dir.mkdir(installdir) unless File.exists?(install_dir)
|
10
|
+
cp 'lib/win32/process.rb', install_dir, :verbose => true
|
11
|
+
end
|
12
|
+
|
13
|
+
task :install_gem do
|
14
|
+
ruby 'win32-process.gemspec'
|
15
|
+
file = Dir["*.gem"].first
|
16
|
+
sh "gem install #{file}"
|
17
|
+
end
|
18
|
+
|
19
|
+
Rake::TestTask.new do |t|
|
20
|
+
t.libs << 'test'
|
21
|
+
t.verbose = true
|
22
|
+
t.warning = true
|
23
|
+
t.test_files = FileList['test/tc_process.rb']
|
24
|
+
end
|
data/lib/win32/process.rb
CHANGED
data/test/tc_process.rb
CHANGED
@@ -8,12 +8,9 @@
|
|
8
8
|
# I haven't added a lot of test cases for fork/wait because it's difficult
|
9
9
|
# to run such tests without causing havoc with TestUnit itself. Ideas
|
10
10
|
# welcome.
|
11
|
+
#
|
12
|
+
# You should run this test case via the 'rake test' task.
|
11
13
|
###############################################################################
|
12
|
-
Dir.chdir('..') if File.basename(Dir.pwd) == 'test'
|
13
|
-
$LOAD_PATH.unshift Dir.pwd
|
14
|
-
$LOAD_PATH.unshift Dir.pwd + '/lib'
|
15
|
-
Dir.chdir('test') rescue nil
|
16
|
-
|
17
14
|
require 'test/unit'
|
18
15
|
require 'win32/process'
|
19
16
|
|
@@ -46,7 +43,7 @@ class TC_Win32Process < Test::Unit::TestCase
|
|
46
43
|
end
|
47
44
|
|
48
45
|
def test_version
|
49
|
-
assert_equal('0.5.
|
46
|
+
assert_equal('0.5.3', Process::WIN32_PROCESS_VERSION)
|
50
47
|
end
|
51
48
|
|
52
49
|
def test_kill
|
data/test/tc_process.rb~
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
###############################################################################
|
2
|
+
# tc_process.rb
|
3
|
+
#
|
4
|
+
# Test suite for the win32-process package. This test suite will start
|
5
|
+
# at least two instances of Notepad on your system, which will then
|
6
|
+
# be killed. Requires the sys-proctable package.
|
7
|
+
#
|
8
|
+
# I haven't added a lot of test cases for fork/wait because it's difficult
|
9
|
+
# to run such tests without causing havoc with TestUnit itself. Ideas
|
10
|
+
# welcome.
|
11
|
+
###############################################################################
|
12
|
+
Dir.chdir('..') if File.basename(Dir.pwd) == 'test'
|
13
|
+
$LOAD_PATH.unshift Dir.pwd
|
14
|
+
$LOAD_PATH.unshift Dir.pwd + '/lib'
|
15
|
+
Dir.chdir('test') rescue nil
|
16
|
+
|
17
|
+
require 'test/unit'
|
18
|
+
require 'win32/process'
|
19
|
+
|
20
|
+
begin
|
21
|
+
require 'sys/proctable'
|
22
|
+
rescue LoadError => e
|
23
|
+
site = 'http://www.rubyforge.org/projects/sysutils'
|
24
|
+
STDERR.puts "Stopping!"
|
25
|
+
STDERR.puts "The sys/proctable module is required to run this test suite."
|
26
|
+
STDERR.puts "You can find it at #{site} or the RAA"
|
27
|
+
exit!
|
28
|
+
end
|
29
|
+
|
30
|
+
include Sys
|
31
|
+
|
32
|
+
IO.popen("notepad")
|
33
|
+
IO.popen("notepad")
|
34
|
+
sleep 1
|
35
|
+
|
36
|
+
$pids = []
|
37
|
+
ProcTable.ps{ |s|
|
38
|
+
next unless s.comm =~ /notepad/i
|
39
|
+
$pids.push(s.pid)
|
40
|
+
}
|
41
|
+
|
42
|
+
class TC_Win32Process < Test::Unit::TestCase
|
43
|
+
def setup
|
44
|
+
@pids = $pids
|
45
|
+
@pid = nil
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_version
|
49
|
+
assert_equal('0.5.3', Process::WIN32_PROCESS_VERSION)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_kill
|
53
|
+
assert_respond_to(Process, :kill)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_kill_expected_errors
|
57
|
+
assert_raises(ArgumentError){ Process.kill }
|
58
|
+
assert_raises(ProcessError){ Process.kill('SIGBOGUS') }
|
59
|
+
assert_raises(ProcessError){ Process.kill(0,9999999) }
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_kill_signal_0
|
63
|
+
pid = @pids.first
|
64
|
+
assert_nothing_raised{ Process.kill(0, pid) }
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_kill_signal_1
|
68
|
+
pid = @pids.shift
|
69
|
+
assert_nothing_raised{ Process.kill(1, pid) }
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_kill_signal_9
|
73
|
+
pid = @pids.pop
|
74
|
+
msg = "Could not find pid #{pid}"
|
75
|
+
assert_nothing_raised(msg){ Process.kill(9,pid) }
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_fork
|
79
|
+
assert_respond_to(Process, :fork)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_create
|
83
|
+
assert_respond_to(Process, :create)
|
84
|
+
assert_nothing_raised{
|
85
|
+
@pid = Process.create(
|
86
|
+
:app_name => "notepad.exe",
|
87
|
+
:creation_flags => Process::DETACHED_PROCESS,
|
88
|
+
:process_inherit => false,
|
89
|
+
:thread_inherit => true,
|
90
|
+
:cwd => "C:\\"
|
91
|
+
).process_id
|
92
|
+
}
|
93
|
+
assert_nothing_raised{ Process.kill(1, @pid) }
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_create_expected_errors
|
97
|
+
assert_raises(TypeError){ Process.create("bogusapp.exe") }
|
98
|
+
assert_raises(ProcessError){ Process.create(:app_name => "bogusapp.exe") }
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_wait
|
102
|
+
assert_respond_to(Process, :wait)
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_wait2
|
106
|
+
assert_respond_to(Process, :wait2)
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_waitpid
|
110
|
+
assert_respond_to(Process, :waitpid)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_waitpid2
|
114
|
+
assert_respond_to(Process, :waitpid2)
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_creation_constants
|
118
|
+
assert_not_nil(Process::CREATE_DEFAULT_ERROR_MODE)
|
119
|
+
assert_not_nil(Process::CREATE_NEW_CONSOLE)
|
120
|
+
assert_not_nil(Process::CREATE_NEW_PROCESS_GROUP)
|
121
|
+
assert_not_nil(Process::CREATE_NO_WINDOW)
|
122
|
+
assert_not_nil(Process::CREATE_SEPARATE_WOW_VDM)
|
123
|
+
assert_not_nil(Process::CREATE_SHARED_WOW_VDM)
|
124
|
+
assert_not_nil(Process::CREATE_SUSPENDED)
|
125
|
+
assert_not_nil(Process::CREATE_UNICODE_ENVIRONMENT)
|
126
|
+
assert_not_nil(Process::DEBUG_ONLY_THIS_PROCESS)
|
127
|
+
assert_not_nil(Process::DEBUG_PROCESS)
|
128
|
+
assert_not_nil(Process::DETACHED_PROCESS)
|
129
|
+
end
|
130
|
+
|
131
|
+
def teardown
|
132
|
+
@pids = []
|
133
|
+
end
|
134
|
+
end
|
data/win32-process.gemspec
CHANGED
@@ -2,7 +2,7 @@ require "rubygems"
|
|
2
2
|
|
3
3
|
spec = Gem::Specification.new do |gem|
|
4
4
|
gem.name = "win32-process"
|
5
|
-
gem.version = "0.5.
|
5
|
+
gem.version = "0.5.3"
|
6
6
|
gem.author = "Daniel J. Berger"
|
7
7
|
gem.email = "djberg96@gmail.com"
|
8
8
|
gem.homepage = "http://www.rubyforge.org/projects/win32utils"
|
@@ -14,7 +14,7 @@ spec = Gem::Specification.new do |gem|
|
|
14
14
|
gem.files = Dir["lib/win32/*.rb"] + Dir["test/*"] + Dir["[A-Z]*"]
|
15
15
|
gem.files.reject! { |fn| fn.include? "CVS" }
|
16
16
|
gem.require_path = "lib"
|
17
|
-
gem.extra_rdoc_files = ["README", "CHANGES"]
|
17
|
+
gem.extra_rdoc_files = ["README", "CHANGES", "MANIFEST"]
|
18
18
|
gem.add_dependency("windows-pr", ">= 0.5.2")
|
19
19
|
end
|
20
20
|
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: win32-process
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.5.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.5.3
|
7
|
+
date: 2007-07-29 00:00:00 -06:00
|
8
8
|
summary: Adds fork, wait, wait2, waitpid, waitpid2 and a special kill method
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -32,12 +32,13 @@ files:
|
|
32
32
|
- lib/win32/process.rb
|
33
33
|
- test/CVS
|
34
34
|
- test/tc_process.rb
|
35
|
+
- test/tc_process.rb~
|
35
36
|
- CHANGES
|
36
37
|
- CVS
|
37
38
|
- examples
|
38
|
-
- install.rb
|
39
39
|
- lib
|
40
40
|
- MANIFEST
|
41
|
+
- Rakefile
|
41
42
|
- README
|
42
43
|
- test
|
43
44
|
- win32-process.gemspec
|
@@ -48,6 +49,7 @@ rdoc_options: []
|
|
48
49
|
extra_rdoc_files:
|
49
50
|
- README
|
50
51
|
- CHANGES
|
52
|
+
- MANIFEST
|
51
53
|
executables: []
|
52
54
|
|
53
55
|
extensions: []
|
data/install.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# For those who don't like gems...
|
2
|
-
require 'rbconfig'
|
3
|
-
require 'ftools'
|
4
|
-
include Config
|
5
|
-
|
6
|
-
sitelibdir = CONFIG['sitelibdir']
|
7
|
-
installdir = sitelibdir + '/win32'
|
8
|
-
file = 'lib\win32\process.rb'
|
9
|
-
|
10
|
-
Dir.mkdir(installdir) unless File.exists?(installdir)
|
11
|
-
File.copy(file, installdir, true)
|