164 lines
6.7 KiB
Python
164 lines
6.7 KiB
Python
#!/usr/bin/env python
|
|
|
|
# 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 mozinfo
|
|
import mozinstall
|
|
import mozfile
|
|
import os
|
|
import tempfile
|
|
import unittest
|
|
|
|
# Store file location at load time
|
|
here = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
class TestMozInstall(unittest.TestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
""" Setting up stub installers """
|
|
cls.dmg = os.path.join(here, 'Installer-Stubs', 'firefox.dmg')
|
|
# XXX: We have removed firefox.exe since it is not valid for mozinstall 1.12 and higher
|
|
# Bug 1157352 - We should grab a firefox.exe from the build process or download it
|
|
cls.exe = os.path.join(here, 'Installer-Stubs', 'firefox.exe')
|
|
cls.zipfile = os.path.join(here, 'Installer-Stubs', 'firefox.zip')
|
|
cls.bz2 = os.path.join(here, 'Installer-Stubs', 'firefox.tar.bz2')
|
|
|
|
def setUp(self):
|
|
self.tempdir = tempfile.mkdtemp()
|
|
|
|
def tearDown(self):
|
|
mozfile.rmtree(self.tempdir)
|
|
|
|
@unittest.skipIf(mozinfo.isWin, "Bug 1157352 - We need a new firefox.exe for mozinstall 1.12 and higher.")
|
|
def test_get_binary(self):
|
|
""" Test mozinstall's get_binary method """
|
|
|
|
if mozinfo.isLinux:
|
|
installdir = mozinstall.install(self.bz2, self.tempdir)
|
|
binary = os.path.join(installdir, 'firefox')
|
|
self.assertEqual(binary, mozinstall.get_binary(installdir, 'firefox'))
|
|
|
|
elif mozinfo.isWin:
|
|
installdir_exe = mozinstall.install(self.exe,
|
|
os.path.join(self.tempdir, 'exe'))
|
|
binary_exe = os.path.join(installdir_exe, 'core', 'firefox.exe')
|
|
self.assertEqual(binary_exe, mozinstall.get_binary(installdir_exe,
|
|
'firefox'))
|
|
|
|
installdir_zip = mozinstall.install(self.zipfile,
|
|
os.path.join(self.tempdir, 'zip'))
|
|
binary_zip = os.path.join(installdir_zip, 'firefox.exe')
|
|
self.assertEqual(binary_zip, mozinstall.get_binary(installdir_zip,
|
|
'firefox'))
|
|
|
|
elif mozinfo.isMac:
|
|
installdir = mozinstall.install(self.dmg, self.tempdir)
|
|
binary = os.path.join(installdir, 'Contents', 'MacOS', 'firefox')
|
|
self.assertEqual(binary, mozinstall.get_binary(installdir, 'firefox'))
|
|
|
|
def test_get_binary_error(self):
|
|
""" Test an InvalidBinary error is raised """
|
|
|
|
tempdir_empty = tempfile.mkdtemp()
|
|
self.assertRaises(mozinstall.InvalidBinary, mozinstall.get_binary,
|
|
tempdir_empty, 'firefox')
|
|
mozfile.rmtree(tempdir_empty)
|
|
|
|
@unittest.skipIf(mozinfo.isWin, "Bug 1157352 - We need a new firefox.exe for mozinstall 1.12 and higher.")
|
|
def test_is_installer(self):
|
|
""" Test we can identify a correct installer """
|
|
|
|
if mozinfo.isLinux:
|
|
self.assertTrue(mozinstall.is_installer(self.bz2))
|
|
|
|
if mozinfo.isWin:
|
|
# test zip installer
|
|
self.assertTrue(mozinstall.is_installer(self.zipfile))
|
|
|
|
# test exe installer
|
|
self.assertTrue(mozinstall.is_installer(self.exe))
|
|
|
|
try:
|
|
# test stub browser file
|
|
# without pefile on the system this test will fail
|
|
import pefile
|
|
stub_exe = os.path.join(here, 'build_stub', 'firefox.exe')
|
|
self.assertFalse(mozinstall.is_installer(stub_exe))
|
|
except ImportError:
|
|
pass
|
|
|
|
if mozinfo.isMac:
|
|
self.assertTrue(mozinstall.is_installer(self.dmg))
|
|
|
|
def test_invalid_source_error(self):
|
|
""" Test InvalidSource error is raised with an incorrect installer """
|
|
|
|
if mozinfo.isLinux:
|
|
self.assertRaises(mozinstall.InvalidSource, mozinstall.install,
|
|
self.dmg, 'firefox')
|
|
|
|
elif mozinfo.isWin:
|
|
self.assertRaises(mozinstall.InvalidSource, mozinstall.install,
|
|
self.bz2, 'firefox')
|
|
|
|
elif mozinfo.isMac:
|
|
self.assertRaises(mozinstall.InvalidSource, mozinstall.install,
|
|
self.bz2, 'firefox')
|
|
|
|
@unittest.skipIf(mozinfo.isWin, "Bug 1157352 - We need a new firefox.exe for mozinstall 1.12 and higher.")
|
|
def test_install(self):
|
|
""" Test mozinstall's install capability """
|
|
|
|
if mozinfo.isLinux:
|
|
installdir = mozinstall.install(self.bz2, self.tempdir)
|
|
self.assertEqual(os.path.join(self.tempdir, 'firefox'), installdir)
|
|
|
|
elif mozinfo.isWin:
|
|
installdir_exe = mozinstall.install(self.exe,
|
|
os.path.join(self.tempdir, 'exe'))
|
|
self.assertEqual(os.path.join(self.tempdir, 'exe', 'firefox'),
|
|
installdir_exe)
|
|
|
|
installdir_zip = mozinstall.install(self.zipfile,
|
|
os.path.join(self.tempdir, 'zip'))
|
|
self.assertEqual(os.path.join(self.tempdir, 'zip', 'firefox'),
|
|
installdir_zip)
|
|
|
|
elif mozinfo.isMac:
|
|
installdir = mozinstall.install(self.dmg, self.tempdir)
|
|
self.assertEqual(os.path.join(os.path.realpath(self.tempdir),
|
|
'FirefoxStub.app'), installdir)
|
|
|
|
@unittest.skipIf(mozinfo.isWin, "Bug 1157352 - We need a new firefox.exe for mozinstall 1.12 and higher.")
|
|
def test_uninstall(self):
|
|
""" Test mozinstall's uninstall capabilites """
|
|
# Uninstall after installing
|
|
|
|
if mozinfo.isLinux:
|
|
installdir = mozinstall.install(self.bz2, self.tempdir)
|
|
mozinstall.uninstall(installdir)
|
|
self.assertFalse(os.path.exists(installdir))
|
|
|
|
elif mozinfo.isWin:
|
|
# Exe installer for Windows
|
|
installdir_exe = mozinstall.install(self.exe,
|
|
os.path.join(self.tempdir, 'exe'))
|
|
mozinstall.uninstall(installdir_exe)
|
|
self.assertFalse(os.path.exists(installdir_exe))
|
|
|
|
# Zip installer for Windows
|
|
installdir_zip = mozinstall.install(self.zipfile,
|
|
os.path.join(self.tempdir, 'zip'))
|
|
mozinstall.uninstall(installdir_zip)
|
|
self.assertFalse(os.path.exists(installdir_zip))
|
|
|
|
elif mozinfo.isMac:
|
|
installdir = mozinstall.install(self.dmg, self.tempdir)
|
|
mozinstall.uninstall(installdir)
|
|
self.assertFalse(os.path.exists(installdir))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|