Mercurial > treepkg
annotate test/test_packager.py @ 322:278abafc2d86
Added recipes for GNUPG Windows CE crossbuilds
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 12 Mar 2010 09:49:35 +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 | 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") |