require "testing_env"
require "sandbox"

class SandboxTest < Homebrew::TestCase
  def setup
    skip "sandbox not implemented" unless Sandbox.available?
  end

  def test_allow_write
    s = Sandbox.new
    testpath = Pathname.new(TEST_TMPDIR)
    foo = testpath/"foo"
    s.allow_write foo
    s.exec "touch", foo
    assert_predicate foo, :exist?
    foo.unlink
  end

  def test_deny_write
    s = Sandbox.new
    testpath = Pathname.new(TEST_TMPDIR)
    bar = testpath/"bar"
    shutup do
      assert_raises(ErrorDuringExecution) { s.exec "touch", bar }
    end
    refute_predicate bar, :exist?
  end
end

require "testing_env"
require "sandbox"

class SandboxTest < Homebrew::TestCase
  def setup
    skip "sandbox not implemented" unless Sandbox.available?
    @sandbox = Sandbox.new
    @dir = Pathname.new(Dir.mktmpdir)
    @file = @dir/"foo"
  end

  def teardown
    @dir.rmtree
  end

  def test_allow_write
    @sandbox.allow_write @file
    @sandbox.exec "touch", @file
    assert_predicate @file, :exist?
  end

  def test_deny_write
    shutup do
      assert_raises(ErrorDuringExecution) { @sandbox.exec "touch", @file }
    end
    refute_predicate @file, :exist?
  end
end

Manage sandbox test resources in setup/teardown
Manage sandbox test resources in setup/teardown
