summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_shutil.py
blob: 083dbda706c9c8f63a8a708ee0f69f45a085e551 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Copyright (C) 2003 Python Software Foundation

import unittest
import shutil
import tempfile
import os
import os.path
from test import test_support
from test.test_support import TESTFN

class TestShutil(unittest.TestCase):
    def test_rmtree_errors(self):
        # filename is guaranteed not to exist
        filename = tempfile.mktemp()
        self.assertRaises(OSError, shutil.rmtree, filename)
        self.assertEqual(shutil.rmtree(filename, True), None)
        shutil.rmtree(filename, False, lambda func, arg, exc: None)

    def test_dont_move_dir_in_itself(self):
        src_dir = tempfile.mkdtemp()
        try:
            dst = os.path.join(src_dir, 'foo')
            self.assertRaises(shutil.Error, shutil.move, src_dir, dst)
        finally:
            try:
                os.rmdir(src_dir)
            except:
                pass

    if hasattr(os, "symlink"):
        def test_dont_copy_file_onto_link_to_itself(self):
            # bug 851123.
            os.mkdir(TESTFN)
            src = os.path.join(TESTFN,'cheese')
            dst = os.path.join(TESTFN,'shop')
            try:
                f = open(src,'w')
                f.write('cheddar')
                f.close()
                for funcname in 'link','symlink':
                    getattr(os, funcname)(src, dst)
                    self.assertRaises(shutil.Error, shutil.copyfile, src, dst)
                    self.assertEqual(open(src,'r').read(), 'cheddar')
                    os.remove(dst)
            finally:
                try:
                    shutil.rmtree(TESTFN)
                except OSError:
                    pass


def test_main():
    test_support.run_unittest(TestShutil)

if __name__ == '__main__':
    test_main()