iprocess 1.0.3 → 1.0.4

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