[Zope-Checkins] CVS: Zope3/lib/python/Zope/Server/VFS/tests - testOSFileSystem.py:1.1.2.1

Stephan Richter srichter@cbu.edu
Tue, 2 Apr 2002 13:13:06 -0500


Update of /cvs-repository/Zope3/lib/python/Zope/Server/VFS/tests
In directory cvs.zope.org:/tmp/cvs-serv23618/tests

Added Files:
      Tag: Zope3-Server-Branch
	testOSFileSystem.py 
Log Message:
Issue 48: Comment

Here is the first cut of writing tests. Right now it tests only 2 methods
so far, but I keep working on it.

But now it is lunch time!


=== Added File Zope3/lib/python/Zope/Server/VFS/tests/testOSFileSystem.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
# 
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
# 
##############################################################################
"""

$Id: testOSFileSystem.py,v 1.1.2.1 2002/04/02 18:13:06 srichter Exp $
"""


import unittest
import os
import tempfile

from Interface.Verify import verifyClass
from Zope.Server.VFS.IReadFileSystem import IReadFileSystem 
from Zope.Server.VFS.IWriteFileSystem import IWriteFileSystem 

from Zope.Server.VFS.OSFileSystem import OSFileSystem

class OSFileSystemTest(unittest.TestCase):
    """This test is constructed in a way that it builds up a directory
       structure, whcih is removed at the end.
    """

    filesystem_class = OSFileSystem
    
    def setUp(self):
        tempdir = tempfile.gettempdir()
        self.root = os.path.join(tempdir, 'Test')
        os.mkdir(self.root)
        self.filesystem = self.filesystem_class(self.root)


    def tearDown(self):
        os.rmdir(self.root)


    def testNormalize(self):

        self.assertEqual(self.filesystem.normalize('/foo/bar//'), '/foo/bar')
        self.assertEqual(self.filesystem.normalize('/foo//bar'), '/foo/bar')
        self.assertEqual(self.filesystem.normalize('///foo/bar'), '/foo/bar')
        self.assertEqual(self.filesystem.normalize('///foo//bar////'),
                         '/foo/bar')

        self.assertEqual(self.filesystem.normalize('../foo/bar'), '/')
        self.assertEqual(self.filesystem.normalize('..'), '/')
        self.assertEqual(self.filesystem.normalize('/..'), '/')
        self.assertEqual(self.filesystem.normalize('/foo/..'), '/')
        self.assertEqual(self.filesystem.normalize('/foo/../bar'), '/bar')
        self.assertEqual(self.filesystem.normalize('../../'), '/')
    
        self.assertEqual(self.filesystem.normalize('///../foo/bar'), '/foo/bar')
        self.assertEqual(self.filesystem.normalize('/foo/..///'), '/')
        self.assertEqual(self.filesystem.normalize('///foo/..//bar'), '/bar')
        self.assertEqual(self.filesystem.normalize('..///../'), '/')


    def testTranslate(self):

        self.assertEqual(self.filesystem.root, self.root)

        self.assertEqual(self.filesystem.translate('/foo/'),
                         self.filesystem.path_module.join(self.root, 'foo'))
        self.assertEqual(self.filesystem.translate('/foo/bar'),
                         self.filesystem.path_module.join(self.root,
                                                          'foo', 'bar'))
        self.assertEqual(self.filesystem.translate('foo/bar'),
                         self.filesystem.path_module.join(self.root,
                                                          'foo', 'bar'))
        
        

    def testInterface(self):
        self.failUnless(
            IReadFileSystem.isImplementedByInstancesOf(self.filesystem_class))
        self.failUnless(verifyClass(IReadFileSystem, self.filesystem_class))

        self.failUnless(
            IWriteFileSystem.isImplementedByInstancesOf(self.filesystem_class))
        self.failUnless(verifyClass(IWriteFileSystem, self.filesystem_class))
        


def test_suite():
    loader = unittest.TestLoader()
    return loader.loadTestsFromTestCase(OSFileSystemTest)

if __name__=='__main__':
    unittest.TextTestRunner().run( test_suite() )