diff --git a/tests/resources/pyhelloworld3.zip b/tests/resources/pyhelloworld3.zip new file mode 100644 index 00000000000..f2a419e9f34 Binary files /dev/null and b/tests/resources/pyhelloworld3.zip differ diff --git a/tests/util/test_package.py b/tests/util/test_package.py index 1ffd66e1bb4..7c10134c60a 100644 --- a/tests/util/test_package.py +++ b/tests/util/test_package.py @@ -1,16 +1,20 @@ """ Tests Home Assistant package util methods. """ -import unittest -import sys +import os import tempfile +import unittest + +import homeassistant.bootstrap as bootstrap import homeassistant.util.package as package +RESOURCE_DIR = os.path.abspath( + os.path.join(os.path.dirname(__file__), '..', 'resources')) + TEST_EXIST_REQ = "pip>=7.0.0" TEST_NEW_REQ = "pyhelloworld3==1.0.0" -TEST_ZIP_REQ = \ - "https://github.com/rmkraus/pyhelloworld3/archive/" \ - "5ba878316d68ea164e2cf5bd085d0cf1fd76bd15.zip#pyhelloworld3==1.0.0" +TEST_ZIP_REQ = 'file://{}#{}' \ + .format(os.path.join(RESOURCE_DIR, 'pyhelloworld3.zip'), TEST_NEW_REQ) class TestPackageUtil(unittest.TestCase): @@ -18,41 +22,40 @@ class TestPackageUtil(unittest.TestCase): def setUp(self): """ Create local library for testing """ - self.lib_dir = tempfile.TemporaryDirectory() + self.tmp_dir = tempfile.TemporaryDirectory() + self.lib_dir = os.path.join(self.tmp_dir.name, 'lib') def tearDown(self): """ Remove local library """ - del self.lib_dir + del self.tmp_dir def test_install_existing_package(self): """ Test an install attempt on an existing package """ self.assertTrue(package.check_package_exists( - TEST_EXIST_REQ, self.lib_dir.name)) + TEST_EXIST_REQ, self.lib_dir)) self.assertTrue(package.install_package(TEST_EXIST_REQ)) - def test_install_package_locally(self): - """ Test an install attempt to the local library """ - self.assertFalse(package.check_package_exists( - TEST_NEW_REQ, self.lib_dir.name)) - - self.assertTrue(package.install_package( - TEST_NEW_REQ, True, self.lib_dir.name)) - - sys.path.insert(0, self.lib_dir.name) - import pyhelloworld3 - - self.assertEqual(pyhelloworld3.__version__, '1.0.0') - def test_install_package_zip(self): """ Test an install attempt from a zip path """ self.assertFalse(package.check_package_exists( - TEST_ZIP_REQ, self.lib_dir.name)) + TEST_ZIP_REQ, self.lib_dir)) + self.assertFalse(package.check_package_exists( + TEST_NEW_REQ, self.lib_dir)) self.assertTrue(package.install_package( - TEST_ZIP_REQ, True, self.lib_dir.name)) + TEST_ZIP_REQ, True, self.lib_dir)) - sys.path.insert(0, self.lib_dir.name) - import pyhelloworld3 + self.assertTrue(package.check_package_exists( + TEST_ZIP_REQ, self.lib_dir)) + self.assertTrue(package.check_package_exists( + TEST_NEW_REQ, self.lib_dir)) + + bootstrap.mount_local_lib_path(self.tmp_dir.name) + + try: + import pyhelloworld3 + except ImportError: + self.fail('Unable to import pyhelloworld3 after installing it.') self.assertEqual(pyhelloworld3.__version__, '1.0.0')