annotate test/test_packager.py @ 185:e1c7cd896310

Rework test/filesupport.py so that test cases always use their own temporary directory. Before, the test cases had to ensure this themselves. Adapt the test cases.
author Bernhard Herzog <bh@intevation.de>
date Thu, 26 Jun 2008 16:23:26 +0000
parents 5155b4f9443d
children e83db4482aab
rev   line source
113
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
1 # Copyright (C) 2007, 2008 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 pkg_basename = "testpkg"
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 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
48 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
49
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 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
51 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
52 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
53 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
54 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
55
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 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
57 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
58 changemsg)
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 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
61 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
62
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 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
65
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 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
67
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 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
70
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 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
72
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 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
75
94
0c13a84a67dd refactor the packager test cases to prepare for more tests
Bernhard Herzog <bh@intevation.de>
parents: 93
diff changeset
76 revisions = []
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78 debian_files = [
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
79 ("debian",
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 [("control", """\
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81 Source: testpkg
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 Priority: optional
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83 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
84 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
85
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
86 Package: testpkg
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
87 Architecture: all
116
093514306186 Cosemetic fix in test data
Bernhard Herzog <bh@intevation.de>
parents: 113
diff changeset
88 Description: Test package for treepkg tests
093514306186 Cosemetic fix in test data
Bernhard Herzog <bh@intevation.de>
parents: 113
diff changeset
89 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
90 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
91 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
92 """),
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93 ("changelog", """\
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94 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
95
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96 * Initial version
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 -- 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
99 """),
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
100 ("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
101
94
0c13a84a67dd refactor the packager test cases to prepare for more tests
Bernhard Herzog <bh@intevation.de>
parents: 93
diff changeset
102
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110 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
111
98
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
112 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
113 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
114 "mocksudopbuilder.py")
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
115 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
116 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
117 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
118 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
119 deb_fullname="treepkg tester",
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
120 **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
121
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
122 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
123 group_args = {}
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
124 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
125 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
126
95
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
127 # 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
128 # 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
129 # 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
130 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
131
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
132 # Now check the source and binary package files
95
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
133 pkgdir = os.path.join(self.trackdir, "pkg", "%d-1" % version)
84
98a7d70746a9 Make BinaryPackager remove all files that do not belong to the binary
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
134 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
135 [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
136 ["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
137 "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
138 "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
139 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
140 [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
141 ["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
142 "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
143
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 class TestPackager(PackagerTest):
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
146
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
147 revisions = [
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
148 ("Initial Revision",
8f1c72135ea6 Make PackagerTest more flexible to make it easier to add tests
Bernhard Herzog <bh@intevation.de>
parents: 94
diff changeset
149 [("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
150 ]
93
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
151
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
152 def test_default_debrevision_prefix(self):
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
153 self.runtest("treepkg1")
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
154
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
155 def test_custom_debrevision_prefix(self):
73c67372c7f7 Make the prefix used in the debian revision number configurable.
Bernhard Herzog <bh@intevation.de>
parents: 91
diff changeset
156 self.runtest("kk1", debrevision_prefix="kk")
85
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
157
98
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 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
160
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
161 revisions = [
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
162 ("Initial Revision",
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
163 [("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
164 ("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
165 [("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
166 ("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
167 [("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
168 ]
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
169
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
170 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
171 # 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
172 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
173 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
174
f7b9c7113c46 Make packaging a specific revision work even if newer revisions have already
Bernhard Herzog <bh@intevation.de>
parents: 97
diff changeset
175
91
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
176 class StoppingPackager(treepkg.packager.RevisionPackager):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
177
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
178 def package(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
179 pass
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
180
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
181 class StoppingTrack(treepkg.packager.PackageTrack):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
182
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
183 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
184 super(StoppingTrack, self).__init__(name, trackdir, "", "", "",
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
185 "", "")
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
186 self.do_package = do_package
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
187 self.do_stop = do_stop
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
188 self.instructions_file = instructions_file
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
189
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
190 def package_if_updated(self, revision):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
191 if self.do_stop:
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
192 writefile(self.instructions_file, "stop")
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
193 if self.do_package:
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
194 return StoppingPackager(self, 1)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
195 else:
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
196 return None
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
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
199 class TestPackageGroupStop(unittest.TestCase, FileTestMixin):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
200
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
201 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
202 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
203 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
204
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
205 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
206 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
207 self.instructions_file,
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
208 "test", self.trackdir)],
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
209 1, instructions_file=self.instructions_file)
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
210
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
211 def test_stop(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
212 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
213 self.failUnless(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
214
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
215 def test_no_stop(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
216 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
217 self.failIf(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
218
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
219 def test_instruction_removal(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
220 # run once with stopping
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
221 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
222 self.failUnless(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
223
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
224 # 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
225 # instructions file should be removed automatically
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
226 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
227 self.failIf(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
228
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
229 def test_stopping_without_packaging(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
230 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
231 self.failUnless(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
232
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
233 def test_stopping_between_checks(self):
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
234 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
235 # run check_package_tracks once
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
236 self.failIf(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
237
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
238 # tell treepkg to stop
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
239 writefile(self.instructions_file, "stop")
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
240
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
241 # 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
242 # 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
243 self.failUnless(group.check_package_tracks())
3ed079a7174a Implement a way to stop a running treepackager.
Bernhard Herzog <bh@intevation.de>
parents: 88
diff changeset
244
85
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
245
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
246 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
247
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
248 # def setUp(self):
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
249 # self.trackdir = self.create_temp_dir("track")
85
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
250
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
251 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
252 # 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
253 # 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
254 # 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
255 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
256 [("pkg",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
257 [("704195-1",
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 ("702432-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
262 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
263 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
264 ("binary", [])])])])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
265 track = PackageTrack("testtrack", trackdir, "", "", "", "", "")
85
31b0567df051 Make PackageTrack.get_revision_numbers return the revisions as a sorted
Bernhard Herzog <bh@intevation.de>
parents: 84
diff changeset
266 self.assertEquals(track.get_revision_numbers(), [702432, 704195])
87
08d8ffd40f27 add some tests for the PackageTrack.last_packaged_revision() method
Bernhard Herzog <bh@intevation.de>
parents: 86
diff changeset
267
08d8ffd40f27 add some tests for the PackageTrack.last_packaged_revision() method
Bernhard Herzog <bh@intevation.de>
parents: 86
diff changeset
268 def test_last_packaged_revision_with_no_revisions(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", [("pkg", [])])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
270 track = PackageTrack("testtrack", trackdir, "", "", "", "", "")
87
08d8ffd40f27 add some tests for the PackageTrack.last_packaged_revision() method
Bernhard Herzog <bh@intevation.de>
parents: 86
diff changeset
271 self.assertEquals(track.last_packaged_revision(), -1)
08d8ffd40f27 add some tests for the PackageTrack.last_packaged_revision() method
Bernhard Herzog <bh@intevation.de>
parents: 86
diff changeset
272
08d8ffd40f27 add some tests for the PackageTrack.last_packaged_revision() method
Bernhard Herzog <bh@intevation.de>
parents: 86
diff changeset
273 def test_last_packaged_revision_several_revisions(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
274 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
275 [("pkg",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
276 [("704195-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
277 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
278 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
279 ("binary", [])]),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
280 ("702432-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
281 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
282 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
283 ("binary", [])])])])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
284 track = PackageTrack("testtrack", trackdir, "", "", "", "", "")
87
08d8ffd40f27 add some tests for the PackageTrack.last_packaged_revision() method
Bernhard Herzog <bh@intevation.de>
parents: 86
diff changeset
285 self.assertEquals(track.last_packaged_revision(), 704195)
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
286
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
287
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
288 class TestRevisionPackager(unittest.TestCase, FileTestMixin):
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
289
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
290 # def setUp(self):
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
291 # self.trackdir = self.create_temp_dir("track")
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
292
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
293 def test_list_source_files(self):
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
294 # Note: The revisions in the pkg dir are not ordered so that we
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
295 # can check whether get_revision_numbers returns a sorted list
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
296 # 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
297 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
298 [("pkg",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
299 [("704195-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
300 [("status",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
301 ("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
302 "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
303 "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
304 "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
305 ("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
306 ("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
307 ("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
308 ("binary", [])]),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
309 ("702432-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
310 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
311 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
312 ("binary", [])])])])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
313 track = PackageTrack("testtrack", trackdir, "", "", "", "", "")
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
314 revpkg = RevisionPackager(track, 704195)
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
315 srcdir = os.path.join(trackdir, "pkg", "704195-1", "src")
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
316 self.assertEquals(revpkg.list_source_files(),
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
317 [os.path.join(srcdir, filename)
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
318 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
319 "test_1.0-1.dsc",
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
320 "test_1.0.orig.tar.gz"]])
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
321
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
322 def test_list_binary_files(self):
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
323 # Note: The revisions in the pkg dir are not ordered so that we
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
324 # can check whether get_revision_numbers returns a sorted list
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
325 # 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
326 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
327 [("pkg",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
328 [("704195-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
329 [("status",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
330 ("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
331 "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
332 "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
333 "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
334 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
335 ("binary",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
336 [("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
337 ("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
338 ("702432-1",
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
339 [("status", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
340 ("src", []),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
341 ("binary", [])])])])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
342 track = PackageTrack("testtrack", trackdir, "", "", "", "", "")
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
343 revpkg = RevisionPackager(track, 704195)
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 128
diff changeset
344 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
345 self.assertEquals(revpkg.list_binary_files(),
117
4bb029560721 Fix variable name in testcase
Bernhard Herzog <bh@intevation.de>
parents: 116
diff changeset
346 [os.path.join(bindir, filename)
88
3ae54f99db26 Add methods RevisionPackager.list_source_files and
Bernhard Herzog <bh@intevation.de>
parents: 87
diff changeset
347 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
348 "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
349
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
350
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
351 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
352
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
353 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
354 [("__init__.py", ""),
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
355 ("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
356 " pass",
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
357 ""])),
125
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
358 ("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
359 " pass",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
360 ""])),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
361 ("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
362 " pass",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
363 "class BinaryPackager:",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
364 " pass",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
365 ""])),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
366 ("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
367 " pass",
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
368 ""]))])]
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
369
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
370 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
371 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
372 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
373 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
374
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
375 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
376 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
377
125
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
378 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
379 self.assertEquals(classmodules,
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
380 [(item[0],
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
381 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
382 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
383
113
312949e7628d Add a smarter way to load the packager modules: Add the function
Bernhard Herzog <bh@intevation.de>
parents: 98
diff changeset
384 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
385 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
386 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
387
125
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
388 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
389 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
390 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
391 ("SourcePackager", module),])
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
392
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
393 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
394 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
395 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
396 ("RevisionPackager",
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
397 treepkg.packager),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
398 ("SourcePackager", module),
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
399 ("BinaryPackager", module),])
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
400 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
401 module.RevisionPackager)
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
402 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
403 module.SourcePackager)
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
404 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
405 module.BinaryPackager)
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
406
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
407 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
408 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
409 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
410 ("RevisionPackager", module)])
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
411
34e08d52956e Make the import_packager_module function more flexible. The modules may
Bernhard Herzog <bh@intevation.de>
parents: 117
diff changeset
412 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
413 module.RevisionPackager)
128
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
414
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
415
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
416 class PackageTrackWithDependencies(treepkg.packager.PackageTrack):
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 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
419 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
420 svn_url="svn://example.com",
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
421 root_cmd=["false"],
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
422 pbuilderrc="/home/builder/pbuilderrc",
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
423 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
424 handle_dependencies=handle_dependencies)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
425 super(PackageTrackWithDependencies,
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
426 self).__init__(name, **defaults)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
427 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
428
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
429 def determine_dependencies(self):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
430 pass
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
431
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
432
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
433 class TestPackageDependencies(unittest.TestCase):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
434
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
435 def test_track_order(self):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
436 P = PackageTrackWithDependencies
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
437 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
438 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
439 P("base", True, "", "base base-dev"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
440 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
441 ]
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
442 group = PackagerGroup(tracks, 3600)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
443 sorted_tracks = group.get_package_tracks()
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
444 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
445 enumerate(sorted_tracks)])
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
446 def check_order(track1, track2):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
447 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
448
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
449 check_order("base", "library")
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
450 check_order("library", "program")
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
451 check_order("base", "program")
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
452
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
453 # 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
454 # where
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
455 self.failUnless("other" in track_indices)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
456
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
457 def test_track_order_cycle(self):
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
458 P = PackageTrackWithDependencies
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
459 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
460 P("cycle", True, "program", "cycle"),
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
461 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
462 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
463 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
464 ]
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
465 try:
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
466 group = PackagerGroup(tracks, 3600)
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
467 sorted_tracks = group.get_package_tracks()
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
468 except CyclicDependencyError, exc:
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
469 pass
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
470 else:
5155b4f9443d Add basic dependency handling to PackageTrack and PackagerGroup.
Bernhard Herzog <bh@intevation.de>
parents: 125
diff changeset
471 self.fail("PackagerGroup did not detect cyclic dependencies")
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)