source: tailor/vcpx/tests/config.py @ 1440

Revision 1440, 5.7 KB checked in by techtonik@…, 6 years ago (diff)

test suite windows path correction

Line 
1# -*- mode: python; coding: utf-8 -*-
2# :Progetto: vcpx -- Tests for the configuration stuff
3# :Creato:   mer 03 ago 2005 02:17:18 CEST
4# :Autore:   Lele Gaifax <lele@nautilus.homeip.net>
5# :Licenza:  GNU General Public License
6#
7
8from unittest import TestCase
9from vcpx.config import Config, ConfigurationError
10from vcpx.project import Project
11
12class Configuration(TestCase):
13    "Test the configuration system"
14
15    TESTDIR = None
16
17    def setUp(self):
18        from os import mkdir, getcwd
19        from os.path import exists, split, join
20        from tempfile import gettempdir
21        from atexit import register
22        from shutil import rmtree
23
24        self.TESTDIR = join(gettempdir(), 'tailor-tests')
25
26        tailor_repo = getcwd()
27        while tailor_repo != split(tailor_repo)[0] and not exists(join(tailor_repo, '_darcs')):
28            tailor_repo = split(tailor_repo)[0]
29        assert exists(join(tailor_repo, '_darcs')), "Tailor Darcs repository not found!"
30        self.tailor_repo = tailor_repo
31        if not exists(self.TESTDIR):
32            mkdir(self.TESTDIR)
33            register(rmtree, self.TESTDIR)
34
35    def getTestConfiguration(self, testname):
36        from os.path import join, split
37
38        logname = join(split(__file__)[0], 'data', testname)+'.py'
39        return file(logname)
40
41    def testBasicConfig(self):
42        """Verify the basic configuration mechanism"""
43
44        from os import getcwd
45        from os.path import expanduser
46
47        config = Config(self.getTestConfiguration("config-basic_test"),
48                        {'tailor_repo': self.tailor_repo})
49
50        self.assertEqual(config.projects(), ['project2'])
51        self.assertRaises(ConfigurationError, Project, 'project2', config)
52
53        project1 = Project('project1', config)
54        self.assertEqual(project1.rootdir, self.TESTDIR)
55        self.assertEqual(project1.source.name, 'svn:project1repo')
56        self.assertEqual(project1.target.name, 'darcs:project1')
57        self.assertEqual(project1.target.repository, expanduser('~/darcs/project1'))
58
59        project4 = Project('project4', config)
60        self.assertEqual(project4.rootdir, getcwd())
61
62        self.assert_(config.namespace.has_key('maybe_skip'))
63        self.assert_(config.namespace['refill'] in project1.before_commit)
64        self.assertEqual(len(project1.after_commit), 1)
65
66    def testSharedDirs(self):
67        """Verify the shared-dir switch"""
68
69        config = Config(self.getTestConfiguration("config-basic_test"),
70                        {'tailor_repo': self.tailor_repo})
71
72        project1 = Project('project1', config)
73        wd = project1.workingDir()
74        self.assert_(wd.shared_basedirs)
75
76        project3 = Project('project3', config)
77        wd = project3.workingDir()
78        self.assert_(wd.shared_basedirs)
79
80        project4 = Project('project4', config)
81        wd = project4.workingDir()
82        self.assert_(not wd.shared_basedirs)
83
84    def testWithLogging(self):
85        """Verify a configuration containing also a [[logging]] section"""
86
87        from logging import getLogger
88
89        config = Config(self.getTestConfiguration("config-with_logging"), {})
90
91        logger = getLogger()
92        self.assertEqual(logger.handlers[0].formatter._fmt, 'DUMMY')
93
94    def testLookForAdds(self):
95        """Verify the darcs Repository knows about --look-for-adds"""
96
97        config = Config(self.getTestConfiguration("config-basic_test"),
98                        {'tailor_repo': self.tailor_repo})
99
100        project3 = Project('project3', config)
101        self.assertEqual(project3.target.command('record', '-a'),
102                         ['darcs', 'record', '-a'])
103        project4 = Project('project4', config)
104        self.assertEqual(project4.target.command('record', '-a'),
105                         ['darcs', 'record', '-a', '--look-for-adds'])
106
107    def testTagEntries(self):
108        """Verify the darcs Repository knows when force CVS tag on entries"""
109
110        config = Config(self.getTestConfiguration("config-basic_test"),
111                        {'tailor_repo': self.tailor_repo})
112
113        project5 = Project('project5', config)
114        self.assertEqual(project5.source.tag_entries, True)
115        self.assertEqual(project5.target.tag_entries, False)
116
117    def testStateFileName(self):
118        """Verify that the state file is computed the way it should"""
119
120        from os.path import expanduser, join
121
122        config = Config(self.getTestConfiguration("config-basic_test"),
123                        {'tailor_repo': self.tailor_repo})
124
125        project1 = Project('project1', config)
126        self.assertEqual(project1.state_file.filename, join(self.TESTDIR, 'project1.state'))
127        project3 = Project('project3', config)
128        self.assertEqual(project3.state_file.filename, join(self.TESTDIR, '_darcs', 'tailor.state'))
129        project4 = Project('project4', config)
130        self.assertEqual(project4.state_file.filename, expanduser('~/tailorize/project4.state'))
131        project6 = Project('project6', config)
132        self.assertEqual(project6.state_file.filename, expanduser('~/tailorizedp/project6/.hg/tailor.state'))
133
134        config = Config(self.getTestConfiguration("config-sf_test"), {})
135        sbcl = Project('sbcl', config)
136        self.assertEqual(sbcl.state_file.filename, expanduser('~/tmp/test-tailor/sbcl/.hg/tailor.state'))
137
138    def testBadChars(self):
139        """Test how the config parser loads the badchar mapping"""
140
141        config = Config(self.getTestConfiguration("config-basic_test"),
142                        {'tailor_repo': self.tailor_repo})
143        project4 = Project('project4', config)
144        self.assert_(project4.target.replace_badchars.has_key('\xc1'))
145        project6 = Project('project6', config)
146        self.assertEqual(project6.source.replace_badchars['a'], 'b')
Note: See TracBrowser for help on using the repository browser.