diff options
Diffstat (limited to 'python/mozrelease/test/test_update_verify.py')
-rw-r--r-- | python/mozrelease/test/test_update_verify.py | 425 |
1 files changed, 425 insertions, 0 deletions
diff --git a/python/mozrelease/test/test_update_verify.py b/python/mozrelease/test/test_update_verify.py new file mode 100644 index 0000000000..6f1cb197f7 --- /dev/null +++ b/python/mozrelease/test/test_update_verify.py @@ -0,0 +1,425 @@ +# -*- 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() |