mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-02 04:50:49 +00:00
26098f6c8d
Use CDN-backed Debian mirror to make tests run faster hopefully for everyone. Redirects might be important to know what exactly is going on when items are being downloaded.
425 lines
14 KiB
Python
425 lines
14 KiB
Python
import string
|
|
import re
|
|
import os
|
|
import shutil
|
|
import inspect
|
|
from lib import BaseTest
|
|
|
|
|
|
def filterOutSignature(_, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
|
|
def filterOutRedirects(_, s):
|
|
return re.sub(r'Following redirect to .+?\n', '', s)
|
|
|
|
|
|
class UpdateMirror1Test(BaseTest):
|
|
"""
|
|
update mirrors: regular update
|
|
"""
|
|
longTest = False
|
|
fixtureCmds = [
|
|
"aptly -architectures=i386,amd64 mirror create --ignore-signatures varnish https://packagecloud.io/varnishcache/varnish30/debian/ wheezy main",
|
|
]
|
|
runCmd = "aptly mirror update --ignore-signatures varnish"
|
|
outputMatchPrepare = filterOutRedirects
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror2Test(BaseTest):
|
|
"""
|
|
update mirrors: no such repo
|
|
"""
|
|
runCmd = "aptly mirror update mirror-xyz"
|
|
expectedCode = 1
|
|
|
|
|
|
class UpdateMirror3Test(BaseTest):
|
|
"""
|
|
update mirrors: wrong checksum in release file
|
|
"""
|
|
fixtureCmds = [
|
|
"aptly mirror create --ignore-signatures failure ${url} hardy main",
|
|
]
|
|
fixtureWebServer = "test_release"
|
|
runCmd = "aptly mirror update --ignore-signatures failure"
|
|
expectedCode = 1
|
|
|
|
def gold_processor(self, gold):
|
|
return string.Template(gold).substitute({'url': self.webServerUrl})
|
|
|
|
|
|
class UpdateMirror4Test(BaseTest):
|
|
"""
|
|
update mirrors: wrong checksum in release file, but ignore
|
|
"""
|
|
fixtureCmds = [
|
|
"aptly mirror create --ignore-signatures failure ${url} hardy main",
|
|
]
|
|
fixtureWebServer = "test_release"
|
|
runCmd = "aptly mirror update -ignore-checksums --ignore-signatures failure"
|
|
expectedCode = 1
|
|
|
|
def gold_processor(self, gold):
|
|
return string.Template(gold).substitute({'url': self.webServerUrl})
|
|
|
|
|
|
class UpdateMirror5Test(BaseTest):
|
|
"""
|
|
update mirrors: wrong checksum in package
|
|
"""
|
|
fixtureCmds = [
|
|
"aptly mirror create --ignore-signatures failure ${url} hardy main",
|
|
]
|
|
fixtureWebServer = "test_release2"
|
|
runCmd = "aptly mirror update --ignore-signatures failure"
|
|
expectedCode = 1
|
|
|
|
def gold_processor(self, gold):
|
|
return string.Template(gold).substitute({'url': self.webServerUrl})
|
|
|
|
|
|
class UpdateMirror6Test(BaseTest):
|
|
"""
|
|
update mirrors: wrong checksum in package, but ignore
|
|
"""
|
|
fixtureCmds = [
|
|
"aptly mirror create --ignore-signatures failure ${url} hardy main",
|
|
]
|
|
fixtureWebServer = "test_release2"
|
|
runCmd = "aptly mirror update -ignore-checksums --ignore-signatures failure"
|
|
|
|
def gold_processor(self, gold):
|
|
return string.Template(gold).substitute({'url': self.webServerUrl})
|
|
|
|
|
|
class UpdateMirror7Test(BaseTest):
|
|
"""
|
|
update mirrors: flat repository
|
|
"""
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly mirror create --keyring=aptlytest.gpg -architectures=amd64 flat https://cloud.r-project.org/bin/linux/debian jessie-cran35/",
|
|
]
|
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg flat"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror8Test(BaseTest):
|
|
"""
|
|
update mirrors: with sources (already in pool)
|
|
"""
|
|
fixtureGpg = True
|
|
fixturePool = True
|
|
fixtureCmds = [
|
|
"aptly mirror create --keyring=aptlytest.gpg gnuplot-maverick-src http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick",
|
|
]
|
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg gnuplot-maverick-src"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
|
|
class UpdateMirror9Test(BaseTest):
|
|
"""
|
|
update mirrors: flat repository + sources
|
|
"""
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly mirror create --keyring=aptlytest.gpg -with-sources flat-src https://cloud.r-project.org/bin/linux/debian jessie-cran35/",
|
|
]
|
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg flat-src"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror10Test(BaseTest):
|
|
"""
|
|
update mirrors: filtered
|
|
"""
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly mirror create -keyring=aptlytest.gpg -with-sources -filter='!(Name (% r-*)), !($$PackageType (source))' flat-src https://cloud.r-project.org/bin/linux/debian jessie-cran35/",
|
|
]
|
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg flat-src"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror11Test(BaseTest):
|
|
"""
|
|
update mirrors: update over FTP
|
|
"""
|
|
longTest = False
|
|
fixtureGpg = True
|
|
requiresFTP = True
|
|
fixtureCmds = [
|
|
"aptly mirror create -keyring=aptlytest.gpg -filter='Priority (required), Name (% s*)' -architectures=i386 stretch-main ftp://ftp.ru.debian.org/debian/ stretch main",
|
|
]
|
|
outputMatchPrepare = filterOutSignature
|
|
runCmd = "aptly mirror update -keyring=aptlytest.gpg stretch-main"
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror12Test(BaseTest):
|
|
"""
|
|
update mirrors: update with udebs
|
|
"""
|
|
longTest = False
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly -architectures=i386,amd64 mirror create -keyring=aptlytest.gpg -filter='$$Source (gnupg2)' -with-udebs stretch http://cdn-fastly.deb.debian.org/debian/ stretch main non-free",
|
|
]
|
|
runCmd = "aptly mirror update -keyring=aptlytest.gpg stretch"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror13Test(BaseTest):
|
|
"""
|
|
update mirrors: regular update with --skip-existing-packages option
|
|
"""
|
|
longTest = False
|
|
fixtureCmds = [
|
|
"aptly -architectures=i386,amd64 mirror create --ignore-signatures varnish https://packagecloud.io/varnishcache/varnish30/debian/ wheezy main",
|
|
]
|
|
runCmd = "aptly mirror update --ignore-signatures --skip-existing-packages varnish"
|
|
outputMatchPrepare = filterOutRedirects
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror14Test(BaseTest):
|
|
"""
|
|
update mirrors: regular update with --skip-existing-packages option
|
|
"""
|
|
longTest = False
|
|
fixtureCmds = [
|
|
"aptly -architectures=i386,amd64 mirror create --ignore-signatures varnish https://packagecloud.io/varnishcache/varnish30/debian/ wheezy main",
|
|
"aptly mirror update --ignore-signatures --skip-existing-packages varnish"
|
|
]
|
|
runCmd = "aptly mirror update --ignore-signatures --skip-existing-packages varnish"
|
|
outputMatchPrepare = filterOutRedirects
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror15Test(BaseTest):
|
|
"""
|
|
update mirrors: update for mirror without MD5 checksums
|
|
"""
|
|
longTest = False
|
|
fixtureCmds = [
|
|
"aptly mirror create --ignore-signatures bintray https://dl.bintray.com/smira/deb/ ./",
|
|
]
|
|
runCmd = "aptly mirror update --ignore-signatures bintray"
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
def check(self):
|
|
super(UpdateMirror15Test, self).check()
|
|
# check pool
|
|
self.check_exists(
|
|
'pool/c7/6b/4bd12fd92e4dfe1b55b18a67a669_libboost-program-options-dev_1.49.0.1_i386.deb')
|
|
|
|
|
|
class UpdateMirror16Test(BaseTest):
|
|
"""
|
|
update mirrors: update for mirror without MD5 checksums but with file in pool on legacy MD5 location
|
|
|
|
as mirror lacks MD5 checksum, file would be downloaded but not re-imported
|
|
"""
|
|
longTest = False
|
|
fixtureCmds = [
|
|
"aptly mirror create --ignore-signatures bintray https://dl.bintray.com/smira/deb/ ./",
|
|
]
|
|
runCmd = "aptly mirror update --ignore-signatures bintray"
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
def prepare(self):
|
|
super(UpdateMirror16Test, self).prepare()
|
|
|
|
os.makedirs(os.path.join(
|
|
os.environ["HOME"], ".aptly", "pool", "00", "35"))
|
|
|
|
shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "libboost-program-options-dev_1.49.0.1_i386.deb"),
|
|
os.path.join(os.environ["HOME"], ".aptly", "pool", "00", "35"))
|
|
|
|
def check(self):
|
|
super(UpdateMirror16Test, self).check()
|
|
# check pool
|
|
self.check_not_exists(
|
|
'pool/c7/6b/4bd12fd92e4dfe1b55b18a67a669_libboost-program-options-dev_1.49.0.1_i386.deb')
|
|
|
|
|
|
class UpdateMirror17Test(BaseTest):
|
|
"""
|
|
update mirrors: update for mirror but with file in pool on legacy MD5 location
|
|
"""
|
|
longTest = False
|
|
fixtureCmds = [
|
|
"aptly mirror create -ignore-signatures -architectures=i386 -filter=libboost-program-options-dev stretch http://cdn-fastly.deb.debian.org/debian stretch main",
|
|
]
|
|
runCmd = "aptly mirror update -ignore-signatures stretch"
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
def prepare(self):
|
|
super(UpdateMirror17Test, self).prepare()
|
|
|
|
os.makedirs(os.path.join(
|
|
os.environ["HOME"], ".aptly", "pool", "e0", "bb"))
|
|
|
|
shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "libboost-program-options-dev_1.62.0.1_i386.deb"),
|
|
os.path.join(os.environ["HOME"], ".aptly", "pool", "e0", "bb"))
|
|
|
|
def check(self):
|
|
super(UpdateMirror17Test, self).check()
|
|
# check pool
|
|
self.check_not_exists(
|
|
'pool/db/a2/f225645a2a8bd8378e2f64bd1faa_libboost-program-options-dev_1.62.0.1_i386.deb')
|
|
|
|
|
|
class UpdateMirror18Test(BaseTest):
|
|
"""
|
|
update mirrors: update for mirror but with file in pool on legacy MD5 location and disabled legacy path support
|
|
"""
|
|
longTest = False
|
|
fixtureCmds = [
|
|
"aptly mirror create -ignore-signatures -architectures=i386 -filter=libboost-program-options-dev stretch http://cdn-fastly.deb.debian.org/debian stretch main",
|
|
]
|
|
runCmd = "aptly mirror update -ignore-signatures stretch"
|
|
configOverride = {'skipLegacyPool': True}
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
def prepare(self):
|
|
super(UpdateMirror18Test, self).prepare()
|
|
|
|
os.makedirs(os.path.join(
|
|
os.environ["HOME"], ".aptly", "pool", "e0", "bb"))
|
|
|
|
shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "libboost-program-options-dev_1.62.0.1_i386.deb"),
|
|
os.path.join(os.environ["HOME"], ".aptly", "pool", "e0", "bb"))
|
|
|
|
def check(self):
|
|
super(UpdateMirror18Test, self).check()
|
|
# check pool
|
|
self.check_exists(
|
|
'pool/db/a2/f225645a2a8bd8378e2f64bd1faa_libboost-program-options-dev_1.62.0.1_i386.deb')
|
|
|
|
|
|
class UpdateMirror19Test(BaseTest):
|
|
"""
|
|
update mirrors: correct matching of Release checksums
|
|
"""
|
|
longTest = False
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly mirror create --keyring=aptlytest.gpg pagerduty http://packages.pagerduty.com/pdagent deb/"
|
|
]
|
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg pagerduty"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(line for line in output.split("\n") if ".deb" not in line)
|
|
|
|
|
|
class UpdateMirror20Test(BaseTest):
|
|
"""
|
|
update mirrors: flat repository (internal GPG implementation)
|
|
"""
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly mirror create --keyring=aptlytest.gpg -architectures=amd64 --filter='r-cran-class' flat https://cloud.r-project.org/bin/linux/debian jessie-cran35/",
|
|
]
|
|
configOverride = {"gpgProvider": "internal"}
|
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg flat"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror21Test(BaseTest):
|
|
"""
|
|
update mirrors: correct matching of Release checksums (internal pgp implementation)
|
|
"""
|
|
longTest = False
|
|
configOverride = {"gpgProvider": "internal"}
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly mirror create --keyring=aptlytest.gpg pagerduty http://packages.pagerduty.com/pdagent deb/"
|
|
]
|
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg pagerduty"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(line for line in output.split("\n") if ".deb" not in line)
|
|
|
|
|
|
class UpdateMirror22Test(BaseTest):
|
|
"""
|
|
update mirrors: SHA512 checksums only
|
|
"""
|
|
configOverride = {"gpgProvider": "internal"}
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly mirror create --keyring=aptlytest.gpg --filter=nomatch libnvidia-container https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64 ./"
|
|
]
|
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg libnvidia-container"
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using|Packages filtered: .* -> 0.', '', s)
|
|
|
|
|
|
class UpdateMirror23Test(BaseTest):
|
|
"""
|
|
update mirrors: update with installer
|
|
"""
|
|
longTest = False
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly -architectures=s390x mirror create -keyring=aptlytest.gpg -filter='installer' -with-installer stretch http://cdn-fastly.deb.debian.org/debian/ stretch main non-free",
|
|
]
|
|
runCmd = "aptly mirror update -keyring=aptlytest.gpg stretch"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|
|
|
|
|
|
class UpdateMirror24Test(BaseTest):
|
|
"""
|
|
update mirrors: update with installer with separate gpg file
|
|
"""
|
|
longTest = False
|
|
fixtureGpg = True
|
|
fixtureCmds = [
|
|
"aptly -architectures=amd64 mirror create -keyring=aptlytest.gpg -filter='installer' -with-installer trusty http://mirror.enzu.com/ubuntu/ trusty main restricted",
|
|
]
|
|
runCmd = "aptly mirror update -keyring=aptlytest.gpg trusty"
|
|
outputMatchPrepare = filterOutSignature
|
|
|
|
def output_processor(self, output):
|
|
return "\n".join(sorted(output.split("\n")))
|