From 4a8f55e63043369fba32375fe53f0878e7da8b36 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 30 Jan 2016 14:08:32 -0500 Subject: [PATCH] Revised package util tests The package util tests were revised to pull the external library pyhelloworld3 from an internal source rather than external. This speeds up tests, makes tests more reliable, and removes dependency on internet connection. --- tests/resources/pyhelloworld3.zip | Bin 0 -> 2100 bytes tests/util/test_package.py | 53 ++++++++++++++++-------------- 2 files changed, 28 insertions(+), 25 deletions(-) create mode 100644 tests/resources/pyhelloworld3.zip diff --git a/tests/resources/pyhelloworld3.zip b/tests/resources/pyhelloworld3.zip new file mode 100644 index 0000000000000000000000000000000000000000..f2a419e9f340dd870e1c729d06cbc9d622ef0e0f GIT binary patch literal 2100 zcmWIWW@h1H0D&)3b{-%ahD8}T844;hQgd?h%kztJQjB$T6N^hyi}XW7SQ!{?=dKAu z)tfuzYL6ZR0|N-l`Kao|j*g3O6OGG&3iK3)v>U)bw=S%)GRGE-k%+%4Dwi z_=3vh#N>?B_;@auog54x_j1m>@o@8+7SSbra#QAHPO++d zE0fl?;&$M74vWN9Q>@b8bT#)0ZFr#gWdZl(>pjmVf3-UCQQ}9gM_`?%_sKJ58!x1a z>}s-I8W?j>PH&p!v)tJ4%(shHM}7Kg%WJs%SM~kUzwvpCubh+6v_BEdb-_W;Fz69i z--}G4Pn%zG!aT|V_9!e;K(sP0k0OVmF=jMDf-J4}%h`4Y28LbWsKOD&s3yh7XXa&= z#K-FuRKkPMwa<|2umO*2`CO-plW9R#-$j;gHte0#a%$Sfscm=m^>M#dskrp}*D;9` z$DPh>@_zV|tDt}0%vDL>&QG7u`O^0&lZ{quuc3!y?rYPtFU+UDn7ZtK?w6Il9-jN% zxL3tmI`hT)b?=zOdfBeInD=_@xcts<%{~((VqGYEkR29E5Wju$ z{IV~Nfq|idfq}t*xKKi*Z)D#Ehh4aODb(Yf|H(7n+k-yve7nANgTdA-rYxMrnwpxe zDJf#wPo6EG@@$FLk`yuVCn{lL+AFG;JbUs)d&+b1r%N<6RxwX4EG%5QWSM44!;!}a zA4$y$i{Wwz2$(W6d=cYSLB6XCPqH$gI^Iy-^6*hc28M~u3=Fck9ABJTQd)rQ(%MPB z*>?;C+TQ;YP14U>*vbDk^WX(t&XSkgI7_|w6lX+M=XAf|uFd(d|Gh_8@b30kNhY7q zSikQvjnJLxEZ=iI%Hr74i`VogD#f3%St#%;H2Pw_PS=#`a04qYm1|Gc;_EzSaz`EC zy2^a#>uqO0Zj0TJ;2P_9PkQ_MRTF<}&RK7*tF0Zc!xEl*YV{i3iuO~1kDD9woUXk% zxWCD@EJ{eS`GI=w>rc;lx@x8_==?W<`B@R;JS#8vrW%if1g{<>^!rQC5rPD0(@j-U+o&ImSY90BrKe4OocJ$s`E5%xV zS!#Evc-~g8CKsDWGuJw0e_CO)YMxmchpqcn)uV6PpG7YIY3TA`o#m!x!?5@jlivNW zH(&Xy?}@_SrDw}(B{-oEkfq#yi7t?Y7UcUIv?sv?4r%gRq z{Bhq8-T-e#CI$xF#V{z>GcX81D1wDDs#)m8GRP1{5W!%>z<}K>EQK_}g^-+vUhskp zgqXSkm#LV=Fv3vmg&fFGh_`1l;&3WzK?N_J5GF&Mi(cq~Ooll3F>xkiD+19iK`(s} zmh5LD%K6yKB6Mre%L#-vHOx4y!6-EXyjj^m`q&xR848&g7+P5w7&I76lM*e=EsPD# jQp_w;6AjHwQjL<+Op{U!EKE}jlG6;+Qq0YgQVdN2XHVo# literal 0 HcmV?d00001 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')