# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 package require tcltest 2 namespace import tcltest::* source "testlib.tcl" test mkdir_allows_existing_dirs "Test that mkdir(2) succeeds outside sandbox, if the directory exists" \ -setup [setup [list deny /]] \ -cleanup [expect [list "/usr" "/usr/bin" "/bin"]] \ -body {exec -ignorestderr -- ./mkdir /usr /usr/bin /bin 2>@1} \ -result "" test mkdir_denies_outside_sandbox "Test that mkdir(2) fails if attempted outside of the sandbox" \ -setup [setup [list deny /]] \ -cleanup { file delete -force "$cwd/testdirectory" [expect [list "$cwd/testdirectory"]] } \ -body {exec -ignorestderr -- ./mkdir "$cwd/testdirectory" 2>@1} \ -result "mkdir($cwd/testdirectory): Permission denied" test mkdir_allowed_inside_sandbox "Test that mkdir(2) succeeds inside of the sandbox" \ -setup [setup [list allow "$cwd"]] \ -cleanup { file delete -force "$cwd/testdirectory2" [expect] } \ -body {exec -ignorestderr -- ./mkdir "$cwd/testdirectory2" 2>@1} \ -result "" test mkdir_allowed_when_uninitialized "Test that mkdir(2) succeeds outside of the sandbox when darwintrace is uninitialized" \ -setup [setup [list deny /]] \ -cleanup [expect {}] \ -body { set ::env(DARWINTRACE_UNINITIALIZE) 1 set output [exec -ignorestderr -- ./mkdir /usr 2>@1] unset ::env(DARWINTRACE_UNINITIALIZE) return $output } \ -result "mkdir(/usr): File exists" cleanupTests