def test_unload_list(self, mock_popen, mock_pgver, mock_isext): pop = mock_popen.return_value pop.returncode = 0 mock_pgver.return_value = (9,1,0) mock_isext.return_value = True tdir = tempfile.mkdtemp() try: from pgxnclient.utils.zip import unpack dir = unpack(get_test_filename('foobar-0.42.1.zip'), tdir) shutil.copyfile( get_test_filename('META-manyext.json'), os.path.join(dir, 'META.json')) from pgxnclient.cli import main main(['unload', '--yes', dir, 'baz', 'foo']) finally: shutil.rmtree(tdir) self.assertEquals(mock_popen.call_count, 2) self.assert_('psql' in mock_popen.call_args[0][0][0]) self.assertEquals(pop.communicate.call_args_list[0][0][0], 'DROP EXTENSION baz;') self.assertEquals(pop.communicate.call_args_list[1][0][0], 'DROP EXTENSION foo;')
def test_unload_missing(self): tdir = tempfile.mkdtemp() try: from pgxnclient.utils.zip import unpack dir = unpack(get_test_filename("foobar-0.42.1.zip"), tdir) shutil.copyfile(get_test_filename("META-manyext.json"), os.path.join(dir, "META.json")) from pgxnclient.cli import main self.assertRaises(PgxnClientException, main, ["unload", "--yes", dir, "foo", "ach"]) finally: shutil.rmtree(tdir) self.assertEquals(self.mock_popen.call_count, 0)
def test_unload_list(self): tdir = tempfile.mkdtemp() try: from pgxnclient.utils.zip import unpack dir = unpack(get_test_filename("foobar-0.42.1.zip"), tdir) shutil.copyfile(get_test_filename("META-manyext.json"), os.path.join(dir, "META.json")) from pgxnclient.cli import main main(["unload", "--yes", dir, "baz", "foo"]) finally: shutil.rmtree(tdir) self.assertEquals(self.mock_popen.call_count, 2) self.assert_("psql" in self.mock_popen.call_args[0][0][0]) communicate = self.mock_popen.return_value.communicate self.assertEquals(communicate.call_args_list[0][0][0], "DROP EXTENSION baz;") self.assertEquals(communicate.call_args_list[1][0][0], "DROP EXTENSION foo;")
def test_load_local_dir(self, mock_get): mock_get.side_effect = lambda *args: self.fail("network invoked") tdir = tempfile.mkdtemp() try: from pgxnclient.utils.zip import unpack dir = unpack(get_test_filename("foobar-0.42.1.zip"), tdir) from pgxnclient.cli import main main(["load", "--yes", dir]) finally: shutil.rmtree(tdir) self.assertEquals(self.mock_popen.call_count, 1) self.assert_("psql" in self.mock_popen.call_args[0][0][0]) communicate = self.mock_popen.return_value.communicate self.assertEquals(communicate.call_args[0][0], "CREATE EXTENSION foobar;")
def test_install_local_dir(self): self.mock_get.side_effect = lambda *args: self.fail("network invoked") tdir = tempfile.mkdtemp() try: from pgxnclient.utils.zip import unpack dir = unpack(get_test_filename("foobar-0.42.1.zip"), tdir) from pgxnclient.cli import main main(["install", "--sudo", "--", dir]) finally: shutil.rmtree(tdir) self.assertEquals(self.mock_popen.call_count, 2) self.assertEquals(["make"], self.mock_popen.call_args_list[0][0][0][:1]) self.assertEquals(dir, self.mock_popen.call_args_list[0][1]["cwd"]) self.assertEquals(["sudo", "make"], self.mock_popen.call_args_list[1][0][0][:2]) self.assertEquals(dir, self.mock_popen.call_args_list[1][1]["cwd"])
def test_unload_missing(self, mock_popen, mock_pgver, mock_isext): pop = mock_popen.return_value pop.returncode = 0 mock_pgver.return_value = (9,1,0) mock_isext.return_value = True tdir = tempfile.mkdtemp() try: from pgxnclient.utils.zip import unpack dir = unpack(get_test_filename('foobar-0.42.1.zip'), tdir) shutil.copyfile( get_test_filename('META-manyext.json'), os.path.join(dir, 'META.json')) from pgxnclient.cli import main self.assertRaises(PgxnClientException, main, ['unload', '--yes', dir, 'foo', 'ach']) finally: shutil.rmtree(tdir) self.assertEquals(mock_popen.call_count, 0)
def test_install_local_dir(self, mock_get, mock_popen): mock_get.side_effect = lambda *args: self.fail('network invoked') pop = mock_popen.return_value pop.returncode = 0 tdir = tempfile.mkdtemp() try: from pgxnclient.utils.zip import unpack dir = unpack(get_test_filename('foobar-0.42.1.zip'), tdir) from pgxnclient.cli import main main(['install', dir]) finally: shutil.rmtree(tdir) self.assertEquals(mock_popen.call_count, 2) self.assertEquals(['make'], mock_popen.call_args_list[0][0][0][:1]) self.assertEquals(dir, mock_popen.call_args_list[0][1]['cwd']) self.assertEquals(['sudo', 'make'], mock_popen.call_args_list[1][0][0][:2]) self.assertEquals(dir, mock_popen.call_args_list[1][1]['cwd'])
def test_load_local_dir(self, mock_get, mock_popen, mock_pgver, mock_isext): mock_get.side_effect = lambda *args: self.fail('network invoked') pop = mock_popen.return_value pop.returncode = 0 mock_pgver.return_value = (9,1,0) mock_isext.return_value = True tdir = tempfile.mkdtemp() try: from pgxnclient.utils.zip import unpack dir = unpack(get_test_filename('foobar-0.42.1.zip'), tdir) from pgxnclient.cli import main main(['load', '--yes', dir]) finally: shutil.rmtree(tdir) self.assertEquals(mock_popen.call_count, 1) self.assert_('psql' in mock_popen.call_args[0][0][0]) self.assertEquals(pop.communicate.call_args[0][0], 'CREATE EXTENSION foobar;')
def unpack(self, zipname, destdir): """Unpack the zip file *zipname* into *destdir*.""" return unpack(zipname, destdir)