file_sandbox 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +6 -0
- data/README +4 -1
- data/Rakefile +13 -111
- data/lib/file_sandbox.rb +20 -10
- data/test/file_sandbox_test.rb +31 -1
- metadata +24 -21
data/Manifest.txt
ADDED
data/README
CHANGED
@@ -33,5 +33,8 @@ File sandbox creates a space for your tests to safely hit the file system. It al
|
|
33
33
|
|
34
34
|
Author:: Jeremy Stell-Smith
|
35
35
|
Email:: jeremystellsmith@gmail.com
|
36
|
-
Home Page:: http://onemanswalk.com
|
37
36
|
License:: LGPL License
|
37
|
+
|
38
|
+
== Home Page
|
39
|
+
|
40
|
+
http://onemanswalk.com
|
data/Rakefile
CHANGED
@@ -1,112 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require '
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
PKG_NAME = 'file_sandbox'
|
16
|
-
PKG_VERSION = '0.1'
|
17
|
-
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
18
|
-
|
19
|
-
RELEASE_NAME = "REL #{PKG_VERSION}"
|
20
|
-
|
21
|
-
RUBY_FORGE_PROJECT = "filesandbox"
|
22
|
-
RUBY_FORGE_USER = "stellsmi"
|
23
|
-
# RUBY_FORGE_GROUP = 2944
|
24
|
-
# RUBY_FORGE_PACKAGE = 3495
|
25
|
-
|
26
|
-
SRC_RB = FileList['lib/**/*.rb']
|
27
|
-
|
28
|
-
desc "Default Task"
|
29
|
-
task :default => :test
|
30
|
-
|
31
|
-
#################################################
|
32
|
-
# Test
|
33
|
-
|
34
|
-
desc "Run all tests"
|
35
|
-
task :test => [:test_units]
|
36
|
-
|
37
|
-
Rake::TestTask.new("test_units") do |t|
|
38
|
-
t.test_files = FileList['test/**/*test.rb']
|
39
|
-
t.verbose = false
|
40
|
-
end
|
41
|
-
|
42
|
-
#################################################
|
43
|
-
# RDoc
|
44
|
-
|
45
|
-
rd = Rake::RDocTask.new("rdoc") { |rdoc|
|
46
|
-
rdoc.rdoc_dir = 'html'
|
47
|
-
rdoc.title = "File Sandbox"
|
48
|
-
rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README'
|
49
|
-
rdoc.rdoc_files.include('lib/**/*.rb', '[A-Z]*', 'doc/**/*.rdoc')
|
50
|
-
# rdoc.template = 'doc/jamis.rb'
|
51
|
-
}
|
52
|
-
|
53
|
-
#################################################
|
54
|
-
# Package
|
55
|
-
|
56
|
-
PKG_FILES = FileList[
|
57
|
-
'CHANGES', 'Rakefile', 'README', 'lib/**/*.rb', 'test/**/*.rb',
|
58
|
-
]
|
59
|
-
|
60
|
-
spec = Gem::Specification.new do |s|
|
61
|
-
s.name = PKG_NAME
|
62
|
-
s.summary = "A File Sandbox for testing against the file system."
|
63
|
-
s.description = <<-EOS
|
64
|
-
File sandbox creates a space for your tests to safely hit the file system.
|
65
|
-
It also makes it easier for them to do so..
|
66
|
-
EOS
|
67
|
-
s.version = PKG_VERSION
|
68
|
-
|
69
|
-
s.files = PKG_FILES.to_a
|
70
|
-
s.require_path = 'lib'
|
71
|
-
s.autorequire = 'file_sandbox'
|
72
|
-
s.test_files = PKG_FILES.select { |fn| fn =~ /^test\/.*_test.rb$/ }
|
73
|
-
|
74
|
-
s.has_rdoc = true
|
75
|
-
s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a
|
76
|
-
s.rdoc_options <<
|
77
|
-
'--title' << 'Builder -- Easy XML Building' <<
|
78
|
-
'--main' << 'README' <<
|
79
|
-
'--line-numbers'
|
80
|
-
|
81
|
-
s.author = "Jeremy Stell-Smith"
|
82
|
-
s.email = "jeremystellsmith@gmail.com"
|
83
|
-
s.rubyforge_project = RUBY_FORGE_PROJECT
|
84
|
-
s.homepage = "http://rubyforge.org/projects/#{RUBY_FORGE_PROJECT}"
|
85
|
-
end
|
86
|
-
|
87
|
-
Rake::GemPackageTask.new(spec) do |p|
|
88
|
-
p.gem_spec = spec
|
89
|
-
p.need_tar = true
|
90
|
-
p.need_zip = true
|
91
|
-
end
|
92
|
-
|
93
|
-
################################################
|
94
|
-
# release
|
95
|
-
|
96
|
-
task :release => [:test, :package, :upload_release]
|
97
|
-
|
98
|
-
task :upload_release do
|
99
|
-
require 'rubyforge'
|
100
|
-
|
101
|
-
# puts "Enter rubyforge password:"
|
102
|
-
# rubyforge = RubyForge.new(File.dirname(__FILE__) + "/config/rubyforge.yml",
|
103
|
-
# :cookie_jar => RubyForge::COOKIE_F, :password => $stdin.gets.strip)
|
104
|
-
rubyforge = RubyForge.new
|
105
|
-
p rubyforge.class.instance_methods(false).sort
|
106
|
-
rubyforge.login
|
107
|
-
rubyforge.autoconfig
|
108
|
-
|
109
|
-
files = %w(gem tgz zip).collect {|ext| "pkg/#{PKG_FILE_NAME}.#{ext}"}
|
110
|
-
puts "Releasing #{files.collect{|f| File.basename(f)}.join(", ")}..."
|
111
|
-
rubyforge.add_release(RUBY_FORGE_PROJECT, PKG_NAME, PKG_VERSION, *files)
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'hoe'
|
5
|
+
require './lib/file_sandbox.rb'
|
6
|
+
|
7
|
+
Hoe.new('file_sandbox', FileSandbox::VERSION) do |p|
|
8
|
+
p.rubyforge_name = 'filesandbox'
|
9
|
+
p.summary = p.description = p.paragraphs_of('README', 2).first
|
10
|
+
p.url = p.paragraphs_of('README', -1).first.strip
|
11
|
+
p.author = 'Jeremy Stell-Smith'
|
12
|
+
p.email = 'jeremystellsmith@gmail.com'
|
13
|
+
p.changes = p.paragraphs_of('CHANGES', 0..1).join("\n\n")
|
112
14
|
end
|
data/lib/file_sandbox.rb
CHANGED
@@ -3,6 +3,7 @@ require 'fileutils'
|
|
3
3
|
require 'test/unit/assertions'
|
4
4
|
|
5
5
|
module FileSandbox
|
6
|
+
VERSION = "0.2"
|
6
7
|
def in_sandbox(&block)
|
7
8
|
raise "I expected to create a sandbox as you passed in a block to me" if !block_given?
|
8
9
|
|
@@ -30,13 +31,15 @@ module FileSandbox
|
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
33
|
-
def setup_sandbox
|
34
|
-
@sandbox = Sandbox.new
|
34
|
+
def setup_sandbox(path = '__sandbox')
|
35
|
+
@sandbox = Sandbox.new(path)
|
35
36
|
end
|
36
37
|
|
37
38
|
def teardown_sandbox
|
38
|
-
@sandbox
|
39
|
-
|
39
|
+
if @sandbox
|
40
|
+
@sandbox.clean_up
|
41
|
+
@sandbox = nil
|
42
|
+
end
|
40
43
|
end
|
41
44
|
|
42
45
|
def file(name)
|
@@ -47,25 +50,32 @@ module FileSandbox
|
|
47
50
|
include Test::Unit::Assertions
|
48
51
|
attr_reader :root
|
49
52
|
|
50
|
-
def initialize
|
51
|
-
@root = File.expand_path(
|
53
|
+
def initialize(path = '__sandbox')
|
54
|
+
@root = File.expand_path(path)
|
52
55
|
clean_up
|
53
56
|
FileUtils.mkdir_p @root
|
54
57
|
end
|
55
58
|
|
56
59
|
# usage new :file=>'my file.rb', :with_contents=>'some stuff'
|
57
60
|
def new(options)
|
58
|
-
name = File.join(@root, options
|
61
|
+
name = File.join(@root, options.delete(:file))
|
59
62
|
dir = File.dirname(name)
|
60
63
|
FileUtils.mkdir_p dir
|
61
64
|
|
62
|
-
if (binary_content = options
|
65
|
+
if (binary_content = options.delete(:with_binary_content) || options.delete(:with_binary_contents))
|
63
66
|
File.open(name, "wb") {|f| f << binary_content }
|
64
67
|
else
|
65
|
-
File.open(name, "w") {|f| f << (options
|
68
|
+
File.open(name, "w") {|f| f << (options.delete(:with_content) || options.delete(:with_contents) || '')}
|
66
69
|
end
|
70
|
+
|
71
|
+
raise "unexpected keys '#{options.keys.join(', ')}'" unless options.empty?
|
67
72
|
end
|
68
|
-
|
73
|
+
|
74
|
+
def remove(options)
|
75
|
+
name = File.join(@root, options[:file])
|
76
|
+
FileUtils.remove_file name
|
77
|
+
end
|
78
|
+
|
69
79
|
# usage assert :file=>'my file.rb', :has_contents=>'some stuff'
|
70
80
|
def assert(options)
|
71
81
|
name = File.join(@root, options[:file])
|
data/test/file_sandbox_test.rb
CHANGED
@@ -28,9 +28,39 @@ class FileSandboxTest < Test::Unit::TestCase
|
|
28
28
|
assert !file('a.txt').exists?
|
29
29
|
|
30
30
|
sandbox.new :file => 'a.txt'
|
31
|
-
|
32
31
|
assert file('a.txt').exist?
|
32
|
+
|
33
|
+
sandbox.new :file => 'b', :with_contents => 'some'
|
34
|
+
assert_equal 'some', file('b').contents
|
35
|
+
|
36
|
+
sandbox.new :file => 'c', :with_contents => 'thing'
|
37
|
+
assert_equal 'thing', file('c').contents
|
38
|
+
|
39
|
+
assert_raises("unexpected keys 'contents'") {
|
40
|
+
sandbox.new :file => 'd', :contents => 'crap'
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_remove_file
|
46
|
+
in_sandbox do |sandbox|
|
47
|
+
sandbox.new :file => 'foo'
|
48
|
+
sandbox.remove :file => 'foo'
|
49
|
+
|
50
|
+
assert !file('foo').exists?
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def assert_raises(string)
|
57
|
+
begin
|
58
|
+
yield
|
59
|
+
rescue
|
60
|
+
assert_equal string, $!.message, "wrong exception thrown"
|
61
|
+
return
|
33
62
|
end
|
63
|
+
fail "expected exception '#{string}'"
|
34
64
|
end
|
35
65
|
end
|
36
66
|
|
metadata
CHANGED
@@ -3,16 +3,16 @@ rubygems_version: 0.9.1
|
|
3
3
|
specification_version: 1
|
4
4
|
name: file_sandbox
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2007-02-
|
8
|
-
summary:
|
6
|
+
version: "0.2"
|
7
|
+
date: 2007-02-27 00:00:00 -08:00
|
8
|
+
summary: File sandbox creates a space for your tests to safely hit the file system. It also makes it easier for them to do so.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
email: jeremystellsmith@gmail.com
|
12
|
-
homepage: http://
|
12
|
+
homepage: http://onemanswalk.com
|
13
13
|
rubyforge_project: filesandbox
|
14
|
-
description: File sandbox creates a space for your tests to safely hit the file system.
|
15
|
-
autorequire:
|
14
|
+
description: File sandbox creates a space for your tests to safely hit the file system. It also makes it easier for them to do so.
|
15
|
+
autorequire:
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
18
18
|
has_rdoc: true
|
@@ -30,27 +30,30 @@ authors:
|
|
30
30
|
- Jeremy Stell-Smith
|
31
31
|
files:
|
32
32
|
- CHANGES
|
33
|
-
-
|
33
|
+
- Manifest.txt
|
34
34
|
- README
|
35
|
+
- Rakefile
|
35
36
|
- lib/file_sandbox.rb
|
36
37
|
- test/file_sandbox_test.rb
|
37
|
-
test_files:
|
38
|
-
|
39
|
-
rdoc_options:
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
- README
|
44
|
-
- --line-numbers
|
45
|
-
extra_rdoc_files:
|
46
|
-
- CHANGES
|
47
|
-
- Rakefile
|
48
|
-
- README
|
38
|
+
test_files: []
|
39
|
+
|
40
|
+
rdoc_options: []
|
41
|
+
|
42
|
+
extra_rdoc_files: []
|
43
|
+
|
49
44
|
executables: []
|
50
45
|
|
51
46
|
extensions: []
|
52
47
|
|
53
48
|
requirements: []
|
54
49
|
|
55
|
-
dependencies:
|
56
|
-
|
50
|
+
dependencies:
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: hoe
|
53
|
+
version_requirement:
|
54
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 1.2.0
|
59
|
+
version:
|