exec_sandbox 0.1.1 → 0.1.2

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/exec_sandbox.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "exec_sandbox"
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Victor Costan"]
@@ -118,10 +118,15 @@ class Sandbox
118
118
  out_wr.close if out_wr
119
119
 
120
120
  # Collect information about the child.
121
+ if out_rd
122
+ out_pieces = []
123
+ out_pieces << out_rd.read rescue nil
124
+ end
121
125
  status = ExecSandbox::Wait4.wait4 pid
122
126
  if out_rd
123
- status[:out_data] = out_rd.read
127
+ out_pieces << out_rd.read rescue nil
124
128
  out_rd.close
129
+ status[:out_data] = out_pieces.join('')
125
130
  end
126
131
  status
127
132
  end
@@ -29,18 +29,37 @@ describe ExecSandbox::Sandbox do
29
29
  end
30
30
 
31
31
  describe 'pipe redirection' do
32
- before do
33
- ExecSandbox.use do |s|
34
- @result = s.run bin_fixture(:duplicate), :in_data => "Pipe test\n"
32
+ describe 'duplicate.rb' do
33
+ before do
34
+ ExecSandbox.use do |s|
35
+ @result = s.run bin_fixture(:duplicate), :in_data => "Pipe test\n"
36
+ end
37
+ end
38
+
39
+ it 'should not crash' do
40
+ @result[:exit_code].should == 0
41
+ end
42
+
43
+ it 'should produce the correct result' do
44
+ @result[:out_data].should == "Pipe test\nPipe test\n"
35
45
  end
36
46
  end
37
47
 
38
- it 'should not crash' do
39
- @result[:exit_code].should == 0
40
- end
41
-
42
- it 'should produce the correct result' do
43
- @result[:out_data].should == "Pipe test\nPipe test\n"
48
+ describe 'buffer.rb' do
49
+ let(:buffer_size) { 1024 * 1024 }
50
+ before do
51
+ ExecSandbox.use do |s|
52
+ @result = s.run [bin_fixture(:buffer), '', buffer_size.to_s]
53
+ end
54
+ end
55
+
56
+ it 'should not crash' do
57
+ @result[:exit_code].should == 0
58
+ end
59
+
60
+ it 'should produce the correct result' do
61
+ @result[:out_data].should == "S" * buffer_size
62
+ end
44
63
  end
45
64
  end
46
65
 
@@ -3,8 +3,13 @@
3
3
  # Allocates a buffer sized according to the second argument and writes it to the
4
4
  # file indicated by the first argument.
5
5
 
6
- buffer = String.new "\xFE" * ARGV[1].to_i
7
- File.open(ARGV[0], 'wb') do |f|
8
- f.write buffer
9
- f.flush
6
+ buffer = String.new "S" * ARGV[1].to_i
7
+ if ARGV[0].empty?
8
+ STDOUT.write buffer
9
+ STDOUT.flush
10
+ else
11
+ File.open(ARGV[0], 'wb') do |f|
12
+ f.write buffer
13
+ f.flush
14
+ end
10
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exec_sandbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-10-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
16
- requirement: &22094080 !ruby/object:Gem::Requirement
16
+ requirement: &24549880 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.9
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *22094080
24
+ version_requirements: *24549880
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &22093480 !ruby/object:Gem::Requirement
27
+ requirement: &24549360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.10'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *22093480
35
+ version_requirements: *24549360
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &22092840 !ruby/object:Gem::Requirement
38
+ requirement: &24548820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.6.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *22092840
46
+ version_requirements: *24548820
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &22092240 !ruby/object:Gem::Requirement
49
+ requirement: &24548320 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.7.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *22092240
57
+ version_requirements: *24548320
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yard-rspec
60
- requirement: &22091600 !ruby/object:Gem::Requirement
60
+ requirement: &24547800 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0.1'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *22091600
68
+ version_requirements: *24547800
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &22090920 !ruby/object:Gem::Requirement
71
+ requirement: &24547220 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.0.21
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *22090920
79
+ version_requirements: *24547220
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: jeweler
82
- requirement: &22089700 !ruby/object:Gem::Requirement
82
+ requirement: &24546700 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.6.4
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *22089700
90
+ version_requirements: *24546700
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rcov
93
- requirement: &22089180 !ruby/object:Gem::Requirement
93
+ requirement: &24546160 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *22089180
101
+ version_requirements: *24546160
102
102
  description: Temporary users and groups, rlimits
103
103
  email: costan@gmail.com
104
104
  executables: []
@@ -150,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  segments:
152
152
  - 0
153
- hash: 1718344234877287063
153
+ hash: -4313873554503945480
154
154
  required_rubygems_version: !ruby/object:Gem::Requirement
155
155
  none: false
156
156
  requirements: