Skip to content
This repository was archived by the owner on Dec 29, 2018. It is now read-only.

Commit 5d100de

Browse files
author
Nick Markwell
committed
Testing and such
1 parent e33a252 commit 5d100de

File tree

7 files changed

+54
-7
lines changed

7 files changed

+54
-7
lines changed

.gemtest

Whitespace-only changes.

Rakefile

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1-
require 'bundler'
1+
require 'bundler/gem_tasks'
22

3-
Bundler::GemHelper.install_tasks
3+
require 'rake'
4+
require 'rake/testtask'
5+
6+
desc "Run all tests"
7+
task :test do
8+
Rake::TestTask.new do |t|
9+
t.libs << "test"
10+
t.pattern = "test/**/*_test.rb"
11+
t.verbose = false
12+
end
13+
end
14+
15+
task :default => :test

bin/sicuro

100644100755
File mode changed.

lib/sicuro/base.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ def self.setup(timelimit=5, memlimit=10)
99

1010
@@code_start =
1111
"require #{__FILE__.inspect};" +
12-
"#{self.class.name}.setup(#{@@timelimit.inspect}, #{@@memlimit.inspect});" +
13-
"puts #{self.class.name}._safe_eval "
12+
"Sicuro.setup(#{@@timelimit.inspect}, #{@@memlimit.inspect});" +
13+
"print Sicuro._safe_eval "
1414
end
1515

1616
def self.eval(code)
@@ -21,7 +21,7 @@ def self.eval(code)
2121
rescue Timeout::Error
2222
'<timeout hit>'
2323
rescue NameError
24-
SafeEval.setup
24+
Sicuro.setup
2525
retry
2626
end
2727
end

sicuro.gemspec

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ require 'sicuro/version'
44

55
Gem::Specification.new do |s|
66
s.name = 'sicuro'
7-
s.version = Mygem::VERSION
7+
s.version = Sicuro::VERSION
88
s.platform = Gem::Platform::RUBY
99
s.authors = ['Nick Markwell']
1010
s.email = ['[email protected]']
@@ -13,7 +13,9 @@ Gem::Specification.new do |s|
1313
s.description = %q{Safe ruby code execution in a standard ruby environment. Does not use a chroot, jail, etc. No special permissions required.}
1414

1515
s.add_runtime_dependency 'fakefs'
16-
s.add_development_dependency 'rspec', '~>2.5.0'
16+
#s.add_development_dependency 'rspec', '~>2.5.0'
17+
s.add_development_dependency 'riot', '>= 0'
18+
s.add_development_dependency 'bundler', '~> 1.0.0'
1719

1820
s.files = `git ls-files`.split("\n")
1921
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")

test/sicuro_test.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
require 'teststrap'
2+
3+
context 'Sicuro - ' do
4+
context 'printing text' do
5+
asserts('hi') { Sicuro.eval('puts "hi"') }
6+
end
7+
8+
context 'return value' do
9+
asserts('"hi"') { Sicuro.eval('"hi"') }
10+
asserts('"hi"') { Sicuro.eval("'hi'") }
11+
asserts('1') { Sicuro.eval('1') }
12+
asserts('RuntimeError: ') { Sicuro.eval('fail') }
13+
asserts('RuntimeError: ') { Sicuro.eval('fail') }
14+
end
15+
16+
context 'timeout' do
17+
asserts('<timeout hit>') { Sicuro.eval('sleep 6') }
18+
19+
# The following crashed many safe eval systems, including many versions of
20+
# rubino, where sicuro was pulled from.
21+
asserts('<timeout hit>') { Sicuro.eval('def Exception.to_s;loop{};end;loop{}') }
22+
end
23+
end

test/teststrap.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
require 'bundler'
2+
begin
3+
Bundler.setup(:default, :development)
4+
rescue Bundler::BundlerError => e
5+
$stderr.puts e.message
6+
$stderr.puts "Run `bundle install` to install missing gems"
7+
exit e.status_code
8+
end
9+
require 'riot'
10+
require 'sicuro'

0 commit comments

Comments
 (0)