| #! /usr/bin/env python |
| # |
| # Copyright 2014 Altera Corporation. All Rights Reserved. |
| # Author: John McGehee |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """ |
| Test the :py:class`pyfakefs.example` module to demonstrate the usage of the |
| :py:class`pyfakefs.fake_filesystem_unittest.TestCase` base class. |
| """ |
| |
| import os |
| import sys |
| if sys.version_info < (2, 7): |
| import unittest2 as unittest |
| else: |
| import unittest |
| |
| import fake_filesystem_unittest |
| # The module under test is pyfakefs.example |
| import example |
| |
| |
| def load_tests(loader, tests, ignore): |
| '''Load the pyfakefs/example.py doctest tests into unittest.''' |
| return fake_filesystem_unittest.load_doctests(loader, tests, ignore, example) |
| |
| |
| class TestExample(fake_filesystem_unittest.TestCase): # pylint: disable=R0904 |
| '''Test the pyfakefs.example module.''' |
| |
| def setUp(self): |
| '''Invoke the :py:class:`pyfakefs.fake_filesystem_unittest.TestCase` |
| `self.setUp()` method. This defines: |
| |
| * Attribute `self.fs`, an instance of \ |
| :py:class:`pyfakefs.fake_filesystem.FakeFilesystem`. This is useful \ |
| for creating test files. |
| * Attribute `self.stubs`, an instance of \ |
| :py:class:`mox.stubout.StubOutForTesting`. Use this if you need to |
| define additional stubs. |
| ''' |
| self.setUpPyfakefs() |
| |
| def tearDown(self): |
| # No longer need self.tearDownPyfakefs() |
| pass |
| |
| def test_create_file(self): |
| '''Test example.create_file()''' |
| # The os module has been replaced with the fake os module so all of the |
| # following occurs in the fake filesystem. |
| self.assertFalse(os.path.isdir('/test')) |
| os.mkdir('/test') |
| self.assertTrue(os.path.isdir('/test')) |
| |
| self.assertFalse(os.path.exists('/test/file.txt')) |
| example.create_file('/test/file.txt') |
| self.assertTrue(os.path.exists('/test/file.txt')) |
| |
| def test_delete_file(self): |
| '''Test example.delete_file() |
| |
| `self.fs.CreateFile()` is convenient because it automatically creates |
| directories in the fake file system and allows you to specify the file |
| contents. |
| |
| You could also use `open()` or `file()`. |
| ''' |
| self.fs.CreateFile('/test/full.txt', |
| contents='First line\n' |
| 'Second Line\n') |
| self.assertTrue(os.path.exists('/test/full.txt')) |
| example.delete_file('/test/full.txt') |
| self.assertFalse(os.path.exists('/test/full.txt')) |
| |
| def test_file_exists(self): |
| '''Test example.path_exists() |
| |
| `self.fs.CreateFile()` is convenient because it automatically creates |
| directories in the fake file system and allows you to specify the file |
| contents. |
| |
| You could also use `open()` or `file()` if you wanted. |
| ''' |
| self.assertFalse(example.path_exists('/test/empty.txt')) |
| self.fs.CreateFile('/test/empty.txt') |
| self.assertTrue(example.path_exists('/test/empty.txt')) |
| |
| def test_get_globs(self): |
| '''Test example.get_glob() |
| |
| `self.fs.CreateDirectory()` creates directories. However, you might |
| prefer the familiar `os.makedirs()`, which also works fine on the fake |
| file system. |
| ''' |
| self.assertFalse(os.path.isdir('/test')) |
| self.fs.CreateDirectory('/test/dir1/dir2a') |
| self.assertTrue(os.path.isdir('/test/dir1/dir2a')) |
| # os.mkdirs() works, too. |
| os.makedirs('/test/dir1/dir2b') |
| self.assertTrue(os.path.isdir('/test/dir1/dir2b')) |
| |
| self.assertCountEqual(example.get_glob('/test/dir1/nonexistent*'), |
| []) |
| self.assertCountEqual(example.get_glob('/test/dir1/dir*'), |
| ['/test/dir1/dir2a', '/test/dir1/dir2b']) |
| |
| def test_rm_tree(self): |
| '''Test example.rm_tree() |
| |
| `self.fs.CreateDirectory()` creates directories. However, you might |
| prefer the familiar `os.makedirs()`, which also works fine on the fake |
| file system. |
| ''' |
| self.fs.CreateDirectory('/test/dir1/dir2a') |
| # os.mkdirs() works, too. |
| os.makedirs('/test/dir1/dir2b') |
| self.assertTrue(os.path.isdir('/test/dir1/dir2b')) |
| self.assertTrue(os.path.isdir('/test/dir1/dir2a')) |
| |
| example.rm_tree('/test/dir1') |
| self.assertFalse(os.path.exists('/test/dir1')) |
| |
| if __name__ == "__main__": |
| unittest.main() |