# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import unittest
from pathlib
import Path
from tempfile
import mkstemp
import mozunit
from mozrelease.update_verify
import UpdateVerifyConfig, UpdateVerifyError
DATA_PATH = Path(__file__).with_name(
"data" )
class TestUpdateVerifyConfig(unittest.TestCase):
config = str(DATA_PATH.joinpath(
"sample-update-verify.cfg" ))
def setUp(self):
self.uvc = UpdateVerifyConfig()
fd, self.tmpfilename = mkstemp()
self.tmpfile = os.fdopen(fd,
"wb" )
def tearDown(self):
self.tmpfile.close()
os.unlink(self.tmpfilename)
def testEq(self):
self.uvc.product =
"foo"
self.uvc.channel =
"betatest"
self.uvc.aus_server =
"aus"
self.uvc.ftp_server_from =
"ftp"
self.uvc.ftp_server_to =
"ftp"
self.uvc.to =
"/firefox/4.0rc2.tar.bz2"
self.uvc.mar_channel_IDs =
"baz"
self.uvc.to_build_id =
"999"
self.uvc.to_display_version =
"99.0 Zeta 9"
self.uvc.to_app_version =
"99.0"
uvc2 = UpdateVerifyConfig()
uvc2.product =
"foo"
uvc2.channel =
"betatest"
uvc2.aus_server =
"aus"
uvc2.ftp_server_form =
"ftp"
uvc2.ftp_server_to =
"ftp"
uvc2.to =
"/firefox/4.0rc2.tar.bz2"
uvc2.mar_channel_IDs =
"baz"
uvc2.to_build_id =
"999"
uvc2.to_display_version =
"99.0 Zeta 9"
uvc2.to_app_version =
"99.0"
self.assertEqual(self.uvc, uvc2)
def testNe(self):
self.uvc.product =
"foo"
uvc2 = UpdateVerifyConfig()
# assertNotEqual doesn't test the __ne__ function, so we do this
self.assertTrue(self.uvc != uvc2)
def testAddRelease(self):
releases = [
{
"release" :
"4.0" ,
"platform" :
"bar" ,
"build_id" :
555 ,
"locales" : [
"af" ,
"de" ],
"patch_types" : [
"partial" ,
"complete" ],
"from" :
"/pub/firefox/foo.bz2" ,
"ftp_server_from" :
"from" ,
"ftp_server_to" :
"to" ,
"mar_channel_IDs" :
"firefox-mozilla-booyah" ,
"updater_package" :
None ,
}
]
self.uvc.addRelease(
"4.0" ,
build_id=
555 ,
locales=[
"af" ,
"de" ],
patch_types=[
"partial" ,
"complete" ],
from_path=
"/pub/firefox/foo.bz2" ,
ftp_server_from=
"from" ,
ftp_server_to=
"to" ,
mar_channel_IDs=
"firefox-mozilla-booyah" ,
platform=
"bar" ,
)
self.assertEqual(self.uvc.releases, releases)
def testAddReleasesWithDifferentPlatforms(self):
releases = [
{
"release" :
"4.0" ,
"platform" :
"WINNT_x86-msvc" ,
"build_id" :
555 ,
"locales" : [
"af" ,
"de" ],
"patch_types" : [
"partial" ,
"complete" ],
"from" :
"/pub/firefox/foo.bz2" ,
"ftp_server_from" :
"from" ,
"ftp_server_to" :
"to" ,
"mar_channel_IDs" :
"firefox-mozilla-booyah" ,
"updater_package" :
None ,
},
{
"release" :
"5.0" ,
"platform" :
"WINNT_x86-msvc-x86" ,
"build_id" :
666 ,
"locales" : [
"af" ,
"de" ],
"patch_types" : [
"partial" ,
"complete" ],
"from" :
"/pub/firefox/foo2.bz2" ,
"ftp_server_from" :
"from" ,
"ftp_server_to" :
"to" ,
"mar_channel_IDs" :
"firefox-mozilla-booyah" ,
"updater_package" :
None ,
},
]
self.uvc.addRelease(
"4.0" ,
build_id=
555 ,
locales=[
"af" ,
"de" ],
patch_types=[
"partial" ,
"complete" ],
from_path=
"/pub/firefox/foo.bz2" ,
ftp_server_from=
"from" ,
ftp_server_to=
"to" ,
mar_channel_IDs=
"firefox-mozilla-booyah" ,
platform=
"WINNT_x86-msvc" ,
)
self.uvc.addRelease(
"5.0" ,
build_id=
666 ,
locales=[
"af" ,
"de" ],
patch_types=[
"partial" ,
"complete" ],
from_path=
"/pub/firefox/foo2.bz2" ,
ftp_server_from=
"from" ,
ftp_server_to=
"to" ,
mar_channel_IDs=
"firefox-mozilla-booyah" ,
platform=
"WINNT_x86-msvc-x86" ,
)
self.assertEqual(self.uvc.releases, releases)
def testRead(self):
ftp_server_from =
"stage.mozilla.org/firefox"
ftp_server_to =
"stage.mozilla.org/firefox"
uvc2 = UpdateVerifyConfig()
uvc2.product =
"Firefox"
uvc2.channel =
"betatest"
uvc2.aus_server =
"https://aus4.mozilla.org "
uvc2.to =
"/firefox/4.0rc2.tar.bz2"
uvc2.to_build_id =
"999"
uvc2.to_display_version =
"99.0 Zeta 9"
uvc2.to_app_version =
"99.0"
uvc2.addRelease(
"4.0" ,
build_id=
"888" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"af" ,
"de" ,
"en-US" ,
"ja" ,
"zh-TW" ],
patch_types=[
"partial" ,
"complete" ],
from_path=
"/firefox/4.0rc1.tar.bz2" ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
mar_channel_IDs=
"firefox-mozilla-beta" ,
)
uvc2.addRelease(
"4.0b12" ,
build_id=
"777" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"af" ,
"en-US" ],
from_path=
"/firefox/4.0b12.tar.bz2" ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
)
uvc2.addRelease(
"4.0b12" ,
build_id=
"777" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"de" ,
"ja" ,
"zh-TW" ],
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
)
uvc2.addRelease(
"3.7a1" ,
build_id=
"666" ,
locales=[
"en-US" ],
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
platform=
"Linux_x86-gcc3" ,
)
self.uvc.read(self.config)
self.assertEqual(self.uvc, uvc2)
def testWrite(self):
ftp_server_from =
"stage.mozilla.org/firefox"
ftp_server_to =
"stage.mozilla.org/firefox"
self.uvc.product =
"Firefox"
self.uvc.channel =
"betatest"
self.uvc.aus_server =
"https://aus4.mozilla.org "
self.uvc.to =
"/firefox/4.0rc2.tar.bz2"
self.uvc.to_build_id =
"999"
self.uvc.to_display_version =
"99.0 Zeta 9"
self.uvc.to_app_version =
"99.0"
self.uvc.addRelease(
"4.0" ,
build_id=
"888" ,
platform=
"Linux_x86-gcc3" ,
locales=(
"af" ,
"de" ,
"en-US" ,
"ja" ,
"zh-TW" ),
patch_types=(
"partial" ,
"complete" ),
from_path=
"/firefox/4.0rc1.tar.bz2" ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
mar_channel_IDs=
"firefox-mozilla-beta" ,
)
self.uvc.addRelease(
"4.0b12" ,
build_id=
"777" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"af" ,
"en-US" ],
from_path=
"/firefox/4.0b12.tar.bz2" ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
)
self.uvc.addRelease(
"4.0b12" ,
build_id=
"777" ,
platform=
"Linux_x86-gcc3" ,
locales=(
"de" ,
"ja" ,
"zh-TW" ),
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
)
self.uvc.addRelease(
"3.7a1" ,
build_id=
"666" ,
locales=(
"en-US" ,),
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
platform=
"Linux_x86-gcc3" ,
)
self.uvc.write(self.tmpfile)
self.tmpfile.close()
self.assertEqual(open(self.config).read(), open(self.tmpfilename).read())
def testReadInvalidKey(self):
invalidLine =
'foo="bar"'
self.assertRaises(UpdateVerifyError, self.uvc._parseLine, invalidLine)
def testReadDuplicateKey(self):
invalidLine =
'release="bar" release="blah"'
self.assertRaises(UpdateVerifyError, self.uvc._parseLine, invalidLine)
def testParseLineBad(self):
invalidLine =
"abh nthntuehonhuh nhhueont hntueoh nthouo"
self.assertRaises(UpdateVerifyError, self.uvc._parseLine, invalidLine)
def testGetChunk(self):
ftp_server_from =
"stage.mozilla.org/firefox"
ftp_server_to =
"stage.mozilla.org/firefox"
self.uvc.read(self.config)
uvc2 = UpdateVerifyConfig()
uvc2.product =
"Firefox"
uvc2.channel =
"betatest"
uvc2.aus_server =
"https://aus4.mozilla.org "
uvc2.to =
"/firefox/4.0rc2.tar.bz2"
uvc2.to_build_id =
"999"
uvc2.to_display_version =
"99.0 Zeta 9"
uvc2.to_app_version =
"99.0"
uvc2.addRelease(
"4.0" ,
build_id=
"888" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"af" ,
"de" ,
"en-US" ],
patch_types=[
"partial" ,
"complete" ],
from_path=
"/firefox/4.0rc1.tar.bz2" ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
mar_channel_IDs=
"firefox-mozilla-beta" ,
)
uvc2.addRelease(
"4.0b12" ,
build_id=
"777" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"de" ,
"ja" ],
patch_types=[
"complete" ],
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
from_path=
None ,
)
chunkedConfig = self.uvc.getChunk(chunks=
3 , thisChunk=
1 )
self.assertEqual(chunkedConfig, uvc2)
def testGetChunkWithPathWithSpaces(self):
self.uvc.product =
"Firefox"
self.uvc.channel =
"betatest"
self.uvc.aus_server =
"https://aus4.mozilla.org "
self.uvc.ftp_server_from =
"stage.mozilla.org/firefox"
self.uvc.ftp_server_to =
"stage.mozilla.org/firefox"
self.uvc.to =
"/firefox/Firefox 4.0 Beta 2.exe"
self.uvc.to_build_id =
"999"
self.uvc.to_display_version =
"99.0 Zeta 9"
self.uvc.to_app_version =
"99.0"
self.uvc.addRelease(
"4.0b1" ,
build_id=
"222" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"en-US" ,
"ja" ,
"zh-TW" ],
patch_types=[
"complete" ],
from_path=
"/firefox/Firefox 4.0 Beta 1.exe" ,
)
uvc2 = UpdateVerifyConfig()
uvc2.product =
"Firefox"
uvc2.channel =
"betatest"
uvc2.aus_server =
"https://aus4.mozilla.org "
uvc2.ftp_server_from =
"stage.mozilla.org/firefox"
uvc2.ftp_server_to =
"stage.mozilla.org/firefox"
uvc2.to =
"/firefox/Firefox 4.0 Beta 2.exe"
uvc2.to_build_id =
"999"
uvc2.to_display_version =
"99.0 Zeta 9"
uvc2.to_app_version =
"99.0"
uvc2.addRelease(
"4.0b1" ,
build_id=
"222" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"en-US" ,
"ja" ],
patch_types=[
"complete" ],
from_path=
"/firefox/Firefox 4.0 Beta 1.exe" ,
)
chunkedConfig = self.uvc.getChunk(chunks=
2 , thisChunk=
1 )
self.assertEqual(chunkedConfig, uvc2)
def testAddLocaleToRelease(self):
from_path =
"/firefox/4.0rc1.tar.bz2"
self.uvc.read(self.config)
self.uvc.addLocaleToRelease(
"888" ,
"he" , from_path)
self.assertEqual(
self.uvc.getRelease(
"888" , from_path)[
"locales" ],
[
"af" ,
"de" ,
"en-US" ,
"he" ,
"ja" ,
"zh-TW" ],
)
def testAddLocaleToReleaseMultipleBuildIDs(self):
from_path =
None
self.uvc.read(self.config)
self.uvc.addLocaleToRelease(
"777" ,
"he" , from_path)
self.assertEqual(
self.uvc.getRelease(
"777" , from_path)[
"locales" ],
[
"de" ,
"he" ,
"ja" ,
"zh-TW" ],
)
def testAddLocaleToNonexistentRelease(self):
self.uvc.read(self.config)
self.assertRaises(UpdateVerifyError, self.uvc.addLocaleToRelease,
"123" ,
"he" )
def testGetReleaseNonexistenceRelease(self):
self.uvc.read(self.config)
self.assertEqual(self.uvc.getRelease(
"123" ,
None ), {})
def testGetFullReleaseTests(self):
ftp_server_from =
"stage.mozilla.org/firefox"
ftp_server_to =
"stage.mozilla.org/firefox"
self.uvc.read(self.config)
uvc2 = UpdateVerifyConfig()
uvc2.product =
"Firefox"
uvc2.channel =
"betatest"
uvc2.aus_server =
"https://aus4.mozilla.org "
uvc2.to =
"/firefox/4.0rc2.tar.bz2"
uvc2.to_build_id =
"999"
uvc2.to_display_version =
"99.0 Zeta 9"
uvc2.to_app_version =
"99.0"
uvc2.addRelease(
"4.0" ,
build_id=
"888" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"af" ,
"de" ,
"en-US" ,
"ja" ,
"zh-TW" ],
patch_types=[
"partial" ,
"complete" ],
from_path=
"/firefox/4.0rc1.tar.bz2" ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
mar_channel_IDs=
"firefox-mozilla-beta" ,
)
uvc2.addRelease(
"4.0b12" ,
build_id=
"777" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"af" ,
"en-US" ],
patch_types=[
"complete" ],
from_path=
"/firefox/4.0b12.tar.bz2" ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
)
self.assertEqual(self.uvc.getFullReleaseTests(), uvc2.releases)
def testGetQuickReleaseTests(self):
ftp_server_from =
"stage.mozilla.org/firefox"
ftp_server_to =
"stage.mozilla.org/firefox"
self.uvc.read(self.config)
uvc2 = UpdateVerifyConfig()
uvc2.product =
"Firefox"
uvc2.channel =
"betatest"
uvc2.aus_server =
"https://aus4.mozilla.org "
uvc2.to =
"/firefox/4.0rc2.tar.bz2"
uvc2.to_build_id =
"999"
uvc2.to_display_version =
"99.0 Zeta 9"
uvc2.to_app_version =
"99.0"
uvc2.addRelease(
"4.0b12" ,
build_id=
"777" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"de" ,
"ja" ,
"zh-TW" ],
patch_types=[
"complete" ],
from_path=
None ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
)
uvc2.addRelease(
"3.7a1" ,
build_id=
"666" ,
platform=
"Linux_x86-gcc3" ,
locales=[
"en-US" ],
patch_types=[
"complete" ],
from_path=
None ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
)
self.assertEqual(self.uvc.getQuickReleaseTests(), uvc2.releases)
if __name__ ==
"__main__" :
mozunit.main()
Messung V0.5 in Prozent C=90 H=93 G=91
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-04)
¤
*© Formatika GbR, Deutschland