File: test_makefiles.py

package info (click to toggle)
python-cogapp 3.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 332 kB
  • sloc: python: 3,081; makefile: 55
file content (115 lines) | stat: -rw-r--r-- 3,511 bytes parent folder | download
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
""" Test the cogapp.makefiles modules
"""

import shutil
import os
import random
import tempfile
from unittest import TestCase

from . import makefiles


class SimpleTests(TestCase):

    def setUp(self):
        # Create a temporary directory.
        my_dir = 'testmakefiles_tempdir_' + str(random.random())[2:]
        self.tempdir = os.path.join(tempfile.gettempdir(), my_dir)
        os.mkdir(self.tempdir)

    def tearDown(self):
        # Get rid of the temporary directory.
        shutil.rmtree(self.tempdir)

    def exists(self, dname, fname):
        return os.path.exists(os.path.join(dname, fname))

    def checkFilesExist(self, d, dname):
        for fname in d.keys():
            assert(self.exists(dname, fname))
            if type(d[fname]) == type({}):
                self.checkFilesExist(d[fname], os.path.join(dname, fname))

    def checkFilesDontExist(self, d, dname):
        for fname in d.keys():
            assert(not self.exists(dname, fname))

    def testOneFile(self):
        fname = 'foo.txt'
        notfname = 'not_here.txt'
        d = { fname: "howdy" }
        assert(not self.exists(self.tempdir, fname))
        assert(not self.exists(self.tempdir, notfname))

        makefiles.makeFiles(d, self.tempdir)
        assert(self.exists(self.tempdir, fname))
        assert(not self.exists(self.tempdir, notfname))

        makefiles.removeFiles(d, self.tempdir)
        assert(not self.exists(self.tempdir, fname))
        assert(not self.exists(self.tempdir, notfname))

    def testManyFiles(self):
        d = {
            'top1.txt': "howdy",
            'top2.txt': "hello",
            'sub': {
                 'sub1.txt': "inside",
                 'sub2.txt': "inside2",
                 },
            }

        self.checkFilesDontExist(d, self.tempdir)
        makefiles.makeFiles(d, self.tempdir)
        self.checkFilesExist(d, self.tempdir)
        makefiles.removeFiles(d, self.tempdir)
        self.checkFilesDontExist(d, self.tempdir)

    def testOverlapping(self):
        d1 = {
            'top1.txt': "howdy",
            'sub': {
                 'sub1.txt': "inside",
                 },
            }

        d2 = {
            'top2.txt': "hello",
            'sub': {
                 'sub2.txt': "inside2",
                 },
            }

        self.checkFilesDontExist(d1, self.tempdir)
        self.checkFilesDontExist(d2, self.tempdir)
        makefiles.makeFiles(d1, self.tempdir)
        makefiles.makeFiles(d2, self.tempdir)
        self.checkFilesExist(d1, self.tempdir)
        self.checkFilesExist(d2, self.tempdir)
        makefiles.removeFiles(d1, self.tempdir)
        makefiles.removeFiles(d2, self.tempdir)
        self.checkFilesDontExist(d1, self.tempdir)
        self.checkFilesDontExist(d2, self.tempdir)

    def testContents(self):
        fname = 'bar.txt'
        cont0 = "I am bar.txt"
        d = { fname: cont0 }
        makefiles.makeFiles(d, self.tempdir)
        with open(os.path.join(self.tempdir, fname)) as fcont1:
            assert(fcont1.read() == cont0)

    def testDedent(self):
        fname = 'dedent.txt'
        d = {
            fname: """\
                This is dedent.txt
                \tTabbed in.
                  spaced in.
                OK.
                """,
            }
        makefiles.makeFiles(d, self.tempdir)
        with open(os.path.join(self.tempdir, fname)) as fcont:
            assert(fcont.read() == "This is dedent.txt\n\tTabbed in.\n  spaced in.\nOK.\n")