fakefs 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,158 +0,0 @@
1
- require 'test_helper'
2
-
3
- # File stat test class
4
- class FileStatTest < Minitest::Test
5
- include FakeFS
6
-
7
- def setup
8
- FileSystem.clear
9
- end
10
-
11
- def touch(*args)
12
- FileUtils.touch(*args)
13
- end
14
-
15
- def ln_s(*args)
16
- FileUtils.ln_s(*args)
17
- end
18
-
19
- def mkdir(*args)
20
- Dir.mkdir(*args)
21
- end
22
-
23
- def ln(*args)
24
- File.link(*args)
25
- end
26
-
27
- def test_file_stat_init_with_non_existent_file
28
- assert_raises(Errno::ENOENT) do
29
- File::Stat.new('/foo')
30
- end
31
- end
32
-
33
- def test_file_should_be_true_when_file
34
- touch('/foo')
35
- assert File::Stat.new('/foo').file?
36
- end
37
-
38
- def test_symlink_should_be_true_when_symlink
39
- touch('/foo')
40
- ln_s('/foo', '/bar')
41
-
42
- assert File::Stat.new('/bar').symlink?
43
- assert File::Stat.new('/bar').ftype == 'link'
44
- end
45
-
46
- def test_symlink_should_be_false_when_not_a_symlink
47
- FileUtils.touch('/foo')
48
-
49
- refute File::Stat.new('/foo').symlink?
50
- assert File::Stat.new('/foo').ftype == 'file'
51
- end
52
-
53
- def test_should_return_false_for_directory_when_not_a_directory
54
- FileUtils.touch('/foo')
55
-
56
- refute File::Stat.new('/foo').directory?
57
- assert File::Stat.new('/foo').ftype == 'file'
58
- end
59
-
60
- def test_should_return_true_for_directory_when_a_directory
61
- mkdir '/foo'
62
-
63
- assert File::Stat.new('/foo').directory?
64
- assert File::Stat.new('/foo').ftype == 'directory'
65
- end
66
-
67
- def test_writable_is_true
68
- touch('/foo')
69
-
70
- assert File::Stat.new('/foo').writable?
71
- end
72
-
73
- def test_readable_is_true
74
- touch('/foo')
75
-
76
- assert File::Stat.new('/foo').readable?
77
- end
78
-
79
- def test_one_file_has_hard_link
80
- touch 'testfile'
81
- assert_equal 1, File.stat('testfile').nlink
82
- end
83
-
84
- def test_two_hard_links_show_nlinks_as_two
85
- touch 'testfile'
86
- ln 'testfile', 'testfile.bak'
87
-
88
- assert_equal 2, File.stat('testfile').nlink
89
- end
90
-
91
- def test_file_size
92
- File.open('testfile', 'w') { |f| f << 'test' }
93
- assert_equal 4, File.stat('testfile').size
94
- end
95
-
96
- def test_file_zero?
97
- File.open('testfile', 'w') { |f| f << 'test' }
98
- refute File.stat('testfile').zero?, 'testfile has size 4, not zero'
99
-
100
- FileUtils.touch('testfile2')
101
- assert File.stat('testfile2').zero?, 'testfile2 has size 0, but stat lied'
102
- end
103
-
104
- def test_touch_modifies_mtime
105
- FileUtils.touch('/foo')
106
- mtime = File.mtime('/foo')
107
-
108
- FileUtils.touch('/foo')
109
- assert File.mtime('/foo') > mtime
110
- end
111
-
112
- def test_writing_to_file_modifies_mtime
113
- FileUtils.touch('/foo')
114
- mtime = File.mtime('/foo')
115
-
116
- File.open('/foo', 'w') { |f| f << 'test' }
117
- assert File.mtime('/foo') > mtime
118
- end
119
-
120
- def test_responds_to_world_writable
121
- FileUtils.touch('/foo')
122
- assert File::Stat.new('/foo').world_writable? == 0777
123
- end
124
-
125
- def test_responds_to_sticky
126
- FileUtils.touch('/foo')
127
- refute File::Stat.new('/foo').sticky?
128
- end
129
-
130
- def test_responds_to_world_readable
131
- FileUtils.touch('/foo')
132
- assert File::Stat.new('/foo').world_readable? == 0777, "#{File::Stat.new('/foo').world_readable?}"
133
- end
134
-
135
- def test_can_open_tempfile
136
- FakeFS do
137
- require 'tempfile'
138
- FileUtils.mkdir_p('/tmp')
139
- ::Tempfile.open('test', '/tmp')
140
- end
141
- end
142
-
143
- def test_responds_to_realpath_only_on_1_9
144
- if RUBY_VERSION > '1.9'
145
- assert File.respond_to?(:realpath)
146
- else
147
- refute File.respond_to?(:realpath)
148
- end
149
- end
150
-
151
- def test_responds_to_realdirpath_only_on_1_9_2_and_greater
152
- if RUBY_VERSION >= '1.9.2'
153
- assert File.respond_to?(:realdirpath)
154
- else
155
- refute File.respond_to?(:realdirpath)
156
- end
157
- end
158
- end
data/test/globber_test.rb DELETED
@@ -1,28 +0,0 @@
1
- require 'test_helper'
2
-
3
- # Globber test class
4
- class GlobberTest < Minitest::Test
5
- def test_expand_without_brace_groups_returns_single_entry
6
- assert_equal ['*.rb'], FakeFS::Globber.expand('*.rb')
7
- end
8
-
9
- def test_expand_with_brace_group_with_one_entry_returns_single_entry
10
- assert_equal ['abc'], FakeFS::Globber.expand('{abc}')
11
- end
12
-
13
- def test_expand_with_brace_group_with_multiple_entries_returns_all_entries
14
- assert_equal %w(a b c), FakeFS::Globber.expand('{a,b,c}')
15
- end
16
-
17
- def test_expand_with_brace_group_with_nested_entries_expands_only_first_level
18
- assert_equal ['a', 'b', '{c,d}'], FakeFS::Globber.expand('{a,b,{c,d}}')
19
- end
20
-
21
- def test_path_components_with_no_globbing_splits_on_path_separator
22
- assert_equal %w(a b c), FakeFS::Globber.path_components('/a/b/c')
23
- end
24
-
25
- def test_path_components_with_path_separator_inside_brace_group
26
- assert_equal ['a', '{b,c/d}', 'e'], FakeFS::Globber.path_components('/a/{b,c/d}/e')
27
- end
28
- end
data/test/kernel_test.rb DELETED
@@ -1,57 +0,0 @@
1
- require 'test_helper'
2
-
3
- # Kernel test class
4
- class KernelTest < Minitest::Test
5
- include FakeFS
6
- def setup
7
- FakeFS.deactivate!
8
- end
9
-
10
- def teardown
11
- FakeFS.activate!
12
- end
13
-
14
- def test_can_exec_normally
15
- out = open("|echo 'foo'")
16
- assert_equal "foo\n", out.gets
17
- end
18
-
19
- def test_fake_kernel_can_create_subprocesses
20
- FakeFS do
21
- out = open("|echo 'foo'")
22
- assert_equal "foo\n", out.gets
23
- end
24
- end
25
-
26
- def test_fake_kernel_can_create_new_file
27
- FakeFS do
28
- FileUtils.mkdir_p '/path/to/'
29
- open('/path/to/file', 'w') do |f|
30
- f << 'test'
31
- end
32
- assert_kind_of FakeFile, FileSystem.fs['path']['to']['file']
33
- end
34
- end
35
-
36
- def test_fake_kernel_can_do_stuff
37
- FakeFS do
38
- FileUtils.mkdir_p('/tmp')
39
- File.open('/tmp/a', 'w+') { |f| f.puts 'test' }
40
-
41
- begin
42
- open('/tmp/a').read
43
- rescue => e
44
- raise e
45
- end
46
- end
47
- end
48
-
49
- def test_kernel_open_remains_private
50
- refute 'foo'.respond_to?(:open), 'String#open should be private'
51
- end
52
-
53
- def test_can_exec_normally2
54
- out = open("|echo 'foo'")
55
- assert_equal "foo\n", out.gets
56
- end
57
- end
@@ -1,75 +0,0 @@
1
- require 'test_helper'
2
-
3
- # Fake Pathname test class
4
- class FakePathnameTest < Minitest::Test
5
- include FakeFS
6
-
7
- def setup
8
- FakeFS.activate!
9
- FileSystem.clear
10
-
11
- @path = 'foo'
12
- @pathname = Pathname.new(@path)
13
- end
14
-
15
- def teardown
16
- FakeFS.deactivate!
17
- end
18
-
19
- def test_filetest_exists_returns_correct_value
20
- refute @pathname.exist?
21
-
22
- File.write(@path, '')
23
-
24
- assert @pathname.exist?
25
- end
26
-
27
- def test_io_each_line_with_block_yields_lines
28
- File.write(@path, "one\ntwo\nthree\n")
29
-
30
- yielded = []
31
- @pathname.each_line { |line| yielded << line }
32
-
33
- assert_equal yielded, ["one\n", "two\n", "three\n"]
34
- end
35
-
36
- def test_io_each_line_without_block_returns_enumerator
37
- File.write(@path, "one\ntwo\nthree\n")
38
-
39
- assert @pathname.each_line.is_a?(Enumerator)
40
- assert_equal %w(o t t), @pathname.each_line.map { |l| l[0] }
41
- assert_equal ["one\ntwo\nth", "ree\n"], @pathname.each_line('th').to_a
42
- end
43
-
44
- def test_io_read_returns_file_contents
45
- File.write(@path, "some\ncontent")
46
-
47
- assert_equal "some\ncontent", @pathname.read
48
- assert_equal "some\nc", @pathname.read(6)
49
- assert_equal "e\nco", @pathname.read(4, 3)
50
- end
51
-
52
- def test_io_binread_returns_file_contents
53
- File.write(@path, "some\ncontent")
54
-
55
- assert_equal "some\ncontent", @pathname.binread
56
- assert_equal "some\nc", @pathname.binread(6)
57
- assert_equal "e\nco", @pathname.binread(4, 3)
58
- end
59
-
60
- def test_io_binread_reads_contents_as_binary
61
- File.write(@path, "some\ncontent")
62
-
63
- assert_equal 'ASCII-8BIT', @pathname.binread.encoding.name
64
- end
65
-
66
- def test_io_readlines_returns_array_of_lines
67
- File.write(@path, "one\ntwo\nthree\n")
68
-
69
- assert_equal ["one\n", "two\n", "three\n"], @pathname.readlines
70
- end
71
-
72
- def test_io_sysopen_is_unsupported
73
- assert_raises(NotImplementedError) { @pathname.sysopen }
74
- end
75
- end
data/test/safe_test.rb DELETED
@@ -1,84 +0,0 @@
1
- require 'test_helper'
2
-
3
- # FakeFS safe test class
4
- class FakeFSSafeTest < Minitest::Test
5
- def setup
6
- FakeFS.deactivate!
7
- end
8
-
9
- def teardown
10
- FakeFS.activate!
11
- end
12
-
13
- def test_FakeFS_activated_is_accurate
14
- 2.times do
15
- FakeFS.deactivate!
16
- refute FakeFS.activated?
17
- FakeFS.activate!
18
- assert FakeFS.activated?
19
- end
20
- end
21
-
22
- def test_FakeFS_method_does_not_intrude_on_global_namespace
23
- path = 'file.txt'
24
-
25
- FakeFS do
26
- File.open(path, 'w') { |f| f.write 'Yatta!' }
27
- assert File.exist?(path)
28
- end
29
-
30
- refute File.exist?(path)
31
- end
32
-
33
- def test_FakeFS_method_returns_value_of_yield
34
- result = FakeFS do
35
- File.open('myfile.txt', 'w') { |f| f.write 'Yatta!' }
36
- File.read('myfile.txt')
37
- end
38
-
39
- assert_equal result, 'Yatta!'
40
- end
41
-
42
- def test_FakeFS_method_does_not_deactivate_FakeFS_if_already_activated
43
- FakeFS.activate!
44
- FakeFS {}
45
-
46
- assert FakeFS.activated?
47
- end
48
-
49
- def test_FakeFS_method_can_be_nested
50
- FakeFS do
51
- assert FakeFS.activated?
52
- FakeFS do
53
- assert FakeFS.activated?
54
- end
55
- assert FakeFS.activated?
56
- end
57
-
58
- refute FakeFS.activated?
59
- end
60
-
61
- def test_FakeFS_method_can_be_nested_with_FakeFS_without
62
- FakeFS do
63
- assert FakeFS.activated?
64
- FakeFS.without do
65
- refute FakeFS.activated?
66
- end
67
- assert FakeFS.activated?
68
- end
69
-
70
- refute FakeFS.activated?
71
- end
72
-
73
- def test_FakeFS_method_deactivates_FakeFS_when_block_raises_exception
74
- begin
75
- FakeFS do
76
- fail 'boom!'
77
- end
78
- rescue
79
- 'Nothing to do'
80
- end
81
-
82
- refute FakeFS.activated?
83
- end
84
- end
data/test/test_helper.rb DELETED
@@ -1,33 +0,0 @@
1
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
2
- require 'fakefs/safe'
3
- require 'minitest/autorun'
4
- require 'minitest/rg'
5
-
6
- def act_on_real_fs(&block)
7
- FakeFS.without(&block)
8
- end
9
-
10
- def capture_stderr
11
- real_stderr, $stderr = $stderr, StringIO.new
12
-
13
- # force FileUtils to use our stderr
14
- RealFileUtils.instance_variable_set('@fileutils_output', $stderr)
15
-
16
- yield
17
-
18
- return $stderr.string
19
- ensure
20
- $stderr = real_stderr
21
-
22
- # restore FileUtils stderr
23
- RealFileUtils.instance_variable_set('@fileutils_output', $stderr)
24
- end
25
-
26
- def real_file_sandbox(path = nil)
27
- base_path = real_file_sandbox_path
28
- path ? File.join(base_path, path) : base_path
29
- end
30
-
31
- def real_file_sandbox_path
32
- File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_sandbox'))
33
- end
data/test/verify.rb DELETED
@@ -1,34 +0,0 @@
1
- # Figure out what's missing from fakefs
2
- #
3
- # USAGE
4
- #
5
- # $ RUBYLIB=test ruby test/verify.rb | grep "not implemented"
6
-
7
- require 'test_helper'
8
-
9
- # FakeFs verifier test class
10
- class FakeFSVerifierTest < Minitest::Test
11
- class_mapping = {
12
- RealFile => FakeFS::File,
13
- RealFile::Stat => FakeFS::File::Stat,
14
- RealFileUtils => FakeFS::FileUtils,
15
- RealDir => FakeFS::Dir,
16
- RealFileTest => FakeFS::FileTest
17
- }
18
-
19
- class_mapping.each do |real_class, fake_class|
20
- real_class.methods.each do |method|
21
- define_method "test_#{method}_class_method" do
22
- assert fake_class.respond_to?(method),
23
- "#{fake_class}.#{method} not implemented"
24
- end
25
- end
26
-
27
- real_class.instance_methods.each do |method|
28
- define_method("test_#{method}_instance_method") do
29
- assert fake_class.instance_methods.include?(method),
30
- "#{fake_class}##{method} not implemented"
31
- end
32
- end
33
- end
34
- end