Author: Matti Picus <matti.pi...@gmail.com> Branch: Changeset: r70963:6ef1921d8d68 Date: 2014-04-25 10:09 +0300 http://bitbucket.org/pypy/pypy/changeset/6ef1921d8d68/
Log: disable sandbox on windows, fix tests diff --git a/rpython/translator/sandbox/rsandbox.py b/rpython/translator/sandbox/rsandbox.py --- a/rpython/translator/sandbox/rsandbox.py +++ b/rpython/translator/sandbox/rsandbox.py @@ -3,6 +3,10 @@ trampolines that marshal their input arguments, dump them to STDOUT, and wait for an answer on STDIN. Enable with 'translate.py --sandbox'. """ +import sys +if sys.platform == 'win32': + raise TypeError("sandbox not supported on windows") + import py from rpython.rlib import rmarshal, types diff --git a/rpython/translator/sandbox/test/test_sandbox.py b/rpython/translator/sandbox/test/test_sandbox.py --- a/rpython/translator/sandbox/test/test_sandbox.py +++ b/rpython/translator/sandbox/test/test_sandbox.py @@ -25,7 +25,20 @@ check_str_without_nul=True) return str(t.compile()) +unsupported_platform = ('False', '') +if sys.platform == 'win32': + unsupported_platform = ('True', 'sandbox not supported on this platform') + def test_unavailable(): + def entry_point(argv): + fd = os.open("/tmp/foobar", os.O_RDONLY, 0777) + os.close(fd) + return 0 + exc = py.test.raises(TypeError, compile, entry_point) + assert str(exc).find('not supported') >= 0 +supported = py.test.mark.skipif(unsupported_platform[0], reason=unsupported_platform[1]) + +@supported def test_open_dup(): def entry_point(argv): fd = os.open("/tmp/foobar", os.O_RDONLY, 0777) @@ -43,6 +56,7 @@ f.close() assert tail == "" +@supported def test_read_write(): def entry_point(argv): fd = os.open("/tmp/foobar", os.O_RDONLY, 0777) @@ -65,6 +79,7 @@ f.close() assert tail == "" +@supported def test_dup2_access(): def entry_point(argv): os.dup2(34, 56) @@ -80,6 +95,7 @@ f.close() assert tail == "" +@supported def test_stat_ftruncate(): from rpython.translator.sandbox.sandlib import RESULTTYPE_STATRESULT from rpython.rlib.rarithmetic import r_longlong @@ -101,6 +117,7 @@ f.close() assert tail == "" +@supported def test_time(): def entry_point(argv): t = time.time() @@ -116,6 +133,7 @@ f.close() assert tail == "" +@supported def test_getcwd(): def entry_point(argv): t = os.getcwd() @@ -131,6 +149,7 @@ f.close() assert tail == "" +@supported def test_oserror(): def entry_point(argv): try: @@ -148,6 +167,7 @@ f.close() assert tail == "" +@supported def test_hybrid_gc(): def entry_point(argv): l = [] @@ -172,6 +192,7 @@ rescode = pipe.wait() assert rescode == 0 +@supported def test_segfault_1(): class A: def __init__(self, m): @@ -194,6 +215,7 @@ e.close() assert 'Invalid RPython operation' in errors +@supported def test_segfault_2(): py.test.skip("hum, this is one example, but we need to be very careful") class Base: @@ -226,6 +248,7 @@ e.close() assert '...think what kind of errors to get...' in errors +@supported def test_safe_alloc(): from rpython.rlib.rmmap import alloc, free @@ -246,6 +269,7 @@ rescode = pipe.wait() assert rescode == 0 +@supported def test_unsafe_mmap(): py.test.skip("Since this stuff is unimplemented, it won't work anyway " "however, the day it starts working, it should pass test") @@ -271,6 +295,7 @@ rescode = pipe.wait() assert rescode == 0 +@supported class TestPrintedResults: def run(self, entry_point, args, expected): diff --git a/rpython/translator/sandbox/test/test_sandlib.py b/rpython/translator/sandbox/test/test_sandlib.py --- a/rpython/translator/sandbox/test/test_sandlib.py +++ b/rpython/translator/sandbox/test/test_sandlib.py @@ -6,10 +6,10 @@ from rpython.translator.sandbox.sandlib import SimpleIOSandboxedProc from rpython.translator.sandbox.sandlib import VirtualizedSandboxedProc from rpython.translator.sandbox.sandlib import VirtualizedSocketProc -from rpython.translator.sandbox.test.test_sandbox import compile +from rpython.translator.sandbox.test.test_sandbox import compile, supported from rpython.translator.sandbox.vfs import Dir, File, RealDir, RealFile - +@supported class MockSandboxedProc(SandboxedProc): """A sandbox process wrapper that replays expected syscalls.""" @@ -35,7 +35,7 @@ do_ll_os__ll_os_write = _make_method("write") do_ll_os__ll_os_close = _make_method("close") - +@supported def test_lib(): def entry_point(argv): fd = os.open("/tmp/foobar", os.O_RDONLY, 0777) @@ -63,6 +63,7 @@ proc.handle_forever() assert proc.seen == len(proc.expected) +@supported def test_foobar(): py.test.skip("to be updated") foobar = rffi.llexternal("foobar", [rffi.CCHARP], rffi.LONG) @@ -79,6 +80,7 @@ proc.handle_forever() assert proc.seen == len(proc.expected) +@supported def test_simpleio(): def entry_point(argv): print "Please enter a number:" @@ -100,6 +102,7 @@ assert output == "Please enter a number:\nThe double is: 42\n" assert error == "" +@supported def test_socketio(): class SocketProc(VirtualizedSocketProc, SimpleIOSandboxedProc): def build_virtual_root(self): @@ -116,6 +119,7 @@ output, error = proc.communicate("") assert output.startswith('HTTP/1.0 503 Service Unavailable') +@supported def test_oserror(): def entry_point(argv): try: @@ -133,6 +137,7 @@ assert proc.seen == len(proc.expected) +@supported class SandboxedProcWithFiles(VirtualizedSandboxedProc, SimpleIOSandboxedProc): """A sandboxed process with a simple virtualized filesystem. @@ -145,6 +150,7 @@ 'this.pyc': RealFile(__file__), }) +@supported def test_too_many_opens(): def entry_point(argv): try: @@ -186,6 +192,7 @@ assert output == "All ok!\n" assert error == "" +@supported def test_fstat(): def compare(a, b, i): if a != b: @@ -219,6 +226,7 @@ assert output == "All ok!\n" assert error == "" +@supported def test_lseek(): def char_should_be(c, should): if c != should: @@ -248,6 +256,7 @@ assert output == "All ok!\n" assert error == "" +@supported def test_getuid(): def entry_point(argv): import os diff --git a/rpython/translator/sandbox/test/test_vfs.py b/rpython/translator/sandbox/test/test_vfs.py --- a/rpython/translator/sandbox/test/test_vfs.py +++ b/rpython/translator/sandbox/test/test_vfs.py @@ -2,10 +2,13 @@ import sys, stat, os from rpython.translator.sandbox.vfs import * from rpython.tool.udir import udir +from rpython.translator.sandbox.test.test_sandbox import unsupported_platform HASLINK = hasattr(os, 'symlink') def setup_module(mod): + if unsupported_platform[0] == 'True': + py.test.skip(unsupported_platform[1]) d = udir.ensure('test_vfs', dir=1) d.join('file1').write('somedata1') d.join('file2').write('somelongerdata2') _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit