summaryrefslogtreecommitdiffstats
path: root/config/tests/unit-mozunit.py
diff options
context:
space:
mode:
Diffstat (limited to 'config/tests/unit-mozunit.py')
-rw-r--r--config/tests/unit-mozunit.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/config/tests/unit-mozunit.py b/config/tests/unit-mozunit.py
new file mode 100644
index 000000000..69798f4ba
--- /dev/null
+++ b/config/tests/unit-mozunit.py
@@ -0,0 +1,86 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import sys
+import os
+from mozunit import main, MockedOpen
+import unittest
+from tempfile import mkstemp
+
+class TestMozUnit(unittest.TestCase):
+ def test_mocked_open(self):
+ # Create a temporary file on the file system.
+ (fd, path) = mkstemp()
+ with os.fdopen(fd, 'w') as file:
+ file.write('foobar');
+
+ self.assertFalse(os.path.exists('file1'))
+ self.assertFalse(os.path.exists('file2'))
+
+ with MockedOpen({'file1': 'content1',
+ 'file2': 'content2'}):
+ self.assertTrue(os.path.exists('file1'))
+ self.assertTrue(os.path.exists('file2'))
+ self.assertFalse(os.path.exists('foo/file1'))
+
+ # Check the contents of the files given at MockedOpen creation.
+ self.assertEqual(open('file1', 'r').read(), 'content1')
+ self.assertEqual(open('file2', 'r').read(), 'content2')
+
+ # Check that overwriting these files alters their content.
+ with open('file1', 'w') as file:
+ file.write('foo')
+ self.assertTrue(os.path.exists('file1'))
+ self.assertEqual(open('file1', 'r').read(), 'foo')
+
+ # ... but not until the file is closed.
+ file = open('file2', 'w')
+ file.write('bar')
+ self.assertEqual(open('file2', 'r').read(), 'content2')
+ file.close()
+ self.assertEqual(open('file2', 'r').read(), 'bar')
+
+ # Check that appending to a file does append
+ with open('file1', 'a') as file:
+ file.write('bar')
+ self.assertEqual(open('file1', 'r').read(), 'foobar')
+
+ self.assertFalse(os.path.exists('file3'))
+
+ # Opening a non-existing file ought to fail.
+ self.assertRaises(IOError, open, 'file3', 'r')
+ self.assertFalse(os.path.exists('file3'))
+
+ # Check that writing a new file does create the file.
+ with open('file3', 'w') as file:
+ file.write('baz')
+ self.assertEqual(open('file3', 'r').read(), 'baz')
+ self.assertTrue(os.path.exists('file3'))
+
+ # Check the content of the file created outside MockedOpen.
+ self.assertEqual(open(path, 'r').read(), 'foobar')
+
+ # Check that overwriting a file existing on the file system
+ # does modify its content.
+ with open(path, 'w') as file:
+ file.write('bazqux')
+ self.assertEqual(open(path, 'r').read(), 'bazqux')
+
+ with MockedOpen():
+ # Check that appending to a file existing on the file system
+ # does modify its content.
+ with open(path, 'a') as file:
+ file.write('bazqux')
+ self.assertEqual(open(path, 'r').read(), 'foobarbazqux')
+
+ # Check that the file was not actually modified on the file system.
+ self.assertEqual(open(path, 'r').read(), 'foobar')
+ os.remove(path)
+
+ # Check that the file created inside MockedOpen wasn't actually
+ # created.
+ self.assertRaises(IOError, open, 'file3', 'r')
+
+if __name__ == "__main__":
+ main()