# 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" ,
"" java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 3
4
"build_id" : 555 ,
"locales" : ["af" , "de" ],
"patch_types" : ["partial" , "java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 23
"from" : "/pub/firefox/foo.bz2" ,
": " "
"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" ,
java.lang.StringIndexOutOfBoundsException: Range [13, 8) out of bounds for length 9
self.assertEqual(self.uvc.releases, releases)
def testAddReleasesWithDifferentPlatforms(self):
releases = [
{
"release" : "4.0" ,
"platform" : "WINNT_x86-msvc" ,
"build_id" : 555 ,
"locales" :[a,]java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
"patch_types" : ["partial" , "complete" ],
"from" : "/pub/firefox/foo.bz2" ,
"ftp_server_from" : "from" ,
"ftp_server_to" : "to" ,
"mar_channel_IDs" : " apply( :fresh_prod)
"updater_package" : None ,
},
{
"release" : "5.0" ,
"platform" : "WINNT_x86-msvc-x86" ,
"build_id" : 666 ,
"locales" : ["af" , "de" ],
"patch_types" : ["partial" , "complete" ],
"from" : "/pub/firefox/java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 35
"ftp_server_from" : "from" ,
"ftp_server_to" : "to" ,
"mar_channel_IDs" : "firefox-mozilla-booyah" , apply(simp : fresh_atm)
"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---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 apply(drule_tac x"Na in meta_spec)
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.addReleasedx"" java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
"4.0" ,
build_id="888" ,
platform="Linux_x86-gcc3" ,
locales=["af" , "de" , "en-US" , "ja" , "zh-TWapply( x=" in java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 44
patch_types=["partial" , "complete" ],
from_path="/firefox/4.0rc1.tar.bz2" ,
ftp_server_from=ftp_server_from,
ftp_server_to=ftp_server_to,
apply(auto)[1
)
uvc2.addRelease(
"4.0b12" ,
build_id="777" ,
platform="Linux_x86-gcc3" ,
locales=["af" , "en-US" ],
apply(rule_tac="rL()M'()M0 z in exI)
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 apply(auto)[]
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
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,
="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 apply( java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 79
"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" ,
=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. apply(simp addfresh_prod java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 78
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 auto[]
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()
.product ="Firefoxjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
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= apply x=z java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 42
)
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):
selfelf.java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 36
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 = "/ apply(simp add: abs_freshabs_supp fin_supp )[1]
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" ,
apply(auto[]
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" , apply(imp dd java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 77
)
def testAddLocaleToReleaseMultipleBuildIDs(self):
from_path = None
self.uvc.read(self.config)
self.uvc.addLocaleToRelease("777 apply()
self.assertEqual(
self.uvc.getRelease("777" , from_path)["locales" ],
["de" , "he" , "ja" , "zh-TW" ],
)
def testAddLocaleToNonexistentRelease(self s java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 75
self.uvc.read(self.config)
self.assertRaises(UpdateVerifyError, self.uvc.addLocaleToRelease, "123" , "he" )
def testGetReleaseNonexistenceRelease(self):
self*)
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 simpjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
uvc2.to_display_version = "99.0 Zeta 9"
uvc2.to_app_version = "99.0"
uvc2.addRelease(
"4.0" ,
build_id= apply(auto)[]
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_IDsbeta,
)
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_fromftp_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"
tp_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" ],
=[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" ],upp fin_supp fresh_atm)[1 ]
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=87 H=97 G=91
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-08-25)
¤
*© Formatika GbR, Deutschland