Mercurial > treepkg
annotate test/test_readconfig.py @ 119:92116333ef77
Add PBuilder.run_script method and associated tests. The run_script
method allows arbitrary scripts to be run in the pbuilder chroot
environment
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Wed, 21 May 2008 13:20:36 +0000 |
parents | 02c261e4443f |
children | ce9f046058b5 |
rev | line source |
---|---|
114
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
1 # Copyright (C) 2008 by Intevation GmbH |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
2 # Authors: |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
3 # Bernhard Herzog <bh@intevation.de> |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
4 # |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
5 # This program is free software under the GPL (>=v2) |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
6 # Read the file COPYING coming with the software for details. |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
7 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
8 """Tests for the treepkg.readconfig module""" |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
9 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
10 import sys |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
11 import os |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
12 import operator |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
13 import unittest |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
14 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
15 from filesupport import FileTestMixin |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
16 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
17 from treepkg.readconfig import read_config |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
18 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
19 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
20 class TestReadConfig(unittest.TestCase, FileTestMixin): |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
21 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
22 config_contents = """\ |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
23 [DEFAULT] |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
24 treepkg_dir: /home/builder/mill |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
25 tracks_dir: %(treepkg_dir)s/tracks |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
26 root_cmd: sudo |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
27 pbuilder_dir: %(treepkg_dir)s/pbuilder |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
28 pbuilderrc: %(pbuilder_dir)s/pbuilderrc |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
29 deb_email: treepkg@example.com |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
30 deb_fullname: TreePKG |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
31 debrevision_prefix: treepkg |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
32 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
33 [treepkg] |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
34 instructions_file: %(treepkg_dir)s/instructions |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
35 check_interval: 3600 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
36 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
37 [pkg_simple] |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
38 svn_url: svn://example.com/%(name)s/trunk |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
39 base_dir: %(tracks_dir)s/%(name)s |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
40 packager_class: readconfig_test.%(name)s |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
41 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
42 [pkg_extraargs] |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
43 svn_url: svn://example.com/%(name)s/trunk |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
44 base_dir: %(tracks_dir)s/%(name)s |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
45 packager_class: readconfig_test.extraargs |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
46 orig_tarball: %(base_dir)s/mytarball.tgz |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
47 """ |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
48 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
49 files = [("treepkg.cfg", config_contents), |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
50 ("readconfig_test", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
51 [("__init__.py", ""), |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
52 ("simple.py", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
53 "\n".join(["class SourcePackager:", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
54 " pass", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
55 ""])), |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
56 ("extraargs.py", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
57 "\n".join(["class PackageTrack:", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
58 " extra_config_desc=['orig_tarball']", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
59 ""]))])] |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
60 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
61 def setUp(self): |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
62 self.directory = self.create_temp_dir(self.id()) |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
63 self.create_files(self.directory, self.files) |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
64 self.old_path = sys.path |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
65 sys.path = [self.directory] + sys.path |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
66 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
67 def tearDown(self): |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
68 sys.path = self.old_path |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
69 |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
70 def test_readconfig(self): |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
71 config_file = os.path.join(self.directory, "treepkg.cfg") |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
72 treepkg_opts, packager_opts = read_config(config_file) |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
73 self.assertEquals(treepkg_opts, |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
74 dict(instructions_file="/home/builder/mill/instructions", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
75 check_interval=3600)) |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
76 self.assertEquals(sorted(packager_opts, |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
77 key=operator.itemgetter("name")), |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
78 [ |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
79 dict(name="extraargs", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
80 base_dir="/home/builder/mill/tracks/extraargs", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
81 deb_email="treepkg@example.com", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
82 deb_fullname="TreePKG", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
83 debrevision_prefix="treepkg", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
84 packager_class="readconfig_test.extraargs", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
85 pbuilderrc="/home/builder/mill/pbuilder/pbuilderrc", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
86 root_cmd=['sudo'], |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
87 svn_url="svn://example.com/extraargs/trunk", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
88 orig_tarball=("/home/builder/mill/" |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
89 "tracks/extraargs/mytarball.tgz")), |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
90 dict(name="simple", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
91 base_dir="/home/builder/mill/tracks/simple", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
92 deb_email="treepkg@example.com", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
93 deb_fullname="TreePKG", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
94 debrevision_prefix="treepkg", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
95 packager_class="readconfig_test.simple", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
96 pbuilderrc="/home/builder/mill/pbuilder/pbuilderrc", |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
97 root_cmd=['sudo'], |
02c261e4443f
Extend treepkg.readconfig.read_config:
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
98 svn_url="svn://example.com/simple/trunk")]) |