ruby_process 0.0.9 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,22 +3,22 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  describe "RubyProcess" do
4
4
  it "should be able to clean up after itself when timeout" do
5
5
  require "timeout"
6
-
7
- Ruby_process::Cproxy.run do |data|
6
+
7
+ RubyProcess::ClassProxy.run do |data|
8
8
  sp = data[:subproc]
9
-
9
+
10
10
  begin
11
11
  Timeout.timeout(1) do
12
12
  sp.static(:Object, :sleep, 2)
13
13
  end
14
-
14
+
15
15
  raise "Expected timeout to be raised."
16
16
  rescue Timeout::Error
17
17
  #ignore.
18
18
  end
19
-
19
+
20
20
  answers = sp.instance_variable_get(:@answers)
21
- raise "'answers'-variable should be empty but wasnt: '#{answers}'." if !answers.empty?
21
+ answers.should be_empty
22
22
  end
23
23
  end
24
- end
24
+ end
@@ -1,73 +1,70 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require "spec_helper"
2
2
 
3
3
  describe "RubyProcess" do
4
+ let(:rp) { RubyProcess.new(debug: false).spawn_process }
5
+
6
+ after do
7
+ rp.destroy unless rp.destroyed?
8
+ end
9
+
4
10
  it "should be able to do basic stuff" do
5
- $rp = Ruby_process.new(:debug => false)
6
- $rp.spawn_process
7
-
8
- proxyarr = $rp.new(:Array)
11
+ proxyarr = rp.new(:Array)
9
12
  proxyarr << 1
10
13
  proxyarr << 3
11
14
  proxyarr << 5
12
- arr = proxyarr.__rp_marshal
13
-
14
- raise "Not an array." if !arr.is_a?(Array)
15
- raise "Expected three elements." if arr.length != 3
16
- raise "Expected 1" if arr[0] != 1
17
- raise "Expected 3" if arr[1] != 3
18
- raise "Expected 5" if arr[2] != 5
15
+
16
+ proxyarr.__rp_marshal.should eq [1, 3, 5]
19
17
  end
20
-
18
+
21
19
  it "should be able to pass proxy-objects as arguments." do
22
- str = $rp.new(:String, "/tmp/somefile")
20
+ str = rp.new(:String, "/tmp/somefile")
23
21
  thread_id = Thread.current.__id__
24
22
  write_called = false
25
-
26
- $rp.static(:File, :open, str, "w") do |fp|
27
- raise "Expected 'thread_id' to be the same but it wasnt: '#{thread_id}', '#{Thread.current.__id__}'." if thread_id != Thread.current.__id__
23
+
24
+ rp.static(:File, :open, str, "w") do |fp|
25
+ thread_id.should eq Thread.current.__id__
28
26
  fp.write("Test!")
29
27
  write_called = true
30
28
  end
31
-
32
- raise "Expected 'write' on file-pointer to be called, but it wasnt." if !write_called
33
- read = File.read(str.__rp_marshal)
34
- raise "Unexpected content of file: '#{read}'." if read != "Test!"
29
+
30
+ write_called.should eq true
31
+ File.read(str.__rp_marshal).should eq "Test!"
35
32
  end
36
-
33
+
37
34
  it "should be able to write files" do
38
35
  fpath = "/tmp/ruby_process_file_write_test"
39
- fp = $rp.static(:File, :open, fpath, "w")
36
+ fp = rp.static(:File, :open, fpath, "w")
40
37
  fp.write("Test!")
41
38
  fp.close
42
-
43
- raise "Expected 'Test!'" if File.read(fpath) != "Test!"
39
+
40
+ File.read(fpath).should eq "Test!"
44
41
  end
45
-
42
+
46
43
  it "should do garbage collection" do
47
44
  GC.start
48
45
  end
49
-
46
+
50
47
  it "should be able to do static calls" do
51
- pid = $rp.static(:Process, :pid).__rp_marshal
52
- raise "Expected stuff to be finalized but it wasnt." if $rp.finalize_count <= 0 if RUBY_ENGINE != "jruby"
53
- raise "Unexpcted" if !pid.is_a?(Fixnum) and !pid.is_a?(Integer)
48
+ pid = rp.static(:Process, :pid).__rp_marshal
49
+ rp.finalize_count.should be <= 0 unless RUBY_ENGINE == "jruby"
50
+ raise "Not a number" if !pid.is_a?(Fixnum) && !pid.is_a?(Integer)
54
51
  end
55
-
52
+
56
53
  it "should be able to handle blocking blocks" do
57
54
  run_count = 0
58
55
  fpath = "/tmp/ruby_process_file_write_test"
59
- $rp.static(:File, :open, fpath, "w") do |fp|
56
+ rp.static(:File, :open, fpath, "w") do |fp|
60
57
  sleep 0.1
61
58
  run_count += 1
62
59
  fp.write("Test!!!")
63
60
  end
64
-
65
- raise "Expected run-count to be 1 but it wasnt: '#{run_count}'." if run_count <= 0
66
- raise "Expected 'Test!'" if File.read(fpath) != "Test!!!"
61
+
62
+ run_count.should > 0
63
+ File.read(fpath).should eq "Test!!!"
67
64
  end
68
-
65
+
69
66
  it "should be able to do slow block-results in JRuby." do
70
- $rp.str_eval("
67
+ rp.str_eval("
71
68
  class ::Kaspertest
72
69
  def self.kaspertest
73
70
  8.upto(12) do |i|
@@ -76,51 +73,51 @@ describe "RubyProcess" do
76
73
  end
77
74
  end
78
75
  end
79
-
76
+
80
77
  nil
81
78
  ")
82
-
79
+
83
80
  require "timeout"
84
81
  Timeout.timeout(10) do
85
82
  expect = 8
86
- $rp.static("Kaspertest", "kaspertest") do |count|
87
- raise "Expected '#{expect}' but got: '#{count.__rp_marshal}'." if expect != count.__rp_marshal
83
+ rp.static("Kaspertest", "kaspertest") do |count|
84
+ expect.should eq count.__rp_marshal
88
85
  expect += 1
89
86
  end
90
-
91
- raise "Expected '13' but got: '#{expect}'." if expect != 13
87
+
88
+ expect.should eq 13
92
89
  end
93
90
  end
94
-
91
+
95
92
  it "should be able to handle large block-runs" do
96
93
  #Try to define an integer and run upto with a block.
97
- proxy_int = $rp.numeric(5)
98
-
94
+ proxy_int = rp.numeric(5)
95
+
99
96
  expect = 5
100
97
  proxy_int.upto(250) do |i|
101
- raise "Expected '#{expect}' but got: '#{i.__rp_marshal}'." if i.__rp_marshal != expect
98
+ i.__rp_marshal.should eq expect
102
99
  expect += 1
103
100
  end
104
-
101
+
105
102
  #Ensure the expected has actually been increased by running the block.
106
- raise "Expected end-result of 1001 but got: '#{expect}'." if expect != 251
103
+ expect.should eq 251
107
104
  end
108
-
105
+
109
106
  it "should handle stressed operations" do
110
107
  #Spawn a test-object - a string - with a variable-name.
111
- proxy_obj = $rp.new(:String, "Kasper")
112
- raise "to_s should return 'Kasper' but didnt: '#{proxy_obj.__rp_marshal}'." if proxy_obj.__rp_marshal != "Kasper"
113
-
108
+ proxy_obj = rp.new(:String, "Kasper")
109
+ proxy_obj.__rp_marshal.should eq "Kasper"
110
+
114
111
  #Stress it a little by doing 500 calls.
115
112
  0.upto(500) do
116
113
  res = proxy_obj.slice(0, 3).__rp_marshal
117
- raise "Expected output was: 'Kas' but wasnt: '#{res}'." if res != "Kas"
114
+ res.should eq "Kas"
118
115
  end
119
116
  end
120
-
117
+
121
118
  it "should be thread-safe" do
122
119
  #Do a lot of calls at the same time to test thread-safety.
123
- proxy_obj = $rp.new(:String, "Kasper")
120
+ proxy_obj = rp.new(:String, "Kasper")
124
121
  threads = []
125
122
  0.upto(5) do |thread_i|
126
123
  should_return = "Kasper".slice(0, thread_i)
@@ -128,49 +125,50 @@ describe "RubyProcess" do
128
125
  begin
129
126
  0.upto(250) do |num_i|
130
127
  res = proxy_obj.slice(0, thread_i).__rp_marshal
131
- raise "Should return: '#{should_return}' but didnt: '#{res}'." if res != should_return
128
+ res.should eq should_return
132
129
  end
133
130
  rescue => e
134
131
  Thread.current[:error] = e
135
132
  end
136
133
  end
137
-
134
+
138
135
  threads << thread
139
136
  end
140
-
137
+
141
138
  threads.each do |thread|
142
139
  thread.join
143
140
  raise thread[:error] if thread[:error]
144
141
  end
145
142
  end
146
-
143
+
147
144
  it "should be able to do evals" do
148
- res = $rp.str_eval("return 10").__rp_marshal
149
- raise "Unexpected: #{res}" if res != 10
145
+ res = rp.str_eval("return 10").__rp_marshal
146
+ res.should eq 10
150
147
  end
151
-
148
+
152
149
  it "should clean itself" do
153
- $rp.garbage_collect
150
+ rp.garbage_collect
154
151
  GC.start
155
- $rp.flush_finalized
152
+ rp.flush_finalized
156
153
  GC.start
157
- $rp.flush_finalized
154
+ rp.flush_finalized
158
155
  end
159
-
156
+
160
157
  it "should be clean and not leaking" do
161
158
  GC.start
162
- $rp.flush_finalized
159
+ rp.flush_finalized
163
160
  GC.start
164
- $rp.flush_finalized
165
-
166
- answers = $rp.instance_variable_get(:@answers)
167
- raise "Expected 0 answers to be present: #{answers}" if !answers.empty?
168
-
169
- objects = $rp.instance_variable_get(:@objects)
170
- raise "Expected 0 objects to be present: #{objects}" if !objects.empty?
161
+ rp.flush_finalized
162
+
163
+ answers = rp.instance_variable_get(:@answers)
164
+ answers.should be_empty
165
+
166
+ objects = rp.instance_variable_get(:@objects)
167
+ objects.should be_empty
171
168
  end
172
-
169
+
173
170
  it "should be able to destroy itself" do
174
- $rp.destroy
171
+ rp.destroy
172
+ rp.destroyed?.should eq true
175
173
  end
176
174
  end
@@ -1,3 +1,6 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
1
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
6
  require 'rspec'
@@ -8,5 +11,4 @@ require 'ruby_process'
8
11
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
12
 
10
13
  RSpec.configure do |config|
11
-
12
14
  end
metadata CHANGED
@@ -1,110 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_process
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.9
4
+ version: 0.0.13
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kasper Johansen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-10 00:00:00.000000000 Z
11
+ date: 2015-04-06 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
16
- none: false
14
+ name: wref
15
+ requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - ! '>='
17
+ - - ">="
19
18
  - !ruby/object:Gem::Version
20
19
  version: '0'
21
- name: wref
22
20
  type: :runtime
23
21
  prerelease: false
24
- requirement: !ruby/object:Gem::Requirement
25
- none: false
22
+ version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
- version_requirements: !ruby/object:Gem::Requirement
32
- none: false
28
+ name: tsafe
29
+ requirement: !ruby/object:Gem::Requirement
33
30
  requirements:
34
- - - ! '>='
31
+ - - ">="
35
32
  - !ruby/object:Gem::Version
36
33
  version: '0'
37
- name: tsafe
38
34
  type: :runtime
39
35
  prerelease: false
40
- requirement: !ruby/object:Gem::Requirement
41
- none: false
36
+ version_requirements: !ruby/object:Gem::Requirement
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
42
+ name: string-cases
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
47
50
  version_requirements: !ruby/object:Gem::Requirement
48
- none: false
49
51
  requirements:
50
- - - ~>
52
+ - - ">="
51
53
  - !ruby/object:Gem::Version
52
- version: 2.8.0
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
53
56
  name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.8.0
54
62
  type: :development
55
63
  prerelease: false
56
- requirement: !ruby/object:Gem::Requirement
57
- none: false
64
+ version_requirements: !ruby/object:Gem::Requirement
58
65
  requirements:
59
- - - ~>
66
+ - - "~>"
60
67
  - !ruby/object:Gem::Version
61
68
  version: 2.8.0
62
69
  - !ruby/object:Gem::Dependency
63
- version_requirements: !ruby/object:Gem::Requirement
64
- none: false
70
+ name: rdoc
71
+ requirement: !ruby/object:Gem::Requirement
65
72
  requirements:
66
- - - ~>
73
+ - - "~>"
67
74
  - !ruby/object:Gem::Version
68
75
  version: '3.12'
69
- name: rdoc
70
76
  type: :development
71
77
  prerelease: false
72
- requirement: !ruby/object:Gem::Requirement
73
- none: false
78
+ version_requirements: !ruby/object:Gem::Requirement
74
79
  requirements:
75
- - - ~>
80
+ - - "~>"
76
81
  - !ruby/object:Gem::Version
77
82
  version: '3.12'
78
83
  - !ruby/object:Gem::Dependency
79
- version_requirements: !ruby/object:Gem::Requirement
80
- none: false
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
81
86
  requirements:
82
- - - ! '>='
87
+ - - ">="
83
88
  - !ruby/object:Gem::Version
84
89
  version: 1.0.0
85
- name: bundler
86
90
  type: :development
87
91
  prerelease: false
88
- requirement: !ruby/object:Gem::Requirement
89
- none: false
92
+ version_requirements: !ruby/object:Gem::Requirement
90
93
  requirements:
91
- - - ! '>='
94
+ - - ">="
92
95
  - !ruby/object:Gem::Version
93
96
  version: 1.0.0
94
97
  - !ruby/object:Gem::Dependency
95
- version_requirements: !ruby/object:Gem::Requirement
96
- none: false
98
+ name: jeweler
99
+ requirement: !ruby/object:Gem::Requirement
97
100
  requirements:
98
- - - ~>
101
+ - - "~>"
99
102
  - !ruby/object:Gem::Version
100
103
  version: 1.8.3
101
- name: jeweler
102
104
  type: :development
103
105
  prerelease: false
104
- requirement: !ruby/object:Gem::Requirement
105
- none: false
106
+ version_requirements: !ruby/object:Gem::Requirement
106
107
  requirements:
107
- - - ~>
108
+ - - "~>"
108
109
  - !ruby/object:Gem::Version
109
110
  version: 1.8.3
110
111
  description: A framework for spawning and communicating with other Ruby-processes
@@ -113,14 +114,15 @@ executables: []
113
114
  extensions: []
114
115
  extra_rdoc_files:
115
116
  - LICENSE.txt
116
- - README.rdoc
117
+ - README.md
117
118
  files:
118
- - .document
119
- - .rspec
119
+ - ".document"
120
+ - ".rspec"
120
121
  - Gemfile
121
122
  - LICENSE.txt
122
- - README.rdoc
123
+ - README.md
123
124
  - Rakefile
125
+ - RubyProcess.gemspec
124
126
  - VERSION
125
127
  - cmds/blocks.rb
126
128
  - cmds/marshal.rb
@@ -129,16 +131,18 @@ files:
129
131
  - cmds/static.rb
130
132
  - cmds/str_eval.rb
131
133
  - cmds/system.rb
134
+ - examples/example_csv.rb
132
135
  - examples/example_file_write.rb
133
136
  - examples/example_knj_db_dump.rb
134
137
  - examples/example_strscan.rb
135
138
  - include/args_handeling.rb
136
139
  - lib/ruby_process.rb
137
- - lib/ruby_process_cproxy.rb
138
- - lib/ruby_process_proxyobj.rb
140
+ - lib/ruby_process/class_proxy.rb
141
+ - lib/ruby_process/proxy_object.rb
139
142
  - ruby_process.gemspec
140
143
  - scripts/ruby_process_script.rb
141
- - spec/cproxy_spec.rb
144
+ - shippable.yml
145
+ - spec/class_proxy_spec.rb
142
146
  - spec/hard_load_spec.rb
143
147
  - spec/leaks_spec.rb
144
148
  - spec/ruby_process_spec.rb
@@ -146,29 +150,25 @@ files:
146
150
  homepage: http://github.com/kaspernj/ruby_process
147
151
  licenses:
148
152
  - MIT
153
+ metadata: {}
149
154
  post_install_message:
150
155
  rdoc_options: []
151
156
  require_paths:
152
157
  - lib
153
158
  required_ruby_version: !ruby/object:Gem::Requirement
154
- none: false
155
159
  requirements:
156
- - - ! '>='
160
+ - - ">="
157
161
  - !ruby/object:Gem::Version
158
- segments:
159
- - 0
160
- hash: -790821121563732357
161
162
  version: '0'
162
163
  required_rubygems_version: !ruby/object:Gem::Requirement
163
- none: false
164
164
  requirements:
165
- - - ! '>='
165
+ - - ">="
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  requirements: []
169
169
  rubyforge_project:
170
- rubygems_version: 1.8.23
170
+ rubygems_version: 2.4.0
171
171
  signing_key:
172
- specification_version: 3
172
+ specification_version: 4
173
173
  summary: A framework for spawning and communicating with other Ruby-processes
174
174
  test_files: []