fakefs 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/CONTRIBUTORS +30 -21
- data/Gemfile +8 -0
- data/Gemfile.lock +35 -0
- data/Rakefile +8 -10
- data/fakefs.gemspec +53 -55
- data/lib/fakefs/dir.rb +49 -2
- data/lib/fakefs/fake/file.rb +2 -2
- data/lib/fakefs/file.rb +35 -4
- data/lib/fakefs/file_test.rb +4 -0
- data/lib/fakefs/fileutils.rb +17 -5
- data/lib/fakefs/version.rb +1 -1
- data/test/fake/file/join_test.rb +19 -0
- data/test/fake/file_test.rb +11 -0
- data/test/fakefs_test.rb +169 -2
- metadata +57 -34
- data/.gitignore +0 -3
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/CONTRIBUTORS
CHANGED
@@ -1,21 +1,30 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
1
|
+
Scott Taylor <scott@railsnewbie.com>
|
2
|
+
Pat Nakajima <patnakajima@gmail.com>
|
3
|
+
Chris Wanstrath <chris@ozmm.org>
|
4
|
+
Myles Eftos <myles@madpilot.com.au>
|
5
|
+
Jeff Hodges <jeff@somethingsimilar.com>
|
6
|
+
Matt Freels <matt@freels.name>
|
7
|
+
Víctor Martínez <knoopx@gmail.com>
|
8
|
+
Nick Quaranto <nick@quaran.to>
|
9
|
+
Aaron Suggs <aaron@ktheory.com>
|
10
|
+
Victor Costan <costan@gmail.com>
|
11
|
+
Eric MSP Veith <eveith@wwweb-library.net>
|
12
|
+
Jon Yurek <jyurek@thoughtbot.com>
|
13
|
+
Greg Campbell <gtcampbell@gmail.com>
|
14
|
+
Ben Mabey <ben@benmabey.com>
|
15
|
+
Mark <mark@amerine.net>
|
16
|
+
Sam Goldstein <sam@aboutus.org>
|
17
|
+
Noah Paessel <knowuh@gmail.com>
|
18
|
+
dmathieu <42@dmathieu.com>
|
19
|
+
Mariusz Pietrzyk <wijet@wijet.pl>
|
20
|
+
Lars Gierth <lars.gierth@gmail.com>
|
21
|
+
marano <thiagomarano@gmail.com>
|
22
|
+
jameswilding <james@jameswilding.net>
|
23
|
+
Tymon Tobolski <i@teamon.eu>
|
24
|
+
Scott Barron <scott@elitists.net>
|
25
|
+
Keita Urashima <ursm@ursm.jp>
|
26
|
+
David Reese <david@whatcould.com>
|
27
|
+
msassak <msassak@gmail.com>
|
28
|
+
timo3377 <tim.linquist@gmail.com>
|
29
|
+
Mislav Marohnić <mislav.marohnic@gmail.com>
|
30
|
+
Rob Sanheim <rsanheim@gmail.com>
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.1.2)
|
5
|
+
git (1.2.5)
|
6
|
+
jeweler (1.6.0)
|
7
|
+
bundler (~> 1.0.0)
|
8
|
+
git (>= 1.2.5)
|
9
|
+
rake
|
10
|
+
json (1.5.1)
|
11
|
+
rake (0.8.7)
|
12
|
+
rdiscount (1.6.8)
|
13
|
+
rdoc (2.4.3)
|
14
|
+
rspec (2.5.0)
|
15
|
+
rspec-core (~> 2.5.0)
|
16
|
+
rspec-expectations (~> 2.5.0)
|
17
|
+
rspec-mocks (~> 2.5.0)
|
18
|
+
rspec-core (2.5.1)
|
19
|
+
rspec-expectations (2.5.0)
|
20
|
+
diff-lcs (~> 1.1.2)
|
21
|
+
rspec-mocks (2.5.0)
|
22
|
+
sdoc (0.2.20)
|
23
|
+
json (>= 1.1.3)
|
24
|
+
rdoc (= 2.4.3)
|
25
|
+
sdoc-helpers (0.1.4)
|
26
|
+
sdoc (~> 0.2)
|
27
|
+
|
28
|
+
PLATFORMS
|
29
|
+
ruby
|
30
|
+
|
31
|
+
DEPENDENCIES
|
32
|
+
jeweler
|
33
|
+
rdiscount
|
34
|
+
rspec
|
35
|
+
sdoc-helpers
|
data/Rakefile
CHANGED
@@ -8,16 +8,9 @@ end
|
|
8
8
|
|
9
9
|
task :default => [:test, :spec]
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
desc "Run specs"
|
15
|
-
Spec::Rake::SpecTask.new(:spec) do |t|
|
16
|
-
t.spec_files = FileList["spec/**/*.rb"]
|
17
|
-
end
|
18
|
-
rescue LoadError
|
19
|
-
puts "Spec task can't be loaded. `gem install rspec`"
|
20
|
-
end
|
11
|
+
require 'rspec/core/rake_task'
|
12
|
+
desc "Run specs"
|
13
|
+
RSpec::Core::RakeTask.new
|
21
14
|
|
22
15
|
begin
|
23
16
|
require 'jeweler'
|
@@ -59,3 +52,8 @@ task :publish => [ :gemspec, :build ] do
|
|
59
52
|
system "git clean -fd"
|
60
53
|
exec "rake pages"
|
61
54
|
end
|
55
|
+
|
56
|
+
desc "Update contributors"
|
57
|
+
task :update_contributors do
|
58
|
+
sh "git-rank-contributors > CONTRIBUTORS"
|
59
|
+
end
|
data/fakefs.gemspec
CHANGED
@@ -1,86 +1,84 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{fakefs}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Chris Wanstrath", "Scott Taylor", "Jeff Hodges", "Pat Nakajima"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2011-05-02}
|
13
13
|
s.description = %q{A fake filesystem. Use it in your tests.}
|
14
14
|
s.email = %q{chris@ozmm.org}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.markdown"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".autotest",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
21
|
+
".rspec",
|
22
|
+
"CONTRIBUTORS",
|
23
|
+
"Gemfile",
|
24
|
+
"Gemfile.lock",
|
25
|
+
"LICENSE",
|
26
|
+
"README.markdown",
|
27
|
+
"Rakefile",
|
28
|
+
"fakefs.gemspec",
|
29
|
+
"lib/fakefs.rb",
|
30
|
+
"lib/fakefs/base.rb",
|
31
|
+
"lib/fakefs/dir.rb",
|
32
|
+
"lib/fakefs/fake/dir.rb",
|
33
|
+
"lib/fakefs/fake/file.rb",
|
34
|
+
"lib/fakefs/fake/symlink.rb",
|
35
|
+
"lib/fakefs/file.rb",
|
36
|
+
"lib/fakefs/file_system.rb",
|
37
|
+
"lib/fakefs/file_test.rb",
|
38
|
+
"lib/fakefs/fileutils.rb",
|
39
|
+
"lib/fakefs/safe.rb",
|
40
|
+
"lib/fakefs/spec_helpers.rb",
|
41
|
+
"lib/fakefs/version.rb",
|
42
|
+
"spec/fakefs/spec_helpers_spec.rb",
|
43
|
+
"spec/spec.opts",
|
44
|
+
"spec/spec_helper.rb",
|
45
|
+
"test/fake/file/join_test.rb",
|
46
|
+
"test/fake/file/lstat_test.rb",
|
47
|
+
"test/fake/file/stat_test.rb",
|
48
|
+
"test/fake/file/sysseek_test.rb",
|
49
|
+
"test/fake/file/syswrite_test.rb",
|
50
|
+
"test/fake/file_test.rb",
|
51
|
+
"test/fake/symlink_test.rb",
|
52
|
+
"test/fakefs_test.rb",
|
53
|
+
"test/file/stat_test.rb",
|
54
|
+
"test/safe_test.rb",
|
55
|
+
"test/test_helper.rb",
|
56
|
+
"test/verify.rb"
|
54
57
|
]
|
55
58
|
s.homepage = %q{http://github.com/defunkt/fakefs}
|
56
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
57
59
|
s.require_paths = ["lib"]
|
58
|
-
s.rubygems_version = %q{1.
|
60
|
+
s.rubygems_version = %q{1.6.2}
|
59
61
|
s.summary = %q{A fake filesystem. Use it in your tests.}
|
60
|
-
s.test_files = [
|
61
|
-
"spec/fakefs/spec_helpers_spec.rb",
|
62
|
-
"spec/spec_helper.rb",
|
63
|
-
"test/fake/file/lstat_test.rb",
|
64
|
-
"test/fake/file/stat_test.rb",
|
65
|
-
"test/fake/file/sysseek_test.rb",
|
66
|
-
"test/fake/file/syswrite_test.rb",
|
67
|
-
"test/fake/file_test.rb",
|
68
|
-
"test/fake/symlink_test.rb",
|
69
|
-
"test/fakefs_test.rb",
|
70
|
-
"test/file/stat_test.rb",
|
71
|
-
"test/safe_test.rb",
|
72
|
-
"test/test_helper.rb",
|
73
|
-
"test/verify.rb"
|
74
|
-
]
|
75
62
|
|
76
63
|
if s.respond_to? :specification_version then
|
77
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
78
64
|
s.specification_version = 3
|
79
65
|
|
80
66
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
67
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
68
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
69
|
+
s.add_development_dependency(%q<sdoc-helpers>, [">= 0"])
|
70
|
+
s.add_development_dependency(%q<rdiscount>, [">= 0"])
|
81
71
|
else
|
72
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
73
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
74
|
+
s.add_dependency(%q<sdoc-helpers>, [">= 0"])
|
75
|
+
s.add_dependency(%q<rdiscount>, [">= 0"])
|
82
76
|
end
|
83
77
|
else
|
78
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
79
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
80
|
+
s.add_dependency(%q<sdoc-helpers>, [">= 0"])
|
81
|
+
s.add_dependency(%q<rdiscount>, [">= 0"])
|
84
82
|
end
|
85
83
|
end
|
86
84
|
|
data/lib/fakefs/dir.rb
CHANGED
@@ -78,8 +78,9 @@ module FakeFS
|
|
78
78
|
Dir.open(dirname) { |file| yield file }
|
79
79
|
end
|
80
80
|
|
81
|
-
def self.glob(pattern)
|
82
|
-
[FileSystem.find(pattern) || []].flatten.map
|
81
|
+
def self.glob(pattern, &block)
|
82
|
+
files = [FileSystem.find(pattern) || []].flatten.map(&:to_s).sort
|
83
|
+
block_given? ? files.each { |file| block.call(file) } : files
|
83
84
|
end
|
84
85
|
|
85
86
|
def self.mkdir(string, integer = 0)
|
@@ -106,6 +107,52 @@ module FakeFS
|
|
106
107
|
FileSystem.current_dir.to_s
|
107
108
|
end
|
108
109
|
|
110
|
+
# This code has been borrowed from Rubinius
|
111
|
+
def self.mktmpdir(prefix_suffix = nil, tmpdir = nil)
|
112
|
+
case prefix_suffix
|
113
|
+
when nil
|
114
|
+
prefix = "d"
|
115
|
+
suffix = ""
|
116
|
+
when String
|
117
|
+
prefix = prefix_suffix
|
118
|
+
suffix = ""
|
119
|
+
when Array
|
120
|
+
prefix = prefix_suffix[0]
|
121
|
+
suffix = prefix_suffix[1]
|
122
|
+
else
|
123
|
+
raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
|
124
|
+
end
|
125
|
+
|
126
|
+
t = Time.now.strftime("%Y%m%d")
|
127
|
+
n = nil
|
128
|
+
|
129
|
+
begin
|
130
|
+
path = "#{tmpdir}/#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
|
131
|
+
path << "-#{n}" if n
|
132
|
+
path << suffix
|
133
|
+
mkdir(path, 0700)
|
134
|
+
rescue Errno::EEXIST
|
135
|
+
n ||= 0
|
136
|
+
n += 1
|
137
|
+
retry
|
138
|
+
end
|
139
|
+
|
140
|
+
if block_given?
|
141
|
+
begin
|
142
|
+
yield path
|
143
|
+
ensure
|
144
|
+
require 'fileutils'
|
145
|
+
# This here was using FileUtils.remove_entry_secure instead of just
|
146
|
+
# .rm_r. However, the security concerns that apply to
|
147
|
+
# .rm_r/.remove_entry_secure shouldn't apply to a test fake
|
148
|
+
# filesystem. :^)
|
149
|
+
FileUtils.rm_r path
|
150
|
+
end
|
151
|
+
else
|
152
|
+
path
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
109
156
|
class << self
|
110
157
|
alias_method :getwd, :pwd
|
111
158
|
alias_method :rmdir, :delete
|
data/lib/fakefs/fake/file.rb
CHANGED
data/lib/fakefs/file.rb
CHANGED
@@ -33,7 +33,7 @@ module FakeFS
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def self.join(*parts)
|
36
|
-
parts
|
36
|
+
RealFile.join(parts)
|
37
37
|
end
|
38
38
|
|
39
39
|
def self.exist?(path)
|
@@ -64,6 +64,18 @@ module FakeFS
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
+
def self.utime(atime, mtime, *paths)
|
68
|
+
paths.each do |path|
|
69
|
+
if exists?(path)
|
70
|
+
FileSystem.find(path).mtime = mtime
|
71
|
+
else
|
72
|
+
raise Errno::ENOENT
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
paths.size
|
77
|
+
end
|
78
|
+
|
67
79
|
def self.size(path)
|
68
80
|
read(path).length
|
69
81
|
end
|
@@ -136,6 +148,23 @@ module FakeFS
|
|
136
148
|
read(path).split("\n")
|
137
149
|
end
|
138
150
|
|
151
|
+
def self.rename(source, dest)
|
152
|
+
if directory?(source) && file?(dest)
|
153
|
+
raise Errno::ENOTDIR, "Not a directory - #{source} or #{dest}"
|
154
|
+
elsif file?(source) && directory?(dest)
|
155
|
+
raise Errno::EISDIR, "Is a directory - #{source} or #{dest}"
|
156
|
+
end
|
157
|
+
|
158
|
+
if target = FileSystem.find(source)
|
159
|
+
FileSystem.add(dest, target.entry.clone)
|
160
|
+
FileSystem.delete(source)
|
161
|
+
else
|
162
|
+
raise Errno::ENOENT, "No such file or directory - #{source} or #{dest}"
|
163
|
+
end
|
164
|
+
|
165
|
+
0
|
166
|
+
end
|
167
|
+
|
139
168
|
def self.link(source, dest)
|
140
169
|
if directory?(source)
|
141
170
|
raise Errno::EPERM, "Operation not permitted - #{source} or #{dest}"
|
@@ -186,6 +215,10 @@ module FakeFS
|
|
186
215
|
File::Stat.new(file, true)
|
187
216
|
end
|
188
217
|
|
218
|
+
def self.split(path)
|
219
|
+
return RealFile.split(path)
|
220
|
+
end
|
221
|
+
|
189
222
|
class Stat
|
190
223
|
attr_reader :ctime, :mtime
|
191
224
|
|
@@ -350,9 +383,7 @@ module FakeFS
|
|
350
383
|
end
|
351
384
|
|
352
385
|
def check_file_existence!
|
353
|
-
unless @file
|
354
|
-
raise Errno::ENOENT, "No such file or directory - #{@file}"
|
355
|
-
end
|
386
|
+
raise Errno::ENOENT, @path unless @file
|
356
387
|
end
|
357
388
|
|
358
389
|
def file_creation_mode?
|
data/lib/fakefs/file_test.rb
CHANGED
data/lib/fakefs/fileutils.rb
CHANGED
@@ -6,6 +6,15 @@ module FakeFS
|
|
6
6
|
FileSystem.add(path, FakeDir.new)
|
7
7
|
end
|
8
8
|
alias_method :mkpath, :mkdir_p
|
9
|
+
alias_method :makedirs, :mkdir_p
|
10
|
+
|
11
|
+
def mkdir(path)
|
12
|
+
parent = path.split('/')
|
13
|
+
parent.pop
|
14
|
+
raise Errno::ENOENT, "No such file or directory - #{path}" unless parent.join == "" || FileSystem.find(parent.join('/'))
|
15
|
+
raise Errno::EEXIST, "File exists - #{path}" if FileSystem.find(path)
|
16
|
+
FileSystem.add(path, FakeDir.new)
|
17
|
+
end
|
9
18
|
|
10
19
|
def rmdir(list, options = {})
|
11
20
|
list = [ list ] unless list.is_a?(Array)
|
@@ -87,11 +96,14 @@ module FakeFS
|
|
87
96
|
end
|
88
97
|
|
89
98
|
def mv(src, dest, options={})
|
90
|
-
|
91
|
-
FileSystem.
|
92
|
-
|
93
|
-
|
94
|
-
|
99
|
+
Array(src).each do |path|
|
100
|
+
if target = FileSystem.find(path)
|
101
|
+
dest_path = File.directory?(dest) ? File.join(dest, File.basename(path)) : dest
|
102
|
+
FileSystem.add(dest_path, target.entry.clone)
|
103
|
+
FileSystem.delete(path)
|
104
|
+
else
|
105
|
+
raise Errno::ENOENT, path
|
106
|
+
end
|
95
107
|
end
|
96
108
|
end
|
97
109
|
|
data/lib/fakefs/version.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class FileJoin < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
FakeFS.activate!
|
6
|
+
end
|
7
|
+
|
8
|
+
def teardown
|
9
|
+
FakeFS.deactivate!
|
10
|
+
end
|
11
|
+
|
12
|
+
[
|
13
|
+
["a", "b"], ["a/", "b"], ["a", "/b"], ["a/", "/b"], ["a", "/", "b"]
|
14
|
+
].each_with_index do |args, i|
|
15
|
+
define_method "test_file_join_#{i}" do
|
16
|
+
assert_equal RealFile.join(args), File.join(args)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/test/fake/file_test.rb
CHANGED
@@ -83,4 +83,15 @@ class FakeFileTest < Test::Unit::TestCase
|
|
83
83
|
assert_equal "foo", clone.content
|
84
84
|
assert_equal "bar", @file.content
|
85
85
|
end
|
86
|
+
|
87
|
+
def test_raises_an_error_with_the_correct_path
|
88
|
+
path = "/some/non/existing/file"
|
89
|
+
begin
|
90
|
+
FakeFS::File.new path
|
91
|
+
msg = nil
|
92
|
+
rescue Errno::ENOENT => e
|
93
|
+
msg = e.message
|
94
|
+
end
|
95
|
+
assert_equal "No such file or directory - #{path}", msg
|
96
|
+
end
|
86
97
|
end
|
data/test/fakefs_test.rb
CHANGED
@@ -23,7 +23,7 @@ class FakeFSTest < Test::Unit::TestCase
|
|
23
23
|
assert_equal 1, fs.files.size
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def test_can_create_directories_with_file_utils_mkdir_p
|
27
27
|
FileUtils.mkdir_p("/path/to/dir")
|
28
28
|
assert_kind_of FakeDir, FileSystem.fs['path']['to']['dir']
|
29
29
|
end
|
@@ -33,6 +33,18 @@ class FakeFSTest < Test::Unit::TestCase
|
|
33
33
|
assert_kind_of FakeDir, FileSystem.fs['path']['to']['dir']
|
34
34
|
end
|
35
35
|
|
36
|
+
def test_can_create_directories_with_file_utils_mkdir
|
37
|
+
FileUtils.mkdir_p("/path/to/dir")
|
38
|
+
FileUtils.mkdir("/path/to/dir/subdir")
|
39
|
+
assert_kind_of FakeDir, FileSystem.fs['path']['to']['dir']['subdir']
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_raises_error_when_creating_a_new_dir_with_mkdir_in_non_existent_path
|
43
|
+
assert_raises Errno::ENOENT do
|
44
|
+
FileUtils.mkdir("/this/path/does/not/exists/newdir")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
36
48
|
def test_can_create_directories_with_mkpath
|
37
49
|
FileUtils.mkpath("/path/to/dir")
|
38
50
|
assert_kind_of FakeDir, FileSystem.fs['path']['to']['dir']
|
@@ -43,6 +55,16 @@ class FakeFSTest < Test::Unit::TestCase
|
|
43
55
|
assert_kind_of FakeDir, FileSystem.fs['path']['to']['dir']
|
44
56
|
end
|
45
57
|
|
58
|
+
def test_can_create_directories_with_mkpath
|
59
|
+
FileUtils.makedirs("/path/to/dir")
|
60
|
+
assert_kind_of FakeDir, FileSystem.fs['path']['to']['dir']
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_can_create_directories_with_mkpath_and_options
|
64
|
+
FileUtils.makedirs("/path/to/dir", :mode => 0755)
|
65
|
+
assert_kind_of FakeDir, FileSystem.fs['path']['to']['dir']
|
66
|
+
end
|
67
|
+
|
46
68
|
def test_can_delete_directories
|
47
69
|
FileUtils.mkdir_p("/path/to/dir")
|
48
70
|
FileUtils.rmdir("/path/to/dir")
|
@@ -83,6 +105,10 @@ class FakeFSTest < Test::Unit::TestCase
|
|
83
105
|
assert File.exists?(path)
|
84
106
|
FileUtils.mkdir_p("/path/to")
|
85
107
|
assert File.exists?(path)
|
108
|
+
assert_raises Errno::EEXIST do
|
109
|
+
FileUtils.mkdir("/path/to")
|
110
|
+
end
|
111
|
+
assert File.exists?(path)
|
86
112
|
end
|
87
113
|
|
88
114
|
def test_can_create_symlinks
|
@@ -384,6 +410,32 @@ class FakeFSTest < Test::Unit::TestCase
|
|
384
410
|
assert_equal File.stat("foo").mtime, File.mtime("foo")
|
385
411
|
end
|
386
412
|
|
413
|
+
def test_utime_raises_error_if_path_does_not_exist
|
414
|
+
assert_raise Errno::ENOENT do
|
415
|
+
File.utime(Time.now, Time.now, '/path/to/file.txt')
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
def test_can_call_utime_on_an_existing_file
|
420
|
+
time = Time.now - 300 # Not now
|
421
|
+
path = '/path/to/file.txt'
|
422
|
+
File.open(path, 'w') do |f|
|
423
|
+
f << ''
|
424
|
+
end
|
425
|
+
File.utime(time, time, path)
|
426
|
+
assert_equal time, File.mtime('/path/to/file.txt')
|
427
|
+
end
|
428
|
+
|
429
|
+
def test_utime_returns_number_of_paths
|
430
|
+
path1, path2 = '/path/to/file.txt', '/path/to/another_file.txt'
|
431
|
+
[path1, path2].each do |path|
|
432
|
+
File.open(path, 'w') do |f|
|
433
|
+
f << ''
|
434
|
+
end
|
435
|
+
end
|
436
|
+
assert_equal 2, File.utime(Time.now, Time.now, path1, path2)
|
437
|
+
end
|
438
|
+
|
387
439
|
def test_can_read_with_File_readlines
|
388
440
|
path = '/path/to/file.txt'
|
389
441
|
File.open(path, 'w') do |f|
|
@@ -516,7 +568,6 @@ class FakeFSTest < Test::Unit::TestCase
|
|
516
568
|
assert_equal ['/path', '/path/bar', '/path/bar/baz', '/path/bar2', '/path/bar2/baz', '/path/foo', '/path/foobar'], Dir['/**/*']
|
517
569
|
|
518
570
|
assert_equal ['/path/bar', '/path/bar/baz', '/path/bar2', '/path/bar2/baz', '/path/foo', '/path/foobar'], Dir['/path/**/*']
|
519
|
-
|
520
571
|
assert_equal ['/path/bar/baz'], Dir['/path/bar/**/*']
|
521
572
|
|
522
573
|
FileUtils.cp_r '/path', '/otherpath'
|
@@ -546,6 +597,16 @@ class FakeFSTest < Test::Unit::TestCase
|
|
546
597
|
assert_equal ['/one/five.rb', '/one/two'], Dir['/one/**']
|
547
598
|
end
|
548
599
|
|
600
|
+
def test_dir_glob_with_block
|
601
|
+
FileUtils.touch('foo')
|
602
|
+
FileUtils.touch('bar')
|
603
|
+
|
604
|
+
yielded = []
|
605
|
+
Dir.glob('*') { |file| yielded << file }
|
606
|
+
|
607
|
+
assert_equal 2, yielded.size
|
608
|
+
end
|
609
|
+
|
549
610
|
def test_should_report_pos_as_0_when_opening
|
550
611
|
File.open("/foo", "w") do |f|
|
551
612
|
f << "foobar"
|
@@ -741,6 +802,10 @@ class FakeFSTest < Test::Unit::TestCase
|
|
741
802
|
assert_raise(Errno::ENOENT) do
|
742
803
|
FileUtils.mv 'blafgag', 'foo'
|
743
804
|
end
|
805
|
+
exception = assert_raise(Errno::ENOENT) do
|
806
|
+
FileUtils.mv ['foo', 'bar'], 'destdir'
|
807
|
+
end
|
808
|
+
assert_equal "No such file or directory - foo", exception.message
|
744
809
|
end
|
745
810
|
|
746
811
|
def test_mv_actually_works
|
@@ -755,6 +820,23 @@ class FakeFSTest < Test::Unit::TestCase
|
|
755
820
|
assert_equal('bar', File.open('baz') { |f| f.read })
|
756
821
|
end
|
757
822
|
|
823
|
+
def test_mv_to_directory
|
824
|
+
File.open('foo', 'w') {|f| f.write 'bar'}
|
825
|
+
FileUtils.mkdir_p 'destdir'
|
826
|
+
FileUtils.mv 'foo', 'destdir'
|
827
|
+
assert_equal('bar', File.open('destdir/foo') {|f| f.read })
|
828
|
+
assert File.directory?('destdir')
|
829
|
+
end
|
830
|
+
|
831
|
+
def test_mv_array
|
832
|
+
File.open('foo', 'w') {|f| f.write 'bar' }
|
833
|
+
File.open('baz', 'w') {|f| f.write 'binky' }
|
834
|
+
FileUtils.mkdir_p 'destdir'
|
835
|
+
FileUtils.mv %w(foo baz), 'destdir'
|
836
|
+
assert_equal('bar', File.open('destdir/foo') {|f| f.read })
|
837
|
+
assert_equal('binky', File.open('destdir/baz') {|f| f.read })
|
838
|
+
end
|
839
|
+
|
758
840
|
def test_cp_actually_works
|
759
841
|
File.open('foo', 'w') {|f| f.write 'bar' }
|
760
842
|
FileUtils.cp('foo', 'baz')
|
@@ -1241,6 +1323,60 @@ class FakeFSTest < Test::Unit::TestCase
|
|
1241
1323
|
assert Dir.tmpdir == "/tmp"
|
1242
1324
|
end
|
1243
1325
|
|
1326
|
+
def test_rename_renames_a_file
|
1327
|
+
FileUtils.touch("/foo")
|
1328
|
+
File.rename("/foo", "/bar")
|
1329
|
+
assert File.file?("/bar")
|
1330
|
+
end
|
1331
|
+
|
1332
|
+
def test_rename_returns
|
1333
|
+
FileUtils.touch("/foo")
|
1334
|
+
assert_equal 0, File.rename("/foo", "/bar")
|
1335
|
+
end
|
1336
|
+
|
1337
|
+
def test_rename_renames_two_files
|
1338
|
+
FileUtils.touch("/foo")
|
1339
|
+
FileUtils.touch("/bar")
|
1340
|
+
File.rename("/foo", "/bar")
|
1341
|
+
assert File.file?("/bar")
|
1342
|
+
end
|
1343
|
+
|
1344
|
+
def test_rename_renames_a_directories
|
1345
|
+
Dir.mkdir("/foo")
|
1346
|
+
File.rename("/foo", "/bar")
|
1347
|
+
assert File.directory?("/bar")
|
1348
|
+
end
|
1349
|
+
|
1350
|
+
def test_rename_renames_two_directories
|
1351
|
+
Dir.mkdir("/foo")
|
1352
|
+
Dir.mkdir("/bar")
|
1353
|
+
File.rename("/foo", "/bar")
|
1354
|
+
assert File.directory?("/bar")
|
1355
|
+
end
|
1356
|
+
|
1357
|
+
def test_rename_file_to_directory_raises_error
|
1358
|
+
FileUtils.touch("/foo")
|
1359
|
+
Dir.mkdir("/bar")
|
1360
|
+
assert_raises(Errno::EISDIR) do
|
1361
|
+
File.rename("/foo", "/bar")
|
1362
|
+
end
|
1363
|
+
end
|
1364
|
+
|
1365
|
+
def test_rename_directory_to_file_raises_error
|
1366
|
+
Dir.mkdir("/foo")
|
1367
|
+
FileUtils.touch("/bar")
|
1368
|
+
assert_raises(Errno::ENOTDIR) do
|
1369
|
+
File.rename("/foo", "/bar")
|
1370
|
+
end
|
1371
|
+
end
|
1372
|
+
|
1373
|
+
|
1374
|
+
def test_rename_with_missing_source_raises_error
|
1375
|
+
assert_raises(Errno::ENOENT) do
|
1376
|
+
File.rename("/no_such_file", "/bar")
|
1377
|
+
end
|
1378
|
+
end
|
1379
|
+
|
1244
1380
|
def test_hard_link_creates_file
|
1245
1381
|
FileUtils.touch("/foo")
|
1246
1382
|
|
@@ -1440,6 +1576,14 @@ class FakeFSTest < Test::Unit::TestCase
|
|
1440
1576
|
assert !FileTest.exist?("/path/to/dir")
|
1441
1577
|
end
|
1442
1578
|
|
1579
|
+
def test_filetest_directory_returns_correct_values
|
1580
|
+
FileUtils.mkdir_p '/path/to/somedir'
|
1581
|
+
assert FileTest.directory?('/path/to/somedir')
|
1582
|
+
|
1583
|
+
FileUtils.rm_r '/path/to/somedir'
|
1584
|
+
assert !FileTest.directory?('/path/to/somedir')
|
1585
|
+
end
|
1586
|
+
|
1443
1587
|
def test_pathname_exists_returns_correct_value
|
1444
1588
|
FileUtils.touch "foo"
|
1445
1589
|
assert Pathname.new("foo").exist?
|
@@ -1447,6 +1591,20 @@ class FakeFSTest < Test::Unit::TestCase
|
|
1447
1591
|
assert !Pathname.new("bar").exist?
|
1448
1592
|
end
|
1449
1593
|
|
1594
|
+
def test_dir_mktmpdir
|
1595
|
+
FileUtils.mkdir '/tmp'
|
1596
|
+
|
1597
|
+
tmpdir = Dir.mktmpdir
|
1598
|
+
assert File.directory?(tmpdir)
|
1599
|
+
FileUtils.rm_r tmpdir
|
1600
|
+
|
1601
|
+
Dir.mktmpdir do |t|
|
1602
|
+
tmpdir = t
|
1603
|
+
assert File.directory?(t)
|
1604
|
+
end
|
1605
|
+
assert !File.directory?(tmpdir)
|
1606
|
+
end
|
1607
|
+
|
1450
1608
|
def test_activating_returns_true
|
1451
1609
|
FakeFS.deactivate!
|
1452
1610
|
assert_equal true, FakeFS.activate!
|
@@ -1456,6 +1614,15 @@ class FakeFSTest < Test::Unit::TestCase
|
|
1456
1614
|
assert_equal true, FakeFS.deactivate!
|
1457
1615
|
end
|
1458
1616
|
|
1617
|
+
def test_split
|
1618
|
+
assert File.respond_to? :split
|
1619
|
+
filename = "/this/is/what/we/expect.txt"
|
1620
|
+
path,filename = File.split(filename)
|
1621
|
+
assert_equal path, "/this/is/what/we"
|
1622
|
+
assert_equal filename, "expect.txt"
|
1623
|
+
end
|
1624
|
+
|
1625
|
+
|
1459
1626
|
def here(fname)
|
1460
1627
|
RealFile.expand_path(File.join(RealFile.dirname(__FILE__), fname))
|
1461
1628
|
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakefs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 1
|
10
|
-
version: 0.3.1
|
4
|
+
prerelease:
|
5
|
+
version: 0.3.2
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Chris Wanstrath
|
@@ -18,10 +13,53 @@ autorequire:
|
|
18
13
|
bindir: bin
|
19
14
|
cert_chain: []
|
20
15
|
|
21
|
-
date:
|
16
|
+
date: 2011-05-02 00:00:00 -04:00
|
22
17
|
default_executable:
|
23
|
-
dependencies:
|
24
|
-
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: rspec
|
21
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
22
|
+
none: false
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: "0"
|
27
|
+
type: :development
|
28
|
+
prerelease: false
|
29
|
+
version_requirements: *id001
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: jeweler
|
32
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: "0"
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: *id002
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sdoc-helpers
|
43
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: "0"
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: *id003
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: rdiscount
|
54
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: "0"
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: *id004
|
25
63
|
description: A fake filesystem. Use it in your tests.
|
26
64
|
email: chris@ozmm.org
|
27
65
|
executables: []
|
@@ -33,8 +71,10 @@ extra_rdoc_files:
|
|
33
71
|
- README.markdown
|
34
72
|
files:
|
35
73
|
- .autotest
|
36
|
-
- .
|
74
|
+
- .rspec
|
37
75
|
- CONTRIBUTORS
|
76
|
+
- Gemfile
|
77
|
+
- Gemfile.lock
|
38
78
|
- LICENSE
|
39
79
|
- README.markdown
|
40
80
|
- Rakefile
|
@@ -55,6 +95,7 @@ files:
|
|
55
95
|
- spec/fakefs/spec_helpers_spec.rb
|
56
96
|
- spec/spec.opts
|
57
97
|
- spec/spec_helper.rb
|
98
|
+
- test/fake/file/join_test.rb
|
58
99
|
- test/fake/file/lstat_test.rb
|
59
100
|
- test/fake/file/stat_test.rb
|
60
101
|
- test/fake/file/sysseek_test.rb
|
@@ -71,8 +112,8 @@ homepage: http://github.com/defunkt/fakefs
|
|
71
112
|
licenses: []
|
72
113
|
|
73
114
|
post_install_message:
|
74
|
-
rdoc_options:
|
75
|
-
|
115
|
+
rdoc_options: []
|
116
|
+
|
76
117
|
require_paths:
|
77
118
|
- lib
|
78
119
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -80,37 +121,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
80
121
|
requirements:
|
81
122
|
- - ">="
|
82
123
|
- !ruby/object:Gem::Version
|
83
|
-
hash: 3
|
84
|
-
segments:
|
85
|
-
- 0
|
86
124
|
version: "0"
|
87
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
126
|
none: false
|
89
127
|
requirements:
|
90
128
|
- - ">="
|
91
129
|
- !ruby/object:Gem::Version
|
92
|
-
hash: 3
|
93
|
-
segments:
|
94
|
-
- 0
|
95
130
|
version: "0"
|
96
131
|
requirements: []
|
97
132
|
|
98
133
|
rubyforge_project:
|
99
|
-
rubygems_version: 1.
|
134
|
+
rubygems_version: 1.6.2
|
100
135
|
signing_key:
|
101
136
|
specification_version: 3
|
102
137
|
summary: A fake filesystem. Use it in your tests.
|
103
|
-
test_files:
|
104
|
-
|
105
|
-
- spec/spec_helper.rb
|
106
|
-
- test/fake/file/lstat_test.rb
|
107
|
-
- test/fake/file/stat_test.rb
|
108
|
-
- test/fake/file/sysseek_test.rb
|
109
|
-
- test/fake/file/syswrite_test.rb
|
110
|
-
- test/fake/file_test.rb
|
111
|
-
- test/fake/symlink_test.rb
|
112
|
-
- test/fakefs_test.rb
|
113
|
-
- test/file/stat_test.rb
|
114
|
-
- test/safe_test.rb
|
115
|
-
- test/test_helper.rb
|
116
|
-
- test/verify.rb
|
138
|
+
test_files: []
|
139
|
+
|
data/.gitignore
DELETED