]>
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 testInstallFromLocalRepo(self
):
124 apt
= [self
.apt
,"-o", "Dir::Etc::sourcelist=%s"% self
.sources
]+apt_args
126 res
= call(cmd
, stdout
=stdout
, stderr
=stderr
)
127 self
.assertEqual(res
, 0)
128 res
= call(apt
+["-y","install","--reinstall",self
.pkg
],
129 stdout
=stdout
, stderr
=stderr
)
130 self
.assert_(res
== 0,
131 "installing %s failed (got %s)" % (self
.pkg
, res
))
132 res
= call(apt
+["-y","remove",self
.pkg
],
133 stdout
=stdout
, stderr
=stderr
)
134 self
.assert_(res
== 0,
135 "removing %s failed (got %s)" % (self
.pkg
, res
))
137 def testPythonAptInLocalRepo(self
):
139 apt_pkg
.Config
.Set("Dir::Etc::sourcelist",self
.sources
)
143 self
.assert_(pkg
.name
== 'apt')
147 if __name__
== "__main__":
148 print "Runing simple testsuit on current apt-get and libapt"
149 if len(sys
.argv
) > 1 and sys
.argv
[1] == "-v":