Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(362)

Side by Side Diff: tools/telemetry/third_party/pyfakefs/pyfakefs/fake_tempfile_test.py

Issue 1310343005: [Telemetry] Add pyfakefs to telemetry/third_party (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add license header to setup.py Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #! /usr/bin/env python
2 #
3 # Copyright 2009 Google Inc. All Rights Reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 """Tests for the fake_tempfile module."""
18
19 #pylint: disable-all
20
21 import stat
22 import sys
23 if sys.version_info < (2, 7):
24 import unittest2 as unittest
25 else:
26 import unittest
27
28 try:
29 import StringIO as io # pylint: disable-msg=C6204
30 except ImportError:
31 import io # pylint: disable-msg=C6204
32
33 import fake_filesystem
34 import fake_tempfile
35
36
37 class FakeLogging(object):
38 """Fake logging object for testGettempprefix."""
39
40 def __init__(self, test_case):
41 self._message = None
42 self._test_case = test_case
43
44 # pylint: disable-msg=C6409
45 def error(self, message):
46 if self._message is not None:
47 self.FailOnMessage(message)
48 self._message = message
49
50 def FailOnMessage(self, message):
51 self._test_case.fail('Unexpected message received: %s' % message)
52
53 warn = FailOnMessage
54 info = FailOnMessage
55 debug = FailOnMessage
56 fatal = FailOnMessage
57
58 def message(self):
59 return self._message
60
61
62 class FakeTempfileModuleTest(unittest.TestCase):
63 """Test the 'tempfile' module mock."""
64
65 def setUp(self):
66 self.filesystem = fake_filesystem.FakeFilesystem(path_separator='/')
67 self.tempfile = fake_tempfile.FakeTempfileModule(self.filesystem)
68 self.orig_logging = fake_tempfile.logging
69 self.fake_logging = FakeLogging(self)
70 fake_tempfile.logging = self.fake_logging
71
72 def tearDown(self):
73 fake_tempfile.logging = self.orig_logging
74
75 def testTempFilename(self):
76 # pylint: disable-msg=C6002
77 # TODO: test that tempdir is init'ed
78 filename_a = self.tempfile._TempFilename()
79 # expect /tmp/tmp######
80 self.assertTrue(filename_a.startswith('/tmp/tmp'))
81 self.assertEqual(14, len(filename_a))
82
83 # see that random part changes
84 filename_b = self.tempfile._TempFilename()
85 self.assertTrue(filename_b.startswith('/tmp/tmp'))
86 self.assertEqual(14, len(filename_b))
87 self.assertNotEqual(filename_a, filename_b)
88
89 def testTempFilenameSuffix(self):
90 """test tempfile._TempFilename(suffix=)."""
91 filename = self.tempfile._TempFilename(suffix='.suffix')
92 self.assertTrue(filename.startswith('/tmp/tmp'))
93 self.assertTrue(filename.endswith('.suffix'))
94 self.assertEqual(21, len(filename))
95
96 def testTempFilenamePrefix(self):
97 """test tempfile._TempFilename(prefix=)."""
98 filename = self.tempfile._TempFilename(prefix='prefix.')
99 self.assertTrue(filename.startswith('/tmp/prefix.'))
100 self.assertEqual(18, len(filename))
101
102 def testTempFilenameDir(self):
103 """test tempfile._TempFilename(dir=)."""
104 filename = self.tempfile._TempFilename(dir='/dir')
105 self.assertTrue(filename.startswith('/dir/tmp'))
106 self.assertEqual(14, len(filename))
107
108 def testTemporaryFile(self):
109 obj = self.tempfile.TemporaryFile()
110 self.assertEqual('<fdopen>', obj.name)
111 self.assertTrue(isinstance(obj, io.StringIO))
112
113 def testNamedTemporaryFile(self):
114 obj = self.tempfile.NamedTemporaryFile()
115 created_filenames = self.tempfile.FakeReturnedMktempValues()
116 self.assertEqual(created_filenames[0], obj.name)
117 self.assertTrue(self.filesystem.GetObject(obj.name))
118 obj.close()
119 self.assertRaises(IOError, self.filesystem.GetObject, obj.name)
120
121 def testNamedTemporaryFileNoDelete(self):
122 obj = self.tempfile.NamedTemporaryFile(delete=False)
123 obj.write(b'foo')
124 obj.close()
125 file_obj = self.filesystem.GetObject(obj.name)
126 self.assertEqual('foo', file_obj.contents)
127 obj = self.tempfile.NamedTemporaryFile(mode='w', delete=False)
128 obj.write('foo')
129 obj.close()
130 file_obj = self.filesystem.GetObject(obj.name)
131 self.assertEqual('foo', file_obj.contents)
132
133 def testMkstemp(self):
134 next_fd = len(self.filesystem.open_files)
135 temporary = self.tempfile.mkstemp()
136 self.assertEqual(2, len(temporary))
137 self.assertTrue(temporary[1].startswith('/tmp/tmp'))
138 created_filenames = self.tempfile.FakeReturnedMktempValues()
139 self.assertEqual(next_fd, temporary[0])
140 self.assertEqual(temporary[1], created_filenames[0])
141 self.assertTrue(self.filesystem.Exists(temporary[1]))
142 self.assertEqual(self.filesystem.GetObject(temporary[1]).st_mode,
143 stat.S_IFREG|0o600)
144
145 def testMkstempDir(self):
146 """test tempfile.mkstemp(dir=)."""
147 # expect fail: /dir does not exist
148 self.assertRaises(OSError, self.tempfile.mkstemp, dir='/dir')
149 # expect pass: /dir exists
150 self.filesystem.CreateDirectory('/dir')
151 next_fd = len(self.filesystem.open_files)
152 temporary = self.tempfile.mkstemp(dir='/dir')
153 self.assertEqual(2, len(temporary))
154 self.assertEqual(next_fd, temporary[0])
155 self.assertTrue(temporary[1].startswith('/dir/tmp'))
156 created_filenames = self.tempfile.FakeReturnedMktempValues()
157 self.assertEqual(temporary[1], created_filenames[0])
158 self.assertTrue(self.filesystem.Exists(temporary[1]))
159 self.assertEqual(self.filesystem.GetObject(temporary[1]).st_mode,
160 stat.S_IFREG|0o600)
161 # pylint: disable-msg=C6002
162 # TODO: add a test that /dir is actually writable.
163
164 def testMkdtemp(self):
165 dirname = self.tempfile.mkdtemp()
166 self.assertTrue(dirname)
167 created_filenames = self.tempfile.FakeReturnedMktempValues()
168 self.assertEqual(dirname, created_filenames[0])
169 self.assertTrue(self.filesystem.Exists(dirname))
170 self.assertEqual(self.filesystem.GetObject(dirname).st_mode,
171 stat.S_IFDIR|0o700)
172
173 def testGettempdir(self):
174 self.assertEqual(None, self.tempfile.tempdir)
175 self.assertEqual('/tmp', self.tempfile.gettempdir())
176 self.assertEqual('/tmp', self.tempfile.tempdir)
177
178 def testGettempprefix(self):
179 """test tempfile.gettempprefix() and the tempfile.template setter."""
180 self.assertEqual('tmp', self.tempfile.gettempprefix())
181 # set and verify
182 self.tempfile.template = 'strung'
183 self.assertEqual('strung', self.tempfile.gettempprefix())
184 self.assertEqual('tempfile.template= is a NOP in python2.4',
185 self.fake_logging.message())
186
187 def testMktemp(self):
188 self.assertRaises(NotImplementedError, self.tempfile.mktemp)
189
190 def testTemplateGet(self):
191 """verify tempfile.template still unimplemented."""
192 self.assertRaises(NotImplementedError, getattr,
193 self.tempfile, 'template')
194
195
196 if __name__ == '__main__':
197 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698