58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2009 Maxim Savchenko
 | |
| ! See http://factorcode.org/license.txt for BSD license.
 | |
| 
 | |
| USING: kernel accessors continuations lexer vocabs vocabs.parser
 | |
|        combinators.short-circuit sandbox tools.test ;
 | |
| 
 | |
| IN: sandbox.tests
 | |
| 
 | |
| << "sandbox.syntax" load-vocab drop >>
 | |
| USE: sandbox.syntax.private
 | |
| 
 | |
| : run-script ( x lines -- y )
 | |
|     H{ { "kernel" "kernel" } { "math" "math" } { "sequences" "sequences" } }
 | |
|     parse-sandbox call( x -- x! ) ;
 | |
| 
 | |
| [ 120 ]
 | |
| [
 | |
|     5
 | |
|     {
 | |
|         "! Simple factorial example"
 | |
|         "APPLYING: kernel math sequences ;"
 | |
|         "1 swap [ 1+ * ] each"
 | |
|     } run-script
 | |
| ] unit-test
 | |
| 
 | |
| [
 | |
|     5
 | |
|     {
 | |
|         "! Jailbreak attempt with USE:"
 | |
|         "USE: io"
 | |
|         "\"Hello world!\" print"
 | |
|     } run-script
 | |
| ]
 | |
| [
 | |
|     {
 | |
|         [ lexer-error? ]
 | |
|         [ error>> condition? ]
 | |
|         [ error>> error>> no-word-error? ]
 | |
|         [ error>> error>> name>> "USE:" = ]
 | |
|     } 1&&
 | |
| ] must-fail-with
 | |
| 
 | |
| [
 | |
|     5
 | |
|     {
 | |
|         "! Jailbreak attempt with unauthorized APPLY:"
 | |
|         "APPLY: io"
 | |
|         "\"Hello world!\" print"
 | |
|     } run-script
 | |
| ]
 | |
| [
 | |
|     {
 | |
|         [ lexer-error? ]
 | |
|         [ error>> sandbox-error? ]
 | |
|         [ error>> vocab>> "io" = ]
 | |
|     } 1&&
 | |
| ] must-fail-with
 |