# -*- 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()
quality 96%
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland