annotate test/test_packager.py @ 310:26c15a0f0e52

When stopping because of an error, do not raise the exception again as it leads to confusing double tracebacks in the log. Instead, simply log the reason for the stopping and stop in the same way a stop instruction is handled.
author Bernhard Herzog <bh@intevation.de>
date Wed, 02 Dec 2009 14:46:37 +0000
parents c32dc72ba979
children 23be5ab5bc7c
rev   line source
222
01c043f13f13 Remove the unused PackageTrack.last_packaged_revision method and
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
1 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Authors:
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Bernhard Herzog <bh@intevation.de>
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 #
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 # This program is free software under the GPL (>=v2)
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # Read the file COPYING coming with the software for details.
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8 """Tests for treepkg.packager"""
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10 import sys
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 import os
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12 import unittest
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14 from treepkg.run import call
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15 from treepkg.cmdexpand import cmdexpand
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16 from treepkg.util import writefile
128
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
17 from treepkg.packager import PackagerGroup, import_packager_module, \
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
18 CyclicDependencyError
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19 import treepkg.subversion as subversion
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20 import treepkg
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22 from filesupport import FileTestMixin
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 def create_svn_repository(directory):
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 baseurl = "file://" + directory
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 call(cmdexpand("svnadmin create --fs-type fsfs $directory",
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 **locals()))
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 call(cmdexpand("svn mkdir -q -m 'create directory structure'"
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 " $baseurl/trunk",
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 **locals()))
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 return baseurl
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 def add_svn_files(workingcopy, filedesc, commitmsg):
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 for name, contents in filedesc:
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 writefile(os.path.join(workingcopy, name), contents)
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 call(cmdexpand("svn add -q $name", **locals()),
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 cwd=workingcopy)
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 call(cmdexpand("svn commit -q -m $commitmsg", **locals()),
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 cwd=workingcopy)
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 class SourcePackager(treepkg.packager.SourcePackager):
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 def do_package(self):
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46 pkgbaseversion, pkgbasedir = self.export_sources()
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48 pkgbasename = self.pkg_basename + "_" + pkgbaseversion
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 origtargz = os.path.join(self.work_dir,
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 pkgbasename + ".orig.tar.gz")
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51 self.create_tarball(origtargz, self.work_dir,
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 os.path.basename(pkgbasedir))
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54 changemsg = ("Update to SVN rev. %d" % (self.revision,))
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 self.copy_debian_directory(pkgbasedir, pkgbaseversion,
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 changemsg)
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 self.create_source_package(pkgbasedir, origtargz)
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 self.move_source_package(pkgbasename)
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 class RevisionPackager(treepkg.packager.RevisionPackager):
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 source_packager_cls = SourcePackager
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 class PackageTrack(treepkg.packager.PackageTrack):
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69 revision_packager_cls = RevisionPackager
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71
94
0c13a84a67dd refactor the packager test cases to prepare for more tests
Bernhard Herzog <bh@intevation.de>
parents: 93
diff changeset
72 class PackagerTest(unittest.TestCase, FileTestMixin):
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73
94
0c13a84a67dd refactor the packager test cases to prepare for more tests
Bernhard Herzog <bh@intevation.de>
parents: 93
diff changeset
74 revisions = []
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76 debian_files = [
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77 ("debian",
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78 [("control", """\
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
79 Source: testpkg
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 Priority: optional
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81 Maintainer: TreePKG <treepkg@example.com>
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 Standards-Version: 3.7.2
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
84 Package: testpkg
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
85 Architecture: all
116
093514306186 Cosemetic fix in test data
Bernhard Herzog <bh@intevation.de>
parents: 113
diff changeset
86 Description: Test package for treepkg tests
093514306186 Cosemetic fix in test data
Bernhard Herzog <bh@intevation.de>
parents: 113
diff changeset
87 German (de) internationalized (i18n) files for KDE
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
88 This package contains the German internationalized (i18n) files for
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
89 all KDE core applications.
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
90 """),
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
91 ("changelog", """\
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
92 testpkg (0-0) unstable; urgency=low
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94 * Initial version
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
95
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96 -- TreePKG <treepkg@example.com> Thu, 8 Mar 2007 18:34:39 +0100
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
97 """),
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
98 ("rules", "binary: echo binary")])]
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
99
94
0c13a84a67dd refactor the packager test cases to prepare for more tests
Bernhard Herzog <bh@intevation.de>
parents: 93
diff changeset
100
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
101 def setUp(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
102 self.svndir = self.create_temp_dir("svn")
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
103 self.svnworkdir = self.create_temp_dir("svnwork")
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
104 self.trackdir = self.create_files("track", self.debian_files)
94
0c13a84a67dd refactor the packager test cases to prepare for more tests
Bernhard Herzog <bh@intevation.de>
parents: 93
diff changeset
105 self.svn_url = create_svn_repository(self.svndir) + "/trunk"
0c13a84a67dd refactor the packager test cases to prepare for more tests
Bernhard Herzog <bh@intevation.de>
parents: 93
diff changeset
106 subversion.checkout(self.svn_url, self.svnworkdir)
95
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
107 for message, files in self.revisions:
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
108 add_svn_files(self.svnworkdir, files, message)
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
109
98
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
110 def runtest(self, debrevision, group_args=None, **extra_track_args):
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
111 rootcmd = os.path.join(os.path.dirname(__file__), os.pardir, "test",
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
112 "mocksudopbuilder.py")
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
113 track = PackageTrack(name="testpkg", base_dir=self.trackdir,
94
0c13a84a67dd refactor the packager test cases to prepare for more tests
Bernhard Herzog <bh@intevation.de>
parents: 93
diff changeset
114 svn_url=self.svn_url, pbuilderrc="",
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
115 root_cmd=[sys.executable, rootcmd],
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
116 deb_email="treepkg@example.com",
93
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
117 deb_fullname="treepkg tester",
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
118 **extra_track_args)
98
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
119
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
120 if group_args is None:
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
121 group_args = {}
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
122 group = PackagerGroup([track], 1, **group_args)
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
123 group.check_package_tracks()
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
124
95
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
125 # determine version that has been packaged. This assumes that
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
126 # check_package_tracks will leave the checkout in the revision
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
127 # that was actually packaged.
98
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
128 version = track.last_changed_revision()
95
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
129
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
130 # Now check the source and binary package files
232
e3cda08d2619 When checking whether to build a new revision, also update the rules
Bernhard Herzog <bh@intevation.de>
parents: 229
diff changeset
131 pkgdir = os.path.join(self.trackdir, "pkg", "%d-0" % version)
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
132 self.assertEquals(sorted(os.listdir(os.path.join(pkgdir, "src"))),
95
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
133 [name % locals() for name in
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
134 ["testpkg_%(version)d-%(debrevision)s.diff.gz",
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
135 "testpkg_%(version)d-%(debrevision)s.dsc",
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
136 "testpkg_%(version)d.orig.tar.gz"]])
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
137 self.assertEquals(sorted(os.listdir(os.path.join(pkgdir, "binary"))),
95
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
138 [name % locals() for name in
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
139 ["testpkg_%(version)d-%(debrevision)s_all.deb",
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
140 "testpkg_%(version)d-%(debrevision)s_i386.changes"]])
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
141
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
142
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
143 class TestPackager(PackagerTest):
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
144
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
145 revisions = [
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
146 ("Initial Revision",
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
147 [("README", "and miles to go before I sleep")]),
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
148 ]
93
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
149
293
faeeac2c4c71 Replace debrevision_prefix with pkg_revision_template. Their meaning is
Bernhard Herzog <bh@intevation.de>
parents: 232
diff changeset
150 def test_default_pkg_revision_template(self):
93
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
151 self.runtest("treepkg1")
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
152
293
faeeac2c4c71 Replace debrevision_prefix with pkg_revision_template. Their meaning is
Bernhard Herzog <bh@intevation.de>
parents: 232
diff changeset
153 def test_custom_pkg_revision_template(self):
faeeac2c4c71 Replace debrevision_prefix with pkg_revision_template. Their meaning is
Bernhard Herzog <bh@intevation.de>
parents: 232
diff changeset
154 self.runtest("kk1.2", pkg_revision_template="kk%(pkg_revision)d.2")
85
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
155
98
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
156
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
157 class TestPackagerWithMultipleRevisions(PackagerTest):
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
158
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
159 revisions = [
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
160 ("Initial Revision",
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
161 [("README", "and miles to go before I sleep")]),
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
162 ("Add some code",
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
163 [("program.c", "int main(void) { return 0; }")]),
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
164 ("Add some more code",
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
165 [("another.c", "int main(void) { return 1; }")]),
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
166 ]
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
167
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
168 def test_packaging_specific_revision(self):
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
169 # Package the newest revision and then package an older one.
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
170 self.runtest("treepkg1")
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
171 self.runtest("treepkg1", group_args=dict(revision=3))
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
172
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
173
91
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
174 class StoppingPackager(treepkg.packager.RevisionPackager):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
175
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
176 def package(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
177 pass
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
178
223
230582ed7329 some cosmetic changes:
Bernhard Herzog <bh@intevation.de>
parents: 222
diff changeset
179
91
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
180 class StoppingTrack(treepkg.packager.PackageTrack):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
181
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
182 def __init__(self, do_package, do_stop, instructions_file, name, trackdir):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
183 super(StoppingTrack, self).__init__(name, trackdir, "", "", "",
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
184 "", "")
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
185 self.do_package = do_package
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
186 self.do_stop = do_stop
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
187 self.instructions_file = instructions_file
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
188
190
e83db4482aab Add runtreepkg.py command line option --no-svn-update to inhibit updates
Bernhard Herzog <bh@intevation.de>
parents: 185
diff changeset
189 def package_if_updated(self, revision, do_svn_update=True):
91
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
190 if self.do_stop:
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
191 writefile(self.instructions_file, "stop")
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
192 if self.do_package:
229
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
193 return StoppingPackager(self, 1, 0)
91
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
194 else:
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
195 return None
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
196
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
197
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
198 class TestPackageGroupStop(unittest.TestCase, FileTestMixin):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
199
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
200 def setUp(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
201 self.trackdir = self.create_temp_dir("track")
91
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
202 self.instructions_file = os.path.join(self.trackdir, "instructions")
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
203
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
204 def group(self, do_package=True, do_stop=True):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
205 return PackagerGroup([StoppingTrack(do_package, do_stop,
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
206 self.instructions_file,
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
207 "test", self.trackdir)],
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
208 1, instructions_file=self.instructions_file)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
209
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
210 def test_stop(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
211 group = self.group(do_package=True, do_stop=True)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
212 self.failUnless(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
213
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
214 def test_no_stop(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
215 group = self.group(do_package=True, do_stop=False)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
216 self.failIf(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
217
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
218 def test_instruction_removal(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
219 # run once with stopping
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
220 group = self.group(do_package=True, do_stop=True)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
221 self.failUnless(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
222
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
223 # run again without stopping but using the same files. The
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
224 # instructions file should be removed automatically
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
225 group = self.group(do_package=True, do_stop=False)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
226 self.failIf(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
227
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
228 def test_stopping_without_packaging(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
229 group = self.group(do_package=False, do_stop=True)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
230 self.failUnless(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
231
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
232 def test_stopping_between_checks(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
233 group = self.group(do_package=False, do_stop=False)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
234 # run check_package_tracks once
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
235 self.failIf(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
236
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
237 # tell treepkg to stop
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
238 writefile(self.instructions_file, "stop")
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
239
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
240 # check again. The check_package_tracks() may remove the
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
241 # instructions file but it must do so only the first time
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
242 self.failUnless(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
243
85
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
244
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
245 class TestPackageTrack(unittest.TestCase, FileTestMixin):
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
246
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
247 def test_get_revision_numbers(self):
86
9bd92a3290e0 In TestPackageTrack, create the test files in the test_-methods so that
Bernhard Herzog <bh@intevation.de>
parents: 85
diff changeset
248 # Note: The revisions in the pkg dir are not ordered so that we
9bd92a3290e0 In TestPackageTrack, create the test files in the test_-methods so that
Bernhard Herzog <bh@intevation.de>
parents: 85
diff changeset
249 # can check whether get_revision_numbers returns a sorted list
9bd92a3290e0 In TestPackageTrack, create the test files in the test_-methods so that
Bernhard Herzog <bh@intevation.de>
parents: 85
diff changeset
250 # of revisions
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
251 trackdir = self.create_files("track",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
252 [("pkg",
229
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
253 [("704195-0",
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
254 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
255 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
256 ("binary", [])]),
229
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
257 ("702432-2",
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
258 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
259 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
260 ("binary", [])])])])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
261 track = PackageTrack("testtrack", trackdir, "", "", "", "", "")
229
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
262 self.assertEquals(track.get_revision_numbers(),
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
263 [(702432, 2), (704195, 0)])
87
08d8ffd40f27 add some tests for the PackageTrack.last_packaged_revision() method
Bernhard Herzog <bh@intevation.de>
parents: 86
diff changeset
264
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
265
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
266 class TestRevisionPackager(unittest.TestCase, FileTestMixin):
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
267
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
268 def test_list_source_files(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
269 trackdir = self.create_files("track",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
270 [("pkg",
229
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
271 [("704195-31",
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
272 [("status",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
273 ("TreePackagerStatus 0.0\n"
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
274 "status: binary_package_created\n"
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
275 "start: 2007-09-10 17:16:48\n"
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
276 "stop: 2007-09-11 00:07:36\n")),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
277 ("src", [("test_1.0.orig.tar.gz", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
278 ("test_1.0-1.diff.gz", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
279 ("test_1.0-1.dsc", "")]),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
280 ("binary", [])]),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
281 ("702432-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
282 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
283 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
284 ("binary", [])])])])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
285 track = PackageTrack("testtrack", trackdir, "", "", "", "", "")
229
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
286 revpkg = RevisionPackager(track, 704195, 31)
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
287 srcdir = os.path.join(trackdir, "pkg", "704195-31", "src")
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
288 self.assertEquals(revpkg.list_source_files(),
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
289 [os.path.join(srcdir, filename)
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
290 for filename in ["test_1.0-1.diff.gz",
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
291 "test_1.0-1.dsc",
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
292 "test_1.0.orig.tar.gz"]])
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
293
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
294 def test_list_binary_files(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
295 trackdir = self.create_files("track",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
296 [("pkg",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
297 [("704195-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
298 [("status",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
299 ("TreePackagerStatus 0.0\n"
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
300 "status: binary_package_created\n"
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
301 "start: 2007-09-10 17:16:48\n"
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
302 "stop: 2007-09-11 00:07:36\n")),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
303 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
304 ("binary",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
305 [("test_1.0-1_i386.deb", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
306 ("test_1.0-1_i386.changes", "")])]),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
307 ("702432-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
308 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
309 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
310 ("binary", [])])])])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
311 track = PackageTrack("testtrack", trackdir, "", "", "", "", "")
229
653a45adda50 Prepare for svn managed debian rules directories. So far, the directory
Bernhard Herzog <bh@intevation.de>
parents: 223
diff changeset
312 revpkg = RevisionPackager(track, 704195, 1)
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
313 bindir = os.path.join(trackdir, "pkg", "704195-1", "binary")
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
314 self.assertEquals(revpkg.list_binary_files(),
117
4bb029560721 Fix variable name in testcase
Bernhard Herzog <bh@intevation.de>
parents: 116
diff changeset
315 [os.path.join(bindir, filename)
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
316 for filename in ["test_1.0-1_i386.changes",
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
317 "test_1.0-1_i386.deb"]])
113
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
318
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
319
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
320 class TestImportPackagerModule(unittest.TestCase, FileTestMixin):
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
321
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
322 files = [("treepkg_importtest",
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
323 [("__init__.py", ""),
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
324 ("withtrack.py", "\n".join(["class PackageTrack:",
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
325 " pass",
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
326 ""])),
125
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
327 ("srconly.py", "\n".join(["class SourcePackager:",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
328 " pass",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
329 ""])),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
330 ("srcandbin.py", "\n".join(["class SourcePackager:",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
331 " pass",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
332 "class BinaryPackager:",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
333 " pass",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
334 ""])),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
335 ("revonly.py", "\n".join(["class RevisionPackager:",
113
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
336 " pass",
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
337 ""]))])]
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
338
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
339 def setUp(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
340 self.directory = self.create_files("a_module", self.files)
113
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
341 self.old_path = sys.path
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
342 sys.path = [self.directory] + sys.path
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
343
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
344 def tearDown(self):
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
345 sys.path = self.old_path
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
346
125
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
347 def check_class_modules(self, module, classmodules):
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
348 self.assertEquals(classmodules,
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
349 [(item[0],
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
350 sys.modules[getattr(module, item[0]).__module__])
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
351 for item in classmodules])
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
352
113
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
353 def test_import_with_track(self):
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
354 module = import_packager_module("treepkg_importtest.withtrack")
125
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
355 self.check_class_modules(module, [("PackageTrack", module)])
113
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
356
125
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
357 def test_import_with_source_packager(self):
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
358 module = import_packager_module("treepkg_importtest.srconly")
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
359 self.check_class_modules(module, [("PackageTrack", treepkg.packager),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
360 ("SourcePackager", module),])
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
361
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
362 def test_import_with_source_and_binary_packager(self):
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
363 module = import_packager_module("treepkg_importtest.srcandbin")
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
364 self.check_class_modules(module, [("PackageTrack", treepkg.packager),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
365 ("RevisionPackager",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
366 treepkg.packager),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
367 ("SourcePackager", module),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
368 ("BinaryPackager", module),])
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
369 self.assertEquals(module.PackageTrack.revision_packager_cls,
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
370 module.RevisionPackager)
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
371 self.assertEquals(module.RevisionPackager.source_packager_cls,
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
372 module.SourcePackager)
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
373 self.assertEquals(module.RevisionPackager.binary_packager_cls,
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
374 module.BinaryPackager)
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
375
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
376 def test_import_with_revision_packager(self):
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
377 module = import_packager_module("treepkg_importtest.revonly")
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
378 self.check_class_modules(module, [("PackageTrack", treepkg.packager),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
379 ("RevisionPackager", module)])
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
380
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
381 self.assertEquals(module.PackageTrack.revision_packager_cls,
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
382 module.RevisionPackager)
128
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
383
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
384
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
385 class PackageTrackWithDependencies(treepkg.packager.PackageTrack):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
386
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
387 def __init__(self, name, handle_dependencies, requires, provides):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
388 defaults = dict(base_dir="/home/builder/tracks/" + name,
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
389 svn_url="svn://example.com",
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
390 root_cmd=["false"],
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
391 pbuilderrc="/home/builder/pbuilderrc",
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
392 deb_email="treepkg@example.com", deb_fullname="treepkg",
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
393 handle_dependencies=handle_dependencies)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
394 super(PackageTrackWithDependencies,
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
395 self).__init__(name, **defaults)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
396 self.dependencies = (set(requires.split()), set(provides.split()))
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
397
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
398 def determine_dependencies(self):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
399 pass
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
400
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
401
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
402 class TestPackageDependencies(unittest.TestCase):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
403
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
404 def test_track_order(self):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
405 P = PackageTrackWithDependencies
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
406 tracks = [P("library", True, "base-dev", "library library-dev"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
407 P("other", False, "cdbs base-dev", "other"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
408 P("base", True, "", "base base-dev"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
409 P("program", True, "library-dev libc", "program program-doc"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
410 ]
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
411 group = PackagerGroup(tracks, 3600)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
412 sorted_tracks = group.get_package_tracks()
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
413 track_indices = dict([(track.name, index) for index, track in
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
414 enumerate(sorted_tracks)])
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
415 def check_order(track1, track2):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
416 self.failUnless(track_indices[track1] < track_indices[track2])
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
417
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
418 check_order("base", "library")
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
419 check_order("library", "program")
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
420 check_order("base", "program")
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
421
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
422 # sanity check whether other is still there. It doesn't matter
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
423 # where
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
424 self.failUnless("other" in track_indices)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
425
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
426 def test_track_order_cycle(self):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
427 P = PackageTrackWithDependencies
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
428 tracks = [P("library", True, "base-dev", "library library-dev"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
429 P("cycle", True, "program", "cycle"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
430 P("other", False, "cdbs base-dev", "other"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
431 P("base", True, "cycle", "base base-dev"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
432 P("program", True, "library-dev libc", "program program-doc"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
433 ]
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
434 try:
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
435 group = PackagerGroup(tracks, 3600)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
436 sorted_tracks = group.get_package_tracks()
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
437 except CyclicDependencyError, exc:
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
438 pass
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
439 else:
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
440 self.fail("PackagerGroup did not detect cyclic dependencies")
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)