1# Copyright (C) 2011 Google Inc. All rights reserved.
2#
3# Redistribution and use in source and binary forms, with or without
4# modification, are permitted provided that the following conditions are
5# met:
6#
7#    * Redistributions of source code must retain the above copyright
8# notice, this list of conditions and the following disclaimer.
9#    * Redistributions in binary form must reproduce the above
10# copyright notice, this list of conditions and the following disclaimer
11# in the documentation and/or other materials provided with the
12# distribution.
13#    * Neither the name of Google Inc. nor the names of its
14# contributors may be used to endorse or promote products derived from
15# this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29import os
30import re
31import webkitpy.thirdparty.unittest2 as unittest
32
33
34from webkitpy.common.system import filesystem_mock
35from webkitpy.common.system import filesystem_unittest
36
37
38class MockFileSystemTest(unittest.TestCase, filesystem_unittest.GenericFileSystemTests):
39    def setUp(self):
40        self.fs = filesystem_mock.MockFileSystem()
41        self.setup_generic_test_dir()
42
43    def tearDown(self):
44        self.teardown_generic_test_dir()
45        self.fs = None
46
47    def quick_check(self, test_fn, good_fn, *tests):
48        for test in tests:
49            if hasattr(test, '__iter__'):
50                expected = good_fn(*test)
51                actual = test_fn(*test)
52            else:
53                expected = good_fn(test)
54                actual = test_fn(test)
55            self.assertEqual(expected, actual, 'given %s, expected %s, got %s' % (repr(test), repr(expected), repr(actual)))
56
57    def test_join(self):
58        self.quick_check(self.fs.join,
59                         self.fs._slow_but_correct_join,
60                         ('',),
61                         ('', 'bar'),
62                         ('foo',),
63                         ('foo/',),
64                         ('foo', ''),
65                         ('foo/', ''),
66                         ('foo', 'bar'),
67                         ('foo', '/bar'),
68                         )
69
70    def test_normpath(self):
71        self.quick_check(self.fs.normpath,
72                         self.fs._slow_but_correct_normpath,
73                         '',
74                         '/',
75                         '.',
76                         '/.',
77                         'foo',
78                         'foo/',
79                         'foo/.',
80                         'foo/bar',
81                         '/foo',
82                         'foo/../bar',
83                         'foo/../bar/baz',
84                         '../foo')
85
86    def test_relpath_win32(self):
87        pass
88