mirror of https://github.com/aptly-dev/aptly
535 lines
20 KiB
Python
535 lines
20 KiB
Python
from pathlib import Path
|
|
import re
|
|
import os
|
|
|
|
from lib import BaseTest
|
|
|
|
|
|
class CreateMirror1Test(BaseTest):
|
|
"""
|
|
create mirror: all architectures + all components
|
|
"""
|
|
runCmd = "aptly mirror create --ignore-signatures mirror1 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror1", "mirror_show")
|
|
|
|
|
|
class CreateMirror2Test(BaseTest):
|
|
"""
|
|
create mirror: all architectures and 1 component
|
|
"""
|
|
runCmd = "aptly mirror create --ignore-signatures mirror2 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch main"
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror2", "mirror_show")
|
|
|
|
|
|
class CreateMirror3Test(BaseTest):
|
|
"""
|
|
create mirror: some architectures and 2 components
|
|
"""
|
|
runCmd = "aptly -architectures=i386,amd64 mirror create --ignore-signatures mirror3 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch main contrib"
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror3", "mirror_show")
|
|
|
|
|
|
class CreateMirror4Test(BaseTest):
|
|
"""
|
|
create mirror: missing component
|
|
"""
|
|
expectedCode = 1
|
|
|
|
runCmd = "aptly -architectures=i386,amd64 mirror create --ignore-signatures mirror4 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch life"
|
|
|
|
|
|
class CreateMirror5Test(BaseTest):
|
|
"""
|
|
create mirror: missing architecture
|
|
"""
|
|
expectedCode = 1
|
|
|
|
runCmd = "aptly -architectures=i386,nano68 mirror create --ignore-signatures mirror5 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
|
|
|
|
class CreateMirror6Test(BaseTest):
|
|
"""
|
|
create mirror: missing release
|
|
"""
|
|
expectedCode = 1
|
|
requiresGPG2 = True
|
|
|
|
configOverride = {"max-tries": 1}
|
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror6 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ suslik"
|
|
|
|
|
|
class CreateMirror7Test(BaseTest):
|
|
"""
|
|
create mirror: architectures fixed via config file
|
|
"""
|
|
runCmd = "aptly mirror create --ignore-signatures mirror7 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch main contrib"
|
|
configOverride = {"architectures": ["i386", "amd64"]}
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror7", "mirror_show")
|
|
|
|
|
|
class CreateMirror8Test(BaseTest):
|
|
"""
|
|
create mirror: already exists
|
|
"""
|
|
fixtureCmds = [
|
|
"aptly mirror create --ignore-signatures mirror8 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch main contrib"
|
|
]
|
|
runCmd = "aptly mirror create --ignore-signatures mirror8 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch main contrib"
|
|
expectedCode = 1
|
|
|
|
|
|
class CreateMirror9Test(BaseTest):
|
|
"""
|
|
create mirror: repo with InRelease verification
|
|
"""
|
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror9 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch-backports"
|
|
fixtureGpg = True
|
|
requiresGPG2 = True
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using|Warning: using insecure memory!\n', '', s)
|
|
|
|
def check(self):
|
|
def removeDates(s):
|
|
return re.sub(r"(Date|Valid-Until): [,0-9:+A-Za-z -]+\n", "", s)
|
|
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror9",
|
|
"mirror_show", match_prepare=removeDates)
|
|
|
|
|
|
class CreateMirror10Test(BaseTest):
|
|
"""
|
|
create mirror: repo with InRelease verification, failure
|
|
"""
|
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror10 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch-backports"
|
|
fixtureGpg = False
|
|
gold_processor = BaseTest.expand_environ
|
|
expectedCode = 1
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using|gpgv: keyblock resource .*$|gpgv: Can\'t check signature: .*$', '', s, flags=re.MULTILINE)
|
|
|
|
|
|
class CreateMirror11Test(BaseTest):
|
|
"""
|
|
create mirror: repo with Release + Release.gpg verification
|
|
"""
|
|
configOverride = {"max-tries": 1}
|
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror11 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
fixtureGpg = True
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror11", "mirror_show")
|
|
|
|
|
|
class CreateMirror12Test(BaseTest):
|
|
"""
|
|
create mirror: repo with Release+Release.gpg verification, failure
|
|
"""
|
|
configOverride = {"max-tries": 1}
|
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror12 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
fixtureGpg = False
|
|
gold_processor = BaseTest.expand_environ
|
|
expectedCode = 1
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using|gpgv: keyblock resource .*$|gpgv: Can\'t check signature: .*$', '', s, flags=re.MULTILINE)
|
|
|
|
|
|
class CreateMirror13Test(BaseTest):
|
|
"""
|
|
create mirror: skip verification using config file
|
|
"""
|
|
runCmd = "aptly mirror create mirror13 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
configOverride = {"gpgDisableVerify": True}
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror13", "mirror_show")
|
|
|
|
|
|
class CreateMirror14Test(BaseTest):
|
|
"""
|
|
create mirror: flat repository
|
|
"""
|
|
runCmd = "aptly mirror create -keyring=aptlytest.gpg mirror14 http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian bullseye-cran40/"
|
|
fixtureGpg = True
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
def check(self):
|
|
def removeDates(s):
|
|
return re.sub(r"(Date|Valid-Until): [,0-9:+A-Za-z -]+\n", "", s)
|
|
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror14",
|
|
"mirror_show", match_prepare=removeDates)
|
|
|
|
|
|
class CreateMirror15Test(BaseTest):
|
|
"""
|
|
create mirror: flat repository + components
|
|
"""
|
|
runCmd = "aptly mirror create -keyring=aptlytest.gpg mirror14 http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian bullseye-cran40/ main"
|
|
expectedCode = 1
|
|
|
|
|
|
class CreateMirror16Test(BaseTest):
|
|
"""
|
|
create mirror: there's no "source" architecture
|
|
"""
|
|
expectedCode = 1
|
|
|
|
runCmd = "aptly -architectures=source mirror create -ignore-signatures mirror16 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
|
|
|
|
class CreateMirror17Test(BaseTest):
|
|
"""
|
|
create mirror: mirror with sources enabled
|
|
"""
|
|
runCmd = "aptly -architectures=i386 mirror create -ignore-signatures -with-sources mirror17 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror17", "mirror_show")
|
|
|
|
|
|
class CreateMirror18Test(BaseTest):
|
|
"""
|
|
create mirror: mirror with ppa URL
|
|
"""
|
|
fixtureGpg = True
|
|
configOverride = {
|
|
"max-tries": 1,
|
|
"ppaDistributorID": "ubuntu",
|
|
"ppaCodename": "maverick",
|
|
}
|
|
|
|
fixtureCmds = [
|
|
"gpg --no-default-keyring --keyring=ppa.gpg --keyserver=hkp://keyserver.ubuntu.com:80 --recv-keys 5BFCD481D86D5824470E469F9000B1C3A01F726C 02219381E9161C78A46CB2BFA5279A973B1F56C0",
|
|
f"chmod 400 {os.path.join(os.environ['HOME'], '.gnupg/ppa.gpg')}"
|
|
]
|
|
runCmd = "aptly mirror create -keyring=ppa.gpg mirror18 ppa:gladky-anton/gnuplot"
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror18", "mirror_show")
|
|
|
|
|
|
class CreateMirror19Test(BaseTest):
|
|
"""
|
|
create mirror: mirror with / in distribution
|
|
"""
|
|
fixtureGpg = True
|
|
|
|
runCmd = "aptly -architectures='i386' mirror create -keyring=aptlytest.gpg -with-sources mirror19 http://repo.aptly.info/system-tests/archive.debian.org/debian-security/ stretch/updates main"
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
def check(self):
|
|
def removeDates(s):
|
|
return re.sub(r"(Date|Valid-Until): [,0-9:+A-Za-z -]+\n", "", s)
|
|
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror19",
|
|
"mirror_show", match_prepare=removeDates)
|
|
|
|
|
|
class CreateMirror20Test(BaseTest):
|
|
"""
|
|
create mirror: using failing HTTP_PROXY
|
|
"""
|
|
fixtureGpg = True
|
|
configOverride = {"max-tries": 1}
|
|
|
|
runCmd = "aptly -architectures='i386' mirror create -keyring=aptlytest.gpg -with-sources mirror20 http://repo.aptly.info/system-tests/archive.debian.org/debian-security/ stretch/updates main"
|
|
environmentOverride = {"HTTP_PROXY": "127.0.0.1:3137"}
|
|
expectedCode = 1
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return s.replace(
|
|
'getsockopt: ', ''
|
|
).replace(
|
|
'connect: ', ''
|
|
).replace(
|
|
'proxyconnect tcp', 'http: error connecting to proxy http://127.0.0.1:3137'
|
|
).replace(
|
|
'Get http://repo.aptly.info/system-tests/archive.debian.org/debian-security/dists/stretch/updates/Release:',
|
|
'Get "http://repo.aptly.info/system-tests/archive.debian.org/debian-security/dists/stretch/updates/Release":'
|
|
)
|
|
|
|
|
|
class CreateMirror21Test(BaseTest):
|
|
"""
|
|
create mirror: flat repository in subdir
|
|
"""
|
|
configOverride = {"max-tries": 1}
|
|
runCmd = "aptly mirror create -keyring=aptlytest.gpg mirror21 http://repo.aptly.info/system-tests/pkg.jenkins.io/debian-stable binary/"
|
|
fixtureGpg = True
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
def check(self):
|
|
def removeSHA512(s):
|
|
return re.sub(r"SHA512: .+\n", "", s)
|
|
|
|
def removeDates(s):
|
|
return re.sub(r"(Date|Valid-Until): [,0-9:+A-Za-z -]+\n", "", s)
|
|
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror21", "mirror_show",
|
|
match_prepare=lambda s: removeSHA512(removeDates(s)))
|
|
|
|
|
|
class CreateMirror22Test(BaseTest):
|
|
"""
|
|
create mirror: mirror with filter
|
|
"""
|
|
runCmd = "aptly mirror create -ignore-signatures -filter='nginx | Priority (required)' mirror22 http://repo.aptly.info/system-tests/archive.debian.org/debian-security/ stretch/updates main"
|
|
|
|
def check(self):
|
|
def removeDates(s):
|
|
return re.sub(r"(Date|Valid-Until): [,0-9:+A-Za-z -]+\n", "", s)
|
|
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror22",
|
|
"mirror_show", match_prepare=removeDates)
|
|
|
|
|
|
class CreateMirror23Test(BaseTest):
|
|
"""
|
|
create mirror: mirror with wrong filter
|
|
"""
|
|
runCmd = "aptly mirror create -ignore-signatures -filter='nginx | ' mirror23 http://repo.aptly.info/system-tests/archive.debian.org/debian-security/ stretch/updates main"
|
|
expectedCode = 1
|
|
|
|
|
|
class CreateMirror24Test(BaseTest):
|
|
"""
|
|
create mirror: disable config value with option
|
|
"""
|
|
runCmd = "aptly mirror create -ignore-signatures=false -keyring=aptlytest.gpg mirror24 http://repo.aptly.info/system-tests/archive.debian.org/debian-security/ stretch/updates main"
|
|
fixtureGpg = True
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
configOverride = {
|
|
"gpgDisableVerify": True
|
|
}
|
|
|
|
|
|
class CreateMirror25Test(BaseTest):
|
|
"""
|
|
create mirror: mirror with udebs enabled
|
|
"""
|
|
runCmd = "aptly -architectures=i386 mirror create -ignore-signatures -with-udebs mirror25 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror25", "mirror_show")
|
|
|
|
|
|
class CreateMirror26Test(BaseTest):
|
|
"""
|
|
create mirror: flat mirror with udebs
|
|
"""
|
|
runCmd = "aptly mirror create -keyring=aptlytest.gpg -with-udebs mirror26 http://repo.aptly.info/system-tests/pkg.jenkins.io/debian-stable binary/"
|
|
fixtureGpg = True
|
|
expectedCode = 1
|
|
|
|
|
|
class CreateMirror27Test(BaseTest):
|
|
"""
|
|
create mirror: component with slashes, no stripping
|
|
"""
|
|
runCmd = "aptly mirror create --ignore-signatures mirror27 http://repo.aptly.info/system-tests/mirror.chpc.utah.edu/pub/linux.dell.com/repo/community/ubuntu wheezy openmanage/740"
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return self.strip_retry_lines(s)
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror27", "mirror_show")
|
|
|
|
|
|
class CreateMirror29Test(BaseTest):
|
|
"""
|
|
create mirror: repo with InRelease verification (internal GPG implementation)
|
|
"""
|
|
fixtureCmds = ["gpg --no-default-keyring --keyring aptlytest.gpg --export-options export-minimal --export -o " + os.path.join(
|
|
os.environ["HOME"], ".gnupg/aptlytest-gpg1.gpg")]
|
|
runCmd = "aptly mirror create --keyring=aptlytest-gpg1.gpg mirror9 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch-backports"
|
|
configOverride = {"gpgProvider": "internal"}
|
|
fixtureGpg = True
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
def teardown(self):
|
|
self.run_cmd(["rm", "-f", os.path.join(os.environ["HOME"], ".gnupg/aptlytest-gpg1.gpg")])
|
|
|
|
|
|
class CreateMirror30Test(BaseTest):
|
|
"""
|
|
create mirror: repo with InRelease verification, failure (internal GPG implementation)
|
|
"""
|
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror10 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
configOverride = {"gpgProvider": "internal", "max-tries": 1}
|
|
gold_processor = BaseTest.expand_environ
|
|
fixtureGpg = False
|
|
expectedCode = 1
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
|
|
class CreateMirror31Test(BaseTest):
|
|
"""
|
|
create mirror: repo with Release + Release.gpg verification (internal GPG implementation)
|
|
"""
|
|
fixtureCmds = ["gpg --no-default-keyring --keyring aptlytest.gpg --export-options export-minimal --export -o " + os.path.join(
|
|
os.environ["HOME"], ".gnupg/aptlytest-gpg1.gpg")]
|
|
runCmd = "aptly mirror create --keyring=aptlytest-gpg1.gpg mirror11 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
configOverride = {"gpgProvider": "internal", "max-tries": 1}
|
|
fixtureGpg = True
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return re.sub(r'Signature made .* using', '', s)
|
|
|
|
def teardown(self):
|
|
self.run_cmd(["rm", "-f", os.path.join(os.environ["HOME"], ".gnupg/aptlytest-gpg1.gpg")])
|
|
|
|
|
|
class CreateMirror32Test(BaseTest):
|
|
"""
|
|
create mirror: repo with Release + Release.gpg verification (gpg2)
|
|
"""
|
|
configOverride = {"max-tries": 1}
|
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror32 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/ stretch"
|
|
fixtureGpg = True
|
|
requiresGPG2 = True
|
|
|
|
def outputMatchPrepare(self, s):
|
|
return \
|
|
re.sub(r'([A-F0-9]{8})[A-F0-9]{8}', r'\1',
|
|
re.sub(r'^gpgv: (Signature made .+|.+using RSA key.+)\n', '', s, flags=re.MULTILINE))
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror32", "mirror_show")
|
|
|
|
|
|
class CreateMirror33Test(BaseTest):
|
|
"""
|
|
create mirror: repo with only InRelease file but no verification
|
|
"""
|
|
configOverride = {"max-tries": 1}
|
|
runCmd = "aptly mirror create -ignore-signatures mirror33 http://repo.aptly.info/system-tests/nvidia.github.io/libnvidia-container/stable/ubuntu16.04/amd64 ./"
|
|
fixtureGpg = False
|
|
requiresGPG2 = False
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror33", "mirror_show")
|
|
|
|
|
|
class CreateMirror34Test(BaseTest):
|
|
"""
|
|
create mirror error: flat repo with filter but no architectures in InRelease file
|
|
"""
|
|
configOverride = {"max-tries": 1}
|
|
runCmd = "aptly mirror create -ignore-signatures -filter \"cuda-12-6 (= 12.6.2-1)\" -filter-with-deps mirror34 http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ ./"
|
|
|
|
|
|
class CreateMirror35Test(BaseTest):
|
|
"""
|
|
create mirror: flat repo with filter but no architectures in InRelease file
|
|
"""
|
|
configOverride = {"max-tries": 1}
|
|
fixtureCmds = [
|
|
"aptly mirror create -architectures amd64 -ignore-signatures -filter \"cuda-12-6 (= 12.6.2-1)\" -filter-with-deps mirror35 "
|
|
"http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ ./",
|
|
]
|
|
runCmd = "aptly mirror update -ignore-signatures mirror35"
|
|
|
|
# the downloading of the actual packages will return 404 since they don't exist. ignore the errors, the test verifies proper count of filtered packages
|
|
|
|
def outputMatchPrepare(self, s):
|
|
s = re.sub(r'Downloading: .*\n', '', s, flags=re.MULTILINE)
|
|
s = re.sub(r'Download Error: .*\n', '', s, flags=re.MULTILINE)
|
|
s = re.sub(r'Retrying .*\n', '', s, flags=re.MULTILINE)
|
|
s = re.sub(r'Error \(retrying\): .*\n', '', s, flags=re.MULTILINE)
|
|
s = re.sub(r'HTTP code 404 while fetching .*\n', '', s, flags=re.MULTILINE)
|
|
s = re.sub(r'ERROR: unable to update: .*\n', '', s, flags=re.MULTILINE)
|
|
return s
|
|
|
|
def check(self):
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror35", "mirror_show")
|
|
|
|
|
|
class CreateMirror36Test(BaseTest):
|
|
"""
|
|
create mirror: mirror with filter read from file
|
|
"""
|
|
filterFilePath = os.path.join(os.environ["HOME"], ".aptly-filter.tmp")
|
|
fixtureCmds = [f"bash -c \"echo -n 'nginx | Priority (required)' > {filterFilePath}\""]
|
|
runCmd = f"aptly mirror create -ignore-signatures -filter='@{filterFilePath}' mirror36 http://repo.aptly.info/system-tests/archive.debian.org/debian-security/ stretch/updates main"
|
|
|
|
def check(self):
|
|
def removeDates(s):
|
|
return re.sub(r"(Date|Valid-Until): [,0-9:+A-Za-z -]+\n", "", s)
|
|
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror36",
|
|
"mirror_show", match_prepare=removeDates)
|
|
|
|
|
|
class CreateMirror37Test(BaseTest):
|
|
"""
|
|
create mirror: mirror with filter read from stdin
|
|
"""
|
|
aptly_testing_bin = Path(__file__).parent.parent.parent / "aptly.test"
|
|
# Hack: Normally the test system detects if runCmd is an aptly command and then
|
|
# substitutes the aptly_testing_bin path and deletes the last three lines of output.
|
|
# However, I need to run it in bash to control stdin, so I have to do it manually.
|
|
runCmd = [
|
|
"bash",
|
|
"-c",
|
|
f"echo -n 'nginx | Priority (required)' | {aptly_testing_bin} mirror create " +
|
|
"-ignore-signatures -filter='@-' mirror37 http://repo.aptly.info/system-tests/archive.debian.org/debian-security/ stretch/updates main " +
|
|
"| grep -vE '^(EXIT|PASS|coverage:)'"
|
|
]
|
|
|
|
def check(self):
|
|
def removeDates(s):
|
|
return re.sub(r"(Date|Valid-Until): [,0-9:+A-Za-z -]+\n", "", s)
|
|
|
|
self.check_output()
|
|
self.check_cmd_output("aptly mirror show mirror37",
|
|
"mirror_show", match_prepare=removeDates)
|