]>
git.saurik.com Git - apt.git/blob - test/pre-upload-check.py
7 from subprocess
import call
, PIPE
11 stdout
= os
.open("/dev/null",0) #sys.stdout
12 stderr
= os
.open("/dev/null",0) # sys.stderr
14 apt_args
= [] # ["-o","Debug::pkgAcquire::Auth=true"]
17 class testAuthentication(unittest
.TestCase
):
19 test if the authentication is working, the repository
20 of the test-data can be found here:
21 bzr get http://people.ubuntu.com/~mvo/bzr/apt/apt-auth-test-suit/
24 # some class wide data
26 pkg
= "libglib2.0-data"
27 pkgver
= "2.13.6-1ubuntu1"
28 pkgpath
= "/var/cache/apt/archives/libglib2.0-data_2.13.6-1ubuntu1_all.deb"
31 for f
in glob
.glob("testkeys/*,key"):
32 call(["apt-key", "add", f
], stdout
=stdout
, stderr
=stderr
)
35 " make sure we get new lists and no i-m-s "
36 call(["rm","-f", "/var/lib/apt/lists/*"])
37 if os
.path
.exists(self
.pkgpath
):
38 os
.unlink(self
.pkgpath
)
40 def _expectedRes(self
, resultstr
):
43 elif resultstr
== 'broken':
47 def testPackages(self
):
48 for f
in glob
.glob("testsources.list/sources.list*package*"):
50 (prefix
, testtype
, result
) = f
.split("-")
51 expected_res
= self
._expectedRes
(result
)
53 call([self
.apt
,"update",
54 "-o","Dir::Etc::sourcelist=./%s" % f
]+apt_args
,
55 stdout
=stdout
, stderr
=stderr
)
57 cmd
= ["install", "-y", "-d", "--reinstall",
58 "%s=%s" % (self
.pkg
, self
.pkgver
),
59 "-o","Dir::state::Status=./fake-status"]
60 res
= call([self
.apt
, "-o","Dir::Etc::sourcelist=./%s" % f
]+cmd
+apt_args
,
61 stdout
=stdout
, stderr
=stderr
)
62 self
.assert_(res
== expected_res
,
63 "test '%s' failed (got %s expected %s" % (f
,res
,expected_res
))
67 for f
in glob
.glob("testsources.list/sources.list*gpg*"):
69 (prefix
, testtype
, result
) = f
.split("-")
70 expected_res
= self
._expectedRes
(result
)
72 call([self
.apt
,"update",
73 "-o","Dir::Etc::sourcelist=./%s" % f
]+apt_args
,
74 stdout
=stdout
, stderr
=stderr
)
75 cmd
= ["install", "-y", "-d", "--reinstall",
76 "%s=%s" % (self
.pkg
, self
.pkgver
),
77 "-o","Dir::state::Status=./fake-status"]
78 res
= call([self
.apt
, "-o","Dir::Etc::sourcelist=./%s" % f
]+
80 stdout
=stdout
, stderr
=stderr
)
81 self
.assert_(res
== expected_res
,
82 "test '%s' failed (got %s expected %s" % (f
,res
,expected_res
))
84 def testRelease(self
):
85 for f
in glob
.glob("testsources.list/sources.list*release*"):
87 (prefix
, testtype
, result
) = f
.split("-")
88 expected_res
= self
._expectedRes
(result
)
90 res
= call([self
.apt
,"-o","Dir::Etc::sourcelist=./%s" % f
]+cmd
+apt_args
,
91 stdout
=stdout
, stderr
=stderr
)
92 self
.assert_(res
== expected_res
,
93 "test '%s' failed (got %s expected %s" % (f
,res
,expected_res
))
95 self
.assert_(len(glob
.glob("/var/lib/apt/lists/partial/*")) == 0,
96 "partial/ dir has leftover files: %s" % glob
.glob("/var/lib/apt/lists/partial/*"))
99 class testLocalRepositories(unittest
.TestCase
):
100 " test local repository regressions "
102 repo_dir
= "local-repo"
107 self
.repo
= os
.path
.abspath(os
.path
.join(os
.getcwd(), self
.repo_dir
))
108 self
.sources
= os
.path
.join(self
.repo
, "sources.list")
109 s
= open(self
.sources
,"w")
110 s
.write("deb file://%s/ /\n" % self
.repo
)
113 def testLocalRepoAuth(self
):
114 # two times to get at least one i-m-s hit
116 self
.assert_(os
.path
.exists(self
.sources
))
117 cmd
= [self
.apt
,"update","-o", "Dir::Etc::sourcelist=%s" % self
.sources
]+apt_args
118 res
= call(cmd
, stdout
=stdout
, stderr
=stderr
)
119 self
.assertEqual(res
, 0, "local repo test failed")
120 self
.assert_(os
.path
.exists(os
.path
.join(self
.repo
,"Packages.gz")),
121 "Packages.gz vanished from local repo")
123 def testLocalRepo2(self
):
124 repo
= os
.path
.abspath(os
.path
.join(os
.getcwd(), self
.repo_dir
+"2"))
125 sources
= os
.path
.join(self
.repo
, "sources.list")
126 s
= open(sources
,"w")
127 s
.write("deb file://%s/ /\n" % repo
)
130 # two times to get at least one i-m-s hit
132 self
.assert_(os
.path
.exists(sources
))
133 cmd
= [self
.apt
,"update","-o", "Dir::Etc::sourcelist=%s" % sources
]+apt_args
134 res
= call(cmd
, stdout
=stdout
, stderr
=stderr
)
135 self
.assertEqual(res
, 0, "local repo2 test failed")
136 self
.assert_(os
.path
.exists(os
.path
.join(repo
,"Packages.gz")),
137 "Packages.gz vanished from local repo")
139 def testInstallFromLocalRepo(self
):
140 apt
= [self
.apt
,"-o", "Dir::Etc::sourcelist=%s"% self
.sources
]+apt_args
142 res
= call(cmd
, stdout
=stdout
, stderr
=stderr
)
143 self
.assertEqual(res
, 0)
144 res
= call(apt
+["-y","install","--reinstall",self
.pkg
],
145 stdout
=stdout
, stderr
=stderr
)
146 self
.assert_(res
== 0,
147 "installing %s failed (got %s)" % (self
.pkg
, res
))
148 res
= call(apt
+["-y","remove",self
.pkg
],
149 stdout
=stdout
, stderr
=stderr
)
150 self
.assert_(res
== 0,
151 "removing %s failed (got %s)" % (self
.pkg
, res
))
153 def testPythonAptInLocalRepo(self
):
155 apt_pkg
.Config
.Set("Dir::Etc::sourcelist",self
.sources
)
159 self
.assert_(pkg
.name
== 'apt')
163 if __name__
== "__main__":
164 print "Runing simple testsuit on current apt-get and libapt"
165 if len(sys
.argv
) > 1 and sys
.argv
[1] == "-v":