iprocess 1.0.3 → 1.0.4

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/Rakefile CHANGED
@@ -2,7 +2,6 @@ require 'bundler/gem_tasks'
2
2
 
3
3
  desc 'Run test suite.'
4
4
  task :test do
5
- $LOAD_PATH.unshift './lib'
6
5
  require './test/setup'
7
6
  end
8
7
 
@@ -1,3 +1,3 @@
1
1
  class IProcess
2
- VERSION = '1.0.3'
2
+ VERSION = '1.0.4'
3
3
  end
data/lib/iprocess.rb CHANGED
@@ -1,5 +1,11 @@
1
1
  class IProcess
2
2
 
3
+ require 'set'
4
+ require_relative 'iprocess/version'
5
+ require_relative 'iprocess/channel'
6
+ require_relative 'iprocess/job'
7
+ require_relative 'iprocess/delegator'
8
+
3
9
  #
4
10
  # @return [IProcess]
5
11
  #
@@ -64,7 +70,7 @@ class IProcess
64
70
  #
65
71
  def fork &block
66
72
  unless block_given?
67
- raise ArgumentError, "No block given."
73
+ raise ArgumentError, "Wrong number of arguments (0 for 1)"
68
74
  end
69
75
 
70
76
  scope = @scope || block.binding
@@ -89,9 +95,3 @@ class IProcess
89
95
  end
90
96
 
91
97
  end
92
-
93
- require 'set'
94
- require 'iprocess/version'
95
- require 'iprocess/channel'
96
- require 'iprocess/job'
97
- require 'iprocess/delegator'
@@ -1,12 +1,13 @@
1
1
  context IProcess::Job do
2
2
  context 'spawn' do
3
- it 'must spawn two workers and return the result of each.' do
3
+ it 'spawns two Proc workers.' do
4
4
  topic = IProcess::Job.spawn(2) { :ok }
5
5
  topic.must_equal([:ok, :ok])
6
6
  end
7
7
 
8
- it 'must spawn non-Proc workers and return the result of each.' do
9
- worker = Class.new do
8
+ it 'spawns two non-Proc workers.' do
9
+ worker =
10
+ Class.new do
10
11
  def call
11
12
  :ok
12
13
  end
@@ -15,18 +16,11 @@ context IProcess::Job do
15
16
  topic = IProcess::Job.spawn(2, worker.new)
16
17
  topic.must_equal([:ok, :ok])
17
18
  end
18
-
19
- it 'must accept any object responding to #call.' do
20
- mock = MiniTest::Mock.new
21
- mock.expect(:call, :ok)
22
-
23
- IProcess::Job.spawn(1, mock)
24
- end
25
19
  end
26
20
 
27
21
  context 'initialize' do
28
- it "must raise a ArgumentError if not given a object responding to #call" do
29
- proc { IProcess::Job.new("") }.must_raise(ArgumentError)
22
+ it "raises if given an object who cannot respond to #call." do
23
+ proc { IProcess::Job.new(nil) }.must_raise(ArgumentError)
30
24
  end
31
25
  end
32
26
  end
@@ -1,25 +1,27 @@
1
1
  context IProcess do
2
2
 
3
3
  context 'initialize' do
4
- it 'must call block if given.' do
4
+ it 'calls a block, if given.' do
5
5
  mock = MiniTest::Mock.new
6
6
  mock.expect :ok, nil
7
-
7
+
8
8
  IProcess.new do
9
9
  mock.ok
10
10
  end
11
+
12
+ mock.verify
11
13
  end
12
14
  end
13
15
 
14
16
  context 'share' do
15
- it 'must share a variable.' do
17
+ it 'shares a variable.' do
16
18
  IProcess.new do
17
19
  share :a
18
20
  variables.must_equal [:a]
19
21
  end
20
22
  end
21
23
 
22
- it "must not store duplicate variables" do
24
+ it "does not store duplicate variables" do
23
25
  IProcess.new do
24
26
  share :a, :a
25
27
  variables.must_equal [:a]
@@ -28,7 +30,7 @@ context IProcess do
28
30
  end
29
31
 
30
32
  context 'unshare' do
31
- it "must unshare a variable." do
33
+ it "unshares a variable." do
32
34
  IProcess.new do
33
35
  share :a
34
36
  unshare :a
@@ -38,58 +40,68 @@ context IProcess do
38
40
  end
39
41
 
40
42
  context 'fork' do
41
- it 'must return the PID on success.' do
43
+ it 'returns the Process ID(PID) on success.' do
42
44
  pid = IProcess.new.fork { }
43
45
  assert_equal Fixnum, pid.class
44
46
  end
45
47
 
46
- it 'must raise a ArgumentError if a block is not given.' do
48
+ it 'raises if no block is given.' do
47
49
  obj = IProcess.new
48
50
 
49
- assert_raises ArgumentError do
51
+ assert_raises(ArgumentError) do
50
52
  obj.fork
51
53
  end
52
54
  end
53
55
 
54
- it 'must synchronize a shared variable.' do
55
- variable = :o_O
56
+ it 'synchronizes a shared variable.' do
57
+ local = 1
56
58
 
57
59
  IProcess.new do
58
- share :variable
59
- fork { variable = :ok }
60
+ share :local
61
+ fork { local = 2 }
60
62
  end
61
63
 
62
- variable.must_equal(:ok)
64
+ local.must_equal(2)
63
65
  end
64
66
 
65
- it 'must synchronize two shared variables.' do
66
- variable1 = :o_O
67
- variable2 = :UnF
67
+ it 'synchronizes two shared variables.' do
68
+ local1, local2 = 1, 2
68
69
 
69
70
  IProcess.new do
70
- share :variable1, :variable2
71
+ share :local1, :local2
72
+
71
73
  fork do
72
- variable1 = 123
73
- variable2 = 456
74
+ local1 = 5
75
+ local2 = 9
74
76
  end
75
77
  end
76
78
 
77
- variable1.must_equal(123)
78
- variable2.must_equal(456)
79
+ local1.must_equal(5)
80
+ local2.must_equal(9)
79
81
  end
80
82
 
81
- it 'must synchronize a instance variable.' do
82
- @ivar = :o_O
83
+ it 'synchronizes a instance variable.' do
84
+ @ivar = :ivar
83
85
 
84
86
  IProcess.new do
85
87
  share :@ivar
86
88
 
87
89
  fork do
88
- @ivar = :ok
90
+ @ivar = 2
89
91
  end
90
92
  end
91
93
 
92
- @ivar.must_equal(:ok)
94
+ @ivar.must_equal(2)
95
+ end
96
+
97
+ it 'provide access to surrounding local variables.' do
98
+ local = :local
99
+
100
+ IProcess.new do
101
+ fork do
102
+ local.must_equal(:local)
103
+ end
104
+ end
93
105
  end
94
106
  end
95
107
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iprocess
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-01 00:00:00.000000000 Z
12
+ date: 2012-03-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yard
16
- requirement: &70290035154960 !ruby/object:Gem::Requirement
16
+ requirement: &70123289432540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.7'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70290035154960
24
+ version_requirements: *70123289432540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redcarpet
27
- requirement: &70290035154500 !ruby/object:Gem::Requirement
27
+ requirement: &70123289429380 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.17'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70290035154500
35
+ version_requirements: *70123289429380
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: minitest
38
- requirement: &70290035154040 !ruby/object:Gem::Requirement
38
+ requirement: &70123289427480 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.6'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70290035154040
46
+ version_requirements: *70123289427480
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &70290035169940 !ruby/object:Gem::Requirement
49
+ requirement: &70123285324240 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: 0.9.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70290035169940
57
+ version_requirements: *70123285324240
58
58
  description: A Domain Specific Language(DSL) for sharing Ruby objectsbetween processes
59
59
  on UNIX-like operating systems.
60
60
  email: rob@flowof.info
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  version: 1.3.6
100
100
  requirements: []
101
101
  rubyforge_project: ! '[none]'
102
- rubygems_version: 1.8.15
102
+ rubygems_version: 1.8.11
103
103
  signing_key:
104
104
  specification_version: 3
105
105
  summary: A Domain Specific Language(DSL) for sharing Ruby objectsbetween processes