Beispiel #1
0
    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;')
Beispiel #2
0
    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)
Beispiel #3
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;")
Beispiel #4
0
    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;")
Beispiel #5
0
    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"])
Beispiel #6
0
    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)
Beispiel #7
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'])
Beispiel #8
0
    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;')
Beispiel #9
0
 def unpack(self, zipname, destdir):
     """Unpack the zip file *zipname* into *destdir*."""
     return unpack(zipname, destdir)