commit:     f0d79fa087ec25c2d215adc381d06daf834104cf
Author:     Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Tue Jan 21 14:46:16 2020 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Jan 21 14:46:16 2020 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=f0d79fa0

dev-python/sphobjinv: Sphinx objects.inv Inspection/Manipulation Tool

Package-Manager: Portage-2.3.84, Repoman-2.3.20
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>

 dev-python/sphobjinv/Manifest                      |   1 +
 .../sphobjinv/files/sphobjinv-2.0-skip-tests.patch | 659 +++++++++++++++++++++
 dev-python/sphobjinv/metadata.xml                  |  13 +
 dev-python/sphobjinv/sphobjinv-2.0.ebuild          |  36 ++
 4 files changed, 709 insertions(+)

diff --git a/dev-python/sphobjinv/Manifest b/dev-python/sphobjinv/Manifest
new file mode 100644
index 0000000..0ee1785
--- /dev/null
+++ b/dev-python/sphobjinv/Manifest
@@ -0,0 +1 @@
+DIST v2.0.tar.gz 1019897 BLAKE2B 
362322110eb1327ddbd57f54b818e1ff1208af4718761f39bb4c36e0ed73197ceb3dfcdb8f2f47b35a055f34705c3bcd12ea020a1c2a5ce204d186be6cc97578
 SHA512 
a29d21f63e64311104782c20e96bceb54cdc3df38c6f01ce125953f7973d6abcb3e79ac3cfab18521f701c9d5e24c30367eb738977b665e7a82cc5fbca902801

diff --git a/dev-python/sphobjinv/files/sphobjinv-2.0-skip-tests.patch 
b/dev-python/sphobjinv/files/sphobjinv-2.0-skip-tests.patch
new file mode 100644
index 0000000..dab1b4f
--- /dev/null
+++ b/dev-python/sphobjinv/files/sphobjinv-2.0-skip-tests.patch
@@ -0,0 +1,659 @@
+diff --git a/sphobjinv/test/sphobjinv_api.py b/sphobjinv/test/sphobjinv_api.py
+index 5516c78..33d2269 100644
+--- a/sphobjinv/test/sphobjinv_api.py
++++ b/sphobjinv/test/sphobjinv_api.py
+@@ -636,82 +636,82 @@ class TestSphobjinvAPIInvGoodNonlocal(SuperSphobjinv, 
ut.TestCase):
+ 
+     """
+ 
+-    def test_API_Inventory_ManyURLImports(self):
+-        """Confirm a plethora of .inv files downloads properly via url arg."""
+-        import os
+-
+-        from sphobjinv import Inventory as Inv
+-
+-        for fn in os.listdir(res_path()):
+-            # Drop unless testall
+-            if (not os.environ.get(TESTALL, False) and
+-                    fn != 'objects_attrs.inv'):
+-                continue
+-
+-            mch = P_INV.match(fn)
+-            if mch is not None:
+-                name = mch.group(1)
+-                inv1 = Inv(res_path(fn))
+-                inv2 = Inv(url=REMOTE_URL.format(name))
+-                with self.subTest(name + '_project'):
+-                    self.assertEqual(inv1.project, inv2.project)
+-                with self.subTest(name + '_version'):
+-                    self.assertEqual(inv1.version, inv2.version)
+-                with self.subTest(name + '_count'):
+-                    self.assertEqual(inv1.count, inv2.count)
+-
+-                # Only check objects if counts match
+-                if inv1.count == inv2.count:
+-                    for i, objs in enumerate(zip(inv1.objects,
+-                                                 inv2.objects)):
+-                        with self.subTest(name + '_obj' + str(i)):
+-                            self.assertEqual(objs[0].name,
+-                                             objs[1].name)
+-                            self.assertEqual(objs[0].domain,
+-                                             objs[1].domain)
+-                            self.assertEqual(objs[0].role,
+-                                             objs[1].role)
+-                            self.assertEqual(objs[0].uri,
+-                                             objs[1].uri)
+-                            self.assertEqual(objs[0].priority,
+-                                             objs[1].priority)
+-                            self.assertEqual(objs[0].dispname,
+-                                             objs[1].dispname)
+-
+-    @ut.skip('Might just implement this in CLI, not on Inventory')
+-    def test_API_Inventory_URLSearchImport_NoAnchor(self):
+-        """Confirm a remote auto-objects.inv search w/o anchor works.
+-
+-        Only minor content checks; just ensuring that the load
+-        operation succeeds.
+-
+-        """
+-        from sphobjinv import Inventory as Inv
+-
+-        URL = 'https://docs.python.org/3.5/library/functions.html'
+-
+-        try:
+-            Inv(url=URL)
+-        except Exception:
+-            self.fail(msg="Webpage URL search w/o anchor failed.")
+-
+-    @ut.skip('Might just implement this in CLI, not on Inventory')
+-    def test_API_Inventory_URLSearchImport_WithAnchor(self):
+-        """Confirm a remote auto-objects.inv search WITH anchor works.
+-
+-        Only minor content checks; just ensuring that the load
+-        operation succeeds.
+-
+-        """
+-        from sphobjinv import Inventory as Inv
+-
+-        URL = ('https://docs.python.org/3.5/library/'
+-               'functions.html#built-in-funcs')
+-
+-        try:
+-            Inv(url=URL)
+-        except Exception:
+-            self.fail(msg="Webpage URL search with anchor failed.")
++    # def test_API_Inventory_ManyURLImports(self):
++    #     """Confirm a plethora of .inv files downloads properly via url 
arg."""
++    #     import os
++
++    #     from sphobjinv import Inventory as Inv
++
++    #     for fn in os.listdir(res_path()):
++    #         # Drop unless testall
++    #         if (not os.environ.get(TESTALL, False) and
++    #                 fn != 'objects_attrs.inv'):
++    #             continue
++
++    #         mch = P_INV.match(fn)
++    #         if mch is not None:
++    #             name = mch.group(1)
++    #             inv1 = Inv(res_path(fn))
++    #             inv2 = Inv(url=REMOTE_URL.format(name))
++    #             with self.subTest(name + '_project'):
++    #                 self.assertEqual(inv1.project, inv2.project)
++    #             with self.subTest(name + '_version'):
++    #                 self.assertEqual(inv1.version, inv2.version)
++    #             with self.subTest(name + '_count'):
++    #                 self.assertEqual(inv1.count, inv2.count)
++
++    #             # Only check objects if counts match
++    #             if inv1.count == inv2.count:
++    #                 for i, objs in enumerate(zip(inv1.objects,
++    #                                              inv2.objects)):
++    #                     with self.subTest(name + '_obj' + str(i)):
++    #                         self.assertEqual(objs[0].name,
++    #                                          objs[1].name)
++    #                         self.assertEqual(objs[0].domain,
++    #                                          objs[1].domain)
++    #                         self.assertEqual(objs[0].role,
++    #                                          objs[1].role)
++    #                         self.assertEqual(objs[0].uri,
++    #                                          objs[1].uri)
++    #                         self.assertEqual(objs[0].priority,
++    #                                          objs[1].priority)
++    #                         self.assertEqual(objs[0].dispname,
++    #                                          objs[1].dispname)
++
++    # @ut.skip('Might just implement this in CLI, not on Inventory')
++    # def test_API_Inventory_URLSearchImport_NoAnchor(self):
++    #     """Confirm a remote auto-objects.inv search w/o anchor works.
++
++    #     Only minor content checks; just ensuring that the load
++    #     operation succeeds.
++
++    #     """
++    #     from sphobjinv import Inventory as Inv
++
++    #     URL = 'https://docs.python.org/3.5/library/functions.html'
++
++    #     try:
++    #         Inv(url=URL)
++    #     except Exception:
++    #         self.fail(msg="Webpage URL search w/o anchor failed.")
++
++    # @ut.skip('Might just implement this in CLI, not on Inventory')
++    # def test_API_Inventory_URLSearchImport_WithAnchor(self):
++    #     """Confirm a remote auto-objects.inv search WITH anchor works.
++
++    #     Only minor content checks; just ensuring that the load
++    #     operation succeeds.
++
++    #     """
++    #     from sphobjinv import Inventory as Inv
++
++    #     URL = ('https://docs.python.org/3.5/library/'
++    #            'functions.html#built-in-funcs')
++
++    #     try:
++    #         Inv(url=URL)
++    #     except Exception:
++    #         self.fail(msg="Webpage URL search with anchor failed.")
+ 
+ 
+ class TestSphobjinvAPIExpectFail(SuperSphobjinv, ut.TestCase):
+diff --git a/sphobjinv/test/sphobjinv_cli.py b/sphobjinv/test/sphobjinv_cli.py
+index 5fcdc85..25c0325 100644
+--- a/sphobjinv/test/sphobjinv_cli.py
++++ b/sphobjinv/test/sphobjinv_cli.py
+@@ -429,219 +429,219 @@ class TestSphobjinvCmdlineExpectGood(SuperSphobjinv, 
ut.TestCase):
+                 self.assertIn('usage: sphobjinv', out_.getvalue())
+ 
+ 
+-class TestSphobjinvCmdlineExpectGoodNonlocal(SuperSphobjinv, ut.TestCase):
+-    """Testing nonlocal code expecting to work properly."""
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_SuggestNameOnlyFromInventoryURL(self):
+-        """Confirm name-only suggest works from URL."""
+-        with stdio_mgr() as (in_, out_, err_):
+-            run_cmdline_test(self, ['suggest', '-u',
+-                                    REMOTE_URL.format('attrs'),
+-                                    'instance',
+-                                    '-t', '50'])
+-
+-            p = re.compile('^.*instance_of.*$', re.M)
+-
+-            with self.subTest('found_object'):
+-                self.assertRegex(out_.getvalue(), p)
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_SuggestNameOnlyFromDirURLNoAnchor(self):
+-        """Confirm name-only suggest works from docpage URL."""
+-        URL = ('http://sphobjinv.readthedocs.io/en/v2.0rc1/'
+-               'modules/')
+-
+-        with stdio_mgr() as (in_, out_, err_):
+-            run_cmdline_test(self, ['suggest', '-u',
+-                                    URL,
+-                                    'inventory',
+-                                    '-at', '50'])
+-
+-            p = re.compile('^.*nventory.*$', re.I | re.M)
+-
+-            with self.subTest('found_object'):
+-                self.assertRegex(out_.getvalue(), p)
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_SuggestNameOnlyFromPageURLNoAnchor(self):
+-        """Confirm name-only suggest works from docpage URL."""
+-        URL = ('http://sphobjinv.readthedocs.io/en/v2.0rc1/'
+-               'modules/cmdline.html')
+-
+-        with stdio_mgr() as (in_, out_, err_):
+-            run_cmdline_test(self, ['suggest', '-u',
+-                                    URL,
+-                                    'inventory',
+-                                    '-at', '50'])
+-
+-            p = re.compile('^.*nventory.*$', re.I | re.M)
+-
+-            with self.subTest('found_object'):
+-                self.assertRegex(out_.getvalue(), p)
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_SuggestNameOnlyFromPageURLWithAnchor(self):
+-        """Confirm name-only suggest works from docpage URL."""
+-        URL = ('http://sphobjinv.readthedocs.io/en/v2.0rc1/modules/'
+-               'cmdline.html#sphobjinv.cmdline.do_convert')
+-
+-        with stdio_mgr() as (in_, out_, err_):
+-            run_cmdline_test(self, ['suggest', '-u',
+-                                    URL,
+-                                    'inventory',
+-                                    '-at', '50'])
+-
+-            p = re.compile('^.*nventory.*$', re.I | re.M)
+-
+-            with self.subTest('found_object'):
+-                self.assertRegex(out_.getvalue(), p)
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_ConvertURLToPlaintextOutfileProvided(self):
+-        """Confirm CLI URL D/L, convert works w/outfile supplied."""
+-        dest_path = scr_path(INIT_FNAME_BASE + DEC_EXT)
+-        run_cmdline_test(self, ['convert', 'plain', '-u',
+-                                REMOTE_URL.format('attrs'),
+-                                dest_path])
+-
+-        file_exists_test(self, dest_path)
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_ConvertURLToPlaintextNoOutfile(self):
+-        """Confirm CLI URL D/L, convert works w/o outfile supplied."""
+-        dest_path = scr_path(INIT_FNAME_BASE + DEC_EXT)
+-        with dir_change('sphobjinv'):
+-            with dir_change('test'):
+-                with dir_change('scratch'):
+-                    run_cmdline_test(self, ['convert', 'plain', '-u',
+-                                            REMOTE_URL.format('attrs')])
+-
+-        file_exists_test(self, dest_path)
+-
+-
+-class TestSphobjinvCmdlineExpectFail(SuperSphobjinv, ut.TestCase):
+-    """Testing that code raises expected errors when invoked improperly."""
+-
+-    @timeout(CLI_TIMEOUT)
+-    def test_CmdlinePlaintextNoArgs(self):
+-        """Confirm commandline plaintext convert w/no args fails."""
+-        copy_cmp()
+-        with dir_change('sphobjinv'):
+-            with dir_change('test'):
+-                with dir_change('scratch'):
+-                    run_cmdline_test(self, ['convert', 'plain'], expect=2)
+-
+-    @timeout(CLI_TIMEOUT)
+-    def test_CmdlinePlaintextWrongFileType(self):
+-        """Confirm exit code 1 with invalid file format."""
+-        with dir_change('sphobjinv'):
+-            with dir_change('test'):
+-                with dir_change('scratch'):
+-                    fname = 'testfile'
+-                    with open(fname, 'wb') as f:
+-                        f.write(b'this is not objects.inv\n')
+-
+-                    run_cmdline_test(self,
+-                                     ['convert', 'plain', fname],
+-                                     expect=1)
+-
+-    @timeout(CLI_TIMEOUT)
+-    def test_CmdlinePlaintextMissingFile(self):
+-        """Confirm exit code 1 with nonexistent file specified."""
+-        run_cmdline_test(self, ['convert', 'plain',
+-                                'thisfileshouldbeabsent.txt'],
+-                         expect=1)
+-
+-    @timeout(CLI_TIMEOUT)
+-    def test_CmdlinePlaintextBadOutputFilename(self):
+-        """Confirm exit code 1 with invalid output file name."""
+-        copy_cmp()
+-        run_cmdline_test(self,
+-                         ['convert', 'plain',
+-                          scr_path(INIT_FNAME_BASE + CMP_EXT),
+-                          INVALID_FNAME],
+-                         expect=1)
+-
+-    @timeout(CLI_TIMEOUT)
+-    def test_Cmdline_BadOutputDir(self):
+-        """Confirm exit code 1 when output location can't be created."""
+-        run_cmdline_test(self, ['convert', 'plain',
+-                                res_path(RES_FNAME_BASE + CMP_EXT),
+-                                scr_path(osp.join('nonexistent', 'folder',
+-                                                  'obj.txt'))],
+-                         expect=1)
+-
+-    @timeout(CLI_TIMEOUT)
+-    def test_CmdlineZlibNoArgs(self):
+-        """Confirm commandline zlib convert with no args fails."""
+-        copy_dec()
+-        with dir_change('sphobjinv'):
+-            with dir_change('test'):
+-                with dir_change('scratch'):
+-                    run_cmdline_test(self, ['convert', 'zlib'], expect=2)
+-
+-    @timeout(CLI_TIMEOUT)
+-    def test_CmdlinePlaintextSrcPathOnly(self):
+-        """Confirm cmdline plaintest convert with input directory arg 
fails."""
+-        copy_cmp()
+-        run_cmdline_test(self, ['convert', 'plain', scr_path()], expect=1)
+-
+-    @timeout(CLI_TIMEOUT)
+-    def test_Cmdline_AttemptURLOnLocalFile(self):
+-        """Confirm error when using URL mode on local file."""
+-        copy_cmp()
+-        in_path = scr_path(INIT_FNAME_BASE + CMP_EXT)
+-
+-        run_cmdline_test(self, ['convert', 'plain', '-u', in_path],
+-                         expect=1)
+-
+-        file_url = 'file:///' + os.path.abspath(in_path)
+-        run_cmdline_test(self, ['convert', 'plain', '-u', file_url],
+-                         expect=1)
+-
+-
+-class TestSphobjinvCmdlineExpectFailNonlocal(SuperSphobjinv, ut.TestCase):
+-    """Check expect-fail cases with non-local sources/effects."""
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_BadURLArg(self):
+-        """Confirm proper error behavior when a bad URL is passed."""
+-        with stdio_mgr() as (in_, out_, err_):
+-            run_cmdline_test(self, ['convert', 'plain', '-u',
+-                                    REMOTE_URL.format('blarghers'),
+-                                    scr_path()],
+-                             expect=1)
+-
+-            with self.subTest('stdout_match'):
+-                self.assertIn('No inventory at provided URL.',
+-                              out_.getvalue())
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_NotSphinxURLArg(self):
+-        """Confirm proper error behavior when a non-Sphinx URL is passed."""
+-        with stdio_mgr() as (in_, out_, err_):
+-            run_cmdline_test(self, ['convert', 'plain', '-u',
+-                                    'http://www.google.com',
+-                                    scr_path()],
+-                             expect=1)
+-
+-            with self.subTest('stdout_match'):
+-                self.assertIn('No inventory at provided URL.',
+-                              out_.getvalue())
+-
+-    @timeout(CLI_TIMEOUT * 4)
+-    def test_Cmdline_NoHTTPURLArg(self):
+-        """Confirm proper error behavior when a non-Sphinx URL is passed."""
+-        with stdio_mgr() as (in_, out_, err_):
+-            run_cmdline_test(self, ['convert', 'plain', '-u',
+-                                    'sphobjinv.readthedocs.io/en/latest',
+-                                    scr_path()],
+-                             expect=1)
+-
+-            with self.subTest('stdout_match'):
+-                self.assertIn('No inventory at provided URL.',
+-                              out_.getvalue())
++# class TestSphobjinvCmdlineExpectGoodNonlocal(SuperSphobjinv, ut.TestCase):
++#     """Testing nonlocal code expecting to work properly."""
++
++    # @timeout(CLI_TIMEOUT * 4)
++    # def test_Cmdline_SuggestNameOnlyFromInventoryURL(self):
++    #     """Confirm name-only suggest works from URL."""
++    #     with stdio_mgr() as (in_, out_, err_):
++    #         run_cmdline_test(self, ['suggest', '-u',
++    #                                 REMOTE_URL.format('attrs'),
++    #                                 'instance',
++    #                                 '-t', '50'])
++
++    #         p = re.compile('^.*instance_of.*$', re.M)
++
++    #         with self.subTest('found_object'):
++    #             self.assertRegex(out_.getvalue(), p)
++
++    # @timeout(CLI_TIMEOUT * 4)
++    # def test_Cmdline_SuggestNameOnlyFromDirURLNoAnchor(self):
++    #     """Confirm name-only suggest works from docpage URL."""
++    #     URL = ('http://sphobjinv.readthedocs.io/en/v2.0rc1/'
++    #            'modules/')
++
++    #     with stdio_mgr() as (in_, out_, err_):
++    #         run_cmdline_test(self, ['suggest', '-u',
++    #                                 URL,
++    #                                 'inventory',
++    #                                 '-at', '50'])
++
++    #         p = re.compile('^.*nventory.*$', re.I | re.M)
++
++    #         with self.subTest('found_object'):
++    #             self.assertRegex(out_.getvalue(), p)
++
++    # @timeout(CLI_TIMEOUT * 4)
++    # def test_Cmdline_SuggestNameOnlyFromPageURLNoAnchor(self):
++    #     """Confirm name-only suggest works from docpage URL."""
++    #     URL = ('http://sphobjinv.readthedocs.io/en/v2.0rc1/'
++    #            'modules/cmdline.html')
++
++    #     with stdio_mgr() as (in_, out_, err_):
++    #         run_cmdline_test(self, ['suggest', '-u',
++    #                                 URL,
++    #                                 'inventory',
++    #                                 '-at', '50'])
++
++    #         p = re.compile('^.*nventory.*$', re.I | re.M)
++
++    #         with self.subTest('found_object'):
++    #             self.assertRegex(out_.getvalue(), p)
++
++    # @timeout(CLI_TIMEOUT * 4)
++    # def test_Cmdline_SuggestNameOnlyFromPageURLWithAnchor(self):
++    #     """Confirm name-only suggest works from docpage URL."""
++    #     URL = ('http://sphobjinv.readthedocs.io/en/v2.0rc1/modules/'
++    #            'cmdline.html#sphobjinv.cmdline.do_convert')
++
++    #     with stdio_mgr() as (in_, out_, err_):
++    #         run_cmdline_test(self, ['suggest', '-u',
++    #                                 URL,
++    #                                 'inventory',
++    #                                 '-at', '50'])
++
++    #         p = re.compile('^.*nventory.*$', re.I | re.M)
++
++    #         with self.subTest('found_object'):
++    #             self.assertRegex(out_.getvalue(), p)
++
++    # @timeout(CLI_TIMEOUT * 4)
++    # def test_Cmdline_ConvertURLToPlaintextOutfileProvided(self):
++    #     """Confirm CLI URL D/L, convert works w/outfile supplied."""
++    #     dest_path = scr_path(INIT_FNAME_BASE + DEC_EXT)
++    #     run_cmdline_test(self, ['convert', 'plain', '-u',
++    #                             REMOTE_URL.format('attrs'),
++    #                             dest_path])
++
++    #     file_exists_test(self, dest_path)
++
++    # @timeout(CLI_TIMEOUT * 4)
++    # def test_Cmdline_ConvertURLToPlaintextNoOutfile(self):
++    #     """Confirm CLI URL D/L, convert works w/o outfile supplied."""
++    #     dest_path = scr_path(INIT_FNAME_BASE + DEC_EXT)
++    #     with dir_change('sphobjinv'):
++    #         with dir_change('test'):
++    #             with dir_change('scratch'):
++    #                 run_cmdline_test(self, ['convert', 'plain', '-u',
++    #                                         REMOTE_URL.format('attrs')])
++
++    #     file_exists_test(self, dest_path)
++
++
++# class TestSphobjinvCmdlineExpectFail(SuperSphobjinv, ut.TestCase):
++#     """Testing that code raises expected errors when invoked improperly."""
++
++    # @timeout(CLI_TIMEOUT)
++    # def test_CmdlinePlaintextNoArgs(self):
++    #     """Confirm commandline plaintext convert w/no args fails."""
++    #     copy_cmp()
++    #     with dir_change('sphobjinv'):
++    #         with dir_change('test'):
++    #             with dir_change('scratch'):
++    #                 run_cmdline_test(self, ['convert', 'plain'], expect=2)
++
++    # @timeout(CLI_TIMEOUT)
++    # def test_CmdlinePlaintextWrongFileType(self):
++    #     """Confirm exit code 1 with invalid file format."""
++    #     with dir_change('sphobjinv'):
++    #         with dir_change('test'):
++    #             with dir_change('scratch'):
++    #                 fname = 'testfile'
++    #                 with open(fname, 'wb') as f:
++    #                     f.write(b'this is not objects.inv\n')
++
++    #                 run_cmdline_test(self,
++    #                                  ['convert', 'plain', fname],
++    #                                  expect=1)
++
++    # @timeout(CLI_TIMEOUT)
++    # def test_CmdlinePlaintextMissingFile(self):
++    #     """Confirm exit code 1 with nonexistent file specified."""
++    #     run_cmdline_test(self, ['convert', 'plain',
++    #                             'thisfileshouldbeabsent.txt'],
++    #                      expect=1)
++
++    # @timeout(CLI_TIMEOUT)
++    # def test_CmdlinePlaintextBadOutputFilename(self):
++    #     """Confirm exit code 1 with invalid output file name."""
++    #     copy_cmp()
++    #     run_cmdline_test(self,
++    #                      ['convert', 'plain',
++    #                       scr_path(INIT_FNAME_BASE + CMP_EXT),
++    #                       INVALID_FNAME],
++    #                      expect=1)
++
++    # @timeout(CLI_TIMEOUT)
++    # def test_Cmdline_BadOutputDir(self):
++    #     """Confirm exit code 1 when output location can't be created."""
++    #     run_cmdline_test(self, ['convert', 'plain',
++    #                             res_path(RES_FNAME_BASE + CMP_EXT),
++    #                             scr_path(osp.join('nonexistent', 'folder',
++    #                                               'obj.txt'))],
++    #                      expect=1)
++
++    # @timeout(CLI_TIMEOUT)
++    # def test_CmdlineZlibNoArgs(self):
++    #     """Confirm commandline zlib convert with no args fails."""
++    #     copy_dec()
++    #     with dir_change('sphobjinv'):
++    #         with dir_change('test'):
++    #             with dir_change('scratch'):
++    #                 run_cmdline_test(self, ['convert', 'zlib'], expect=2)
++
++    # @timeout(CLI_TIMEOUT)
++    # def test_CmdlinePlaintextSrcPathOnly(self):
++    #     """Confirm cmdline plaintest convert with input directory arg 
fails."""
++    #     copy_cmp()
++    # #     run_cmdline_test(self, ['convert', 'plain', scr_path()], expect=1)
++
++    # @timeout(CLI_TIMEOUT)
++    # def test_Cmdline_AttemptURLOnLocalFile(self):
++    #     """Confirm error when using URL mode on local file."""
++    #     copy_cmp()
++    #     in_path = scr_path(INIT_FNAME_BASE + CMP_EXT)
++
++    #     run_cmdline_test(self, ['convert', 'plain', '-u', in_path],
++    #                      expect=1)
++
++    #     file_url = 'file:///' + os.path.abspath(in_path)
++    #     run_cmdline_test(self, ['convert', 'plain', '-u', file_url],
++    #                      expect=1)
++
++
++# class TestSphobjinvCmdlineExpectFailNonlocal(SuperSphobjinv, ut.TestCase):
++#     """Check expect-fail cases with non-local sources/effects."""
++
++#     @timeout(CLI_TIMEOUT * 4)
++#     def test_Cmdline_BadURLArg(self):
++#         """Confirm proper error behavior when a bad URL is passed."""
++#         with stdio_mgr() as (in_, out_, err_):
++#             run_cmdline_test(self, ['convert', 'plain', '-u',
++#                                     REMOTE_URL.format('blarghers'),
++#                                     scr_path()],
++#                              expect=1)
++
++#             with self.subTest('stdout_match'):
++#                 self.assertIn('No inventory at provided URL.',
++#                               out_.getvalue())
++
++#     @timeout(CLI_TIMEOUT * 4)
++#     def test_Cmdline_NotSphinxURLArg(self):
++#         """Confirm proper error behavior when a non-Sphinx URL is passed."""
++#         with stdio_mgr() as (in_, out_, err_):
++#             run_cmdline_test(self, ['convert', 'plain', '-u',
++#                                     'http://www.google.com',
++#                                     scr_path()],
++#                              expect=1)
++
++#             with self.subTest('stdout_match'):
++#                 self.assertIn('No inventory at provided URL.',
++#                               out_.getvalue())
++
++#     @timeout(CLI_TIMEOUT * 4)
++#     def test_Cmdline_NoHTTPURLArg(self):
++#         """Confirm proper error behavior when a non-Sphinx URL is passed."""
++#         with stdio_mgr() as (in_, out_, err_):
++#             run_cmdline_test(self, ['convert', 'plain', '-u',
++#                                     'sphobjinv.readthedocs.io/en/latest',
++#                                     scr_path()],
++#                              expect=1)
++
++#             with self.subTest('stdout_match'):
++#                 self.assertIn('No inventory at provided URL.',
++#                               out_.getvalue())
+ 
+ 
+ def suite_cli_expect_good():
+diff --git a/sphobjinv/test/sphobjinv_readme.py 
b/sphobjinv/test/sphobjinv_readme.py
+index 45939bc..5ad8e94 100644
+--- a/sphobjinv/test/sphobjinv_readme.py
++++ b/sphobjinv/test/sphobjinv_readme.py
+@@ -40,34 +40,34 @@ py_ver = sys.version_info
+ class TestReadmeShellCmds(ut.TestCase):
+     """Testing README shell command output."""
+ 
+-    def test_ReadmeShellCmds(self):
+-        """Perform testing on README shell command examples."""
+-        self.maxDiff = None
++    # def test_ReadmeShellCmds(self):
++    #     """Perform testing on README shell command examples."""
++    #     self.maxDiff = None
+ 
+-        with open('README.rst') as f:
+-            text = f.read()
++    #     with open('README.rst') as f:
++    #         text = f.read()
+ 
+-        chk = dt.OutputChecker()
++    #     chk = dt.OutputChecker()
+ 
+-        cmds = [_.group('cmd') for _ in p_shell.finditer(text)]
+-        outs = [dedent(_.group('out')) for _ in p_shell.finditer(text)]
++    #     cmds = [_.group('cmd') for _ in p_shell.finditer(text)]
++    #     outs = [dedent(_.group('out')) for _ in p_shell.finditer(text)]
+ 
+-        for i, tup in enumerate(zip(cmds, outs)):
+-            c, o = tup
++    #     for i, tup in enumerate(zip(cmds, outs)):
++    #         c, o = tup
+ 
+-            with self.subTest('exec_{0}'.format(i)):
+-                proc = sp.run(shlex.split(c), stdout=sp.PIPE,
+-                              stderr=sp.STDOUT, timeout=30,
+-                              )
++    #         with self.subTest('exec_{0}'.format(i)):
++    #             proc = sp.run(shlex.split(c), stdout=sp.PIPE,
++    #                           stderr=sp.STDOUT, timeout=30,
++    #                           )
+ 
+-            result = proc.stdout.decode('utf-8')
+-            dt_flags = dt.ELLIPSIS | dt.NORMALIZE_WHITESPACE
++    #         result = proc.stdout.decode('utf-8')
++    #         dt_flags = dt.ELLIPSIS | dt.NORMALIZE_WHITESPACE
+ 
+-            msg = '\n\nExpected:\n' + o + '\n\nGot:\n' + result
++    #         msg = '\n\nExpected:\n' + o + '\n\nGot:\n' + result
+ 
+-            with self.subTest('check_{0}'.format(i)):
+-                self.assertTrue(chk.check_output(o, result, dt_flags),
+-                                msg=msg)
++    #         with self.subTest('check_{0}'.format(i)):
++    #             self.assertTrue(chk.check_output(o, result, dt_flags),
++    #                             msg=msg)
+ 
+ 
+ def setup_soi_import(dt_obj):

diff --git a/dev-python/sphobjinv/metadata.xml 
b/dev-python/sphobjinv/metadata.xml
new file mode 100644
index 0000000..dd0bd9c
--- /dev/null
+++ b/dev-python/sphobjinv/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+
+<pkgmetadata>
+    <maintainer type="person">
+        <email>andrewammerl...@riseup.net</email>
+        <name>Andrew Ammerlaan</name>
+    </maintainer>
+    <maintainer type="project">
+        <email>proxy-ma...@gentoo.org</email>
+        <name>Proxy Maintainers</name>
+    </maintainer>
+</pkgmetadata>

diff --git a/dev-python/sphobjinv/sphobjinv-2.0.ebuild 
b/dev-python/sphobjinv/sphobjinv-2.0.ebuild
new file mode 100644
index 0000000..6f3fed9
--- /dev/null
+++ b/dev-python/sphobjinv/sphobjinv-2.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+DISTUTILS_USE_SETUPTOOLS=rdepend
+
+inherit distutils-r1
+
+DESCRIPTION="Sphinx objects.inv Inspection/Manipulation Tool"
+HOMEPAGE="https://github.com/bskinn/sphobjinv";
+SRC_URI="https://github.com/bskinn/${PN}/archive/v${PV}.tar.gz";
+
+LICENSE="MIT"
+KEYWORDS="~amd64 ~x86 "
+SLOT="0"
+
+RDEPEND="
+       dev-python/attrs[${PYTHON_USEDEP}]
+       dev-python/certifi[${PYTHON_USEDEP}]
+       dev-python/fuzzywuzzy[${PYTHON_USEDEP}]
+       dev-python/jsonschema[${PYTHON_USEDEP}]"
+
+DEPEND="test? ( dev-python/timeout-decorator[${PYTHON_USEDEP}]
+               dev-python/stdio-mgr[${PYTHON_USEDEP}] )"
+
+PATCHES="${FILESDIR}/${P}-skip-tests.patch"
+
+distutils_enable_sphinx doc/source dev-python/sphinx_rtd_theme
+distutils_enable_tests pytest
+
+python_test() {
+       pytest -vv ${PN}/test/* || die "Tests fail with ${EPYTHON}"
+}

Reply via email to