mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			185 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			185 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import unittest
							 | 
						||
| 
								 | 
							
								from test import test_support
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import genericpath
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class AllCommonTest(unittest.TestCase):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def assertIs(self, a, b):
							 | 
						||
| 
								 | 
							
								        self.assert_(a is b)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_commonprefix(self):
							 | 
						||
| 
								 | 
							
								        self.assertEqual(
							 | 
						||
| 
								 | 
							
								            genericpath.commonprefix([]),
							 | 
						||
| 
								 | 
							
								            ""
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        self.assertEqual(
							 | 
						||
| 
								 | 
							
								            genericpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"]),
							 | 
						||
| 
								 | 
							
								            "/home/swen"
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        self.assertEqual(
							 | 
						||
| 
								 | 
							
								            genericpath.commonprefix(["/home/swen/spam", "/home/swen/eggs"]),
							 | 
						||
| 
								 | 
							
								            "/home/swen/"
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        self.assertEqual(
							 | 
						||
| 
								 | 
							
								            genericpath.commonprefix(["/home/swen/spam", "/home/swen/spam"]),
							 | 
						||
| 
								 | 
							
								            "/home/swen/spam"
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_getsize(self):
							 | 
						||
| 
								 | 
							
								        f = open(test_support.TESTFN, "wb")
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            f.write("foo")
							 | 
						||
| 
								 | 
							
								            f.close()
							 | 
						||
| 
								 | 
							
								            self.assertEqual(genericpath.getsize(test_support.TESTFN), 3)
							 | 
						||
| 
								 | 
							
								        finally:
							 | 
						||
| 
								 | 
							
								            if not f.closed:
							 | 
						||
| 
								 | 
							
								                f.close()
							 | 
						||
| 
								 | 
							
								            os.remove(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_time(self):
							 | 
						||
| 
								 | 
							
								        f = open(test_support.TESTFN, "wb")
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            f.write("foo")
							 | 
						||
| 
								 | 
							
								            f.close()
							 | 
						||
| 
								 | 
							
								            f = open(test_support.TESTFN, "ab")
							 | 
						||
| 
								 | 
							
								            f.write("bar")
							 | 
						||
| 
								 | 
							
								            f.close()
							 | 
						||
| 
								 | 
							
								            f = open(test_support.TESTFN, "rb")
							 | 
						||
| 
								 | 
							
								            d = f.read()
							 | 
						||
| 
								 | 
							
								            f.close()
							 | 
						||
| 
								 | 
							
								            self.assertEqual(d, "foobar")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            self.assert_(
							 | 
						||
| 
								 | 
							
								                genericpath.getctime(test_support.TESTFN) <=
							 | 
						||
| 
								 | 
							
								                genericpath.getmtime(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								        finally:
							 | 
						||
| 
								 | 
							
								            if not f.closed:
							 | 
						||
| 
								 | 
							
								                f.close()
							 | 
						||
| 
								 | 
							
								            os.remove(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_exists(self):
							 | 
						||
| 
								 | 
							
								        self.assertIs(genericpath.exists(test_support.TESTFN), False)
							 | 
						||
| 
								 | 
							
								        f = open(test_support.TESTFN, "wb")
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            f.write("foo")
							 | 
						||
| 
								 | 
							
								            f.close()
							 | 
						||
| 
								 | 
							
								            self.assertIs(genericpath.exists(test_support.TESTFN), True)
							 | 
						||
| 
								 | 
							
								        finally:
							 | 
						||
| 
								 | 
							
								            if not f.close():
							 | 
						||
| 
								 | 
							
								                f.close()
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                os.remove(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            except os.error:
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self.assertRaises(TypeError, genericpath.exists)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_isdir(self):
							 | 
						||
| 
								 | 
							
								        self.assertIs(genericpath.isdir(test_support.TESTFN), False)
							 | 
						||
| 
								 | 
							
								        f = open(test_support.TESTFN, "wb")
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            f.write("foo")
							 | 
						||
| 
								 | 
							
								            f.close()
							 | 
						||
| 
								 | 
							
								            self.assertIs(genericpath.isdir(test_support.TESTFN), False)
							 | 
						||
| 
								 | 
							
								            os.remove(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            os.mkdir(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            self.assertIs(genericpath.isdir(test_support.TESTFN), True)
							 | 
						||
| 
								 | 
							
								            os.rmdir(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								        finally:
							 | 
						||
| 
								 | 
							
								            if not f.close():
							 | 
						||
| 
								 | 
							
								                f.close()
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                os.remove(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            except os.error:
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                os.rmdir(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            except os.error:
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self.assertRaises(TypeError, genericpath.isdir)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_isfile(self):
							 | 
						||
| 
								 | 
							
								        self.assertIs(genericpath.isfile(test_support.TESTFN), False)
							 | 
						||
| 
								 | 
							
								        f = open(test_support.TESTFN, "wb")
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            f.write("foo")
							 | 
						||
| 
								 | 
							
								            f.close()
							 | 
						||
| 
								 | 
							
								            self.assertIs(genericpath.isfile(test_support.TESTFN), True)
							 | 
						||
| 
								 | 
							
								            os.remove(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            os.mkdir(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            self.assertIs(genericpath.isfile(test_support.TESTFN), False)
							 | 
						||
| 
								 | 
							
								            os.rmdir(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								        finally:
							 | 
						||
| 
								 | 
							
								            if not f.close():
							 | 
						||
| 
								 | 
							
								                f.close()
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                os.remove(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            except os.error:
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                os.rmdir(test_support.TESTFN)
							 | 
						||
| 
								 | 
							
								            except os.error:
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self.assertRaises(TypeError, genericpath.isdir)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        def test_samefile(self):
							 | 
						||
| 
								 | 
							
								            f = open(test_support.TESTFN + "1", "wb")
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                f.write("foo")
							 | 
						||
| 
								 | 
							
								                f.close()
							 | 
						||
| 
								 | 
							
								                self.assertIs(
							 | 
						||
| 
								 | 
							
								                    genericpath.samefile(
							 | 
						||
| 
								 | 
							
								                        test_support.TESTFN + "1",
							 | 
						||
| 
								 | 
							
								                        test_support.TESTFN + "1"
							 | 
						||
| 
								 | 
							
								                    ),
							 | 
						||
| 
								 | 
							
								                    True
							 | 
						||
| 
								 | 
							
								                )
							 | 
						||
| 
								 | 
							
								                # If we don't have links, assume that os.stat doesn't return resonable
							 | 
						||
| 
								 | 
							
								                # inode information and thus, that samefile() doesn't work
							 | 
						||
| 
								 | 
							
								                if hasattr(os, "symlink"):
							 | 
						||
| 
								 | 
							
								                    os.symlink(
							 | 
						||
| 
								 | 
							
								                        test_support.TESTFN + "1",
							 | 
						||
| 
								 | 
							
								                        test_support.TESTFN + "2"
							 | 
						||
| 
								 | 
							
								                    )
							 | 
						||
| 
								 | 
							
								                    self.assertIs(
							 | 
						||
| 
								 | 
							
								                        genericpath.samefile(
							 | 
						||
| 
								 | 
							
								                            test_support.TESTFN + "1",
							 | 
						||
| 
								 | 
							
								                            test_support.TESTFN + "2"
							 | 
						||
| 
								 | 
							
								                        ),
							 | 
						||
| 
								 | 
							
								                        True
							 | 
						||
| 
								 | 
							
								                    )
							 | 
						||
| 
								 | 
							
								                    os.remove(test_support.TESTFN + "2")
							 | 
						||
| 
								 | 
							
								                    f = open(test_support.TESTFN + "2", "wb")
							 | 
						||
| 
								 | 
							
								                    f.write("bar")
							 | 
						||
| 
								 | 
							
								                    f.close()
							 | 
						||
| 
								 | 
							
								                    self.assertIs(
							 | 
						||
| 
								 | 
							
								                        genericpath.samefile(
							 | 
						||
| 
								 | 
							
								                            test_support.TESTFN + "1",
							 | 
						||
| 
								 | 
							
								                            test_support.TESTFN + "2"
							 | 
						||
| 
								 | 
							
								                        ),
							 | 
						||
| 
								 | 
							
								                        False
							 | 
						||
| 
								 | 
							
								                    )
							 | 
						||
| 
								 | 
							
								            finally:
							 | 
						||
| 
								 | 
							
								                if not f.close():
							 | 
						||
| 
								 | 
							
								                    f.close()
							 | 
						||
| 
								 | 
							
								                try:
							 | 
						||
| 
								 | 
							
								                    os.remove(test_support.TESTFN + "1")
							 | 
						||
| 
								 | 
							
								                except os.error:
							 | 
						||
| 
								 | 
							
								                    pass
							 | 
						||
| 
								 | 
							
								                try:
							 | 
						||
| 
								 | 
							
								                    os.remove(test_support.TESTFN + "2")
							 | 
						||
| 
								 | 
							
								                except os.error:
							 | 
						||
| 
								 | 
							
								                    pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            self.assertRaises(TypeError, genericpath.samefile)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_main():
							 | 
						||
| 
								 | 
							
								    test_support.run_unittest(AllCommonTest)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__=="__main__":
							 | 
						||
| 
								 | 
							
								    test_main()
							 |