def process_raw_upload():
    test_dir = os.path.dirname(os.path.realpath(__file__))
    sandbox_dir = os.path.join(test_dir, 'sandbox')
    raw_file = os.path.join(sandbox_dir, 'raw.conf')

    if not os.path.exists(raw_file):
        print('[sandbox] missing file', raw_file)
        return

    doc_dir, doctree_dir = prepareDirectories('sandbox-test')
    with prepareSphinx(sandbox_dir, doc_dir, doctree_dir, relax=True) as app:
        publisher = ConfluencePublisher()
        publisher.init(app.config)
        publisher.connect()

        while True:
            data = {
                'labels': [],
            }

            with open(raw_file, 'r') as f:
                data['content'] = f.read()

            print('[sandbox] publishing page...')
            try:
                publisher.storePage('raw', data)
            except ConfluenceBadApiError as ex:
                print('[sandbox] failed to publish content:', ex)

            print('[sandbox] any key to retry; q to quit')
            if input().lower() == 'q':
                break
    def test_toctree_hidden(self):
        dataset = os.path.join(self.test_dir, 'dataset-hidden')
        expected = os.path.join(self.test_dir, 'expected-hidden')
        doc_dir, doctree_dir = prepareDirectories('dataset-hidden')
        buildSphinx(dataset, doc_dir, doctree_dir, self.config)

        assertExpectedWithOutput(self, 'index', expected, doc_dir)
    def setUpClass(cls):
        enableSphinxStatus()

        # build configuration
        cls.config = prepareConfiguration()
        cls.config['confluence_disable_notifications'] = True
        cls.config['confluence_page_hierarchy'] = True
        cls.config['confluence_parent_page'] = DEFAULT_TEST_BASE
        cls.config['confluence_publish'] = True
        cls.config['confluence_space_name'] = DEFAULT_TEST_SPACE
        cls.config['confluence_server_url'] = DEFAULT_TEST_URL
        cls.config['confluence_server_user'] = DEFAULT_TEST_USER
        cls.config['confluence_timeout'] = 1
        cls.test_desc = DEFAULT_TEST_DESC
        cls.test_key = DEFAULT_TEST_KEY

        # overrides from user
        try:
            from validation_test_overrides import config_overrides
            cls.config.update(config_overrides)
        except ImportError:
            pass
        try:
            from validation_test_overrides import config_test_desc
            cls.test_desc = config_test_desc
        except ImportError:
            pass
        try:
            from validation_test_overrides import config_test_key
            cls.test_key = config_test_key
        except ImportError:
            pass

        # finalize configuration
        cls.config['confluence_publish_prefix'] = ''
        cls.config['confluence_purge'] = False
        cls.config['rst_epilog'] = """
.. |test_key| replace:: {}
.. |test_desc| replace:: {}
""".format(cls.test_key, cls.test_desc)

        # find validate-sets base folder
        test_dir = os.path.dirname(os.path.realpath(__file__))
        cls.datasets = os.path.join(test_dir, 'validation-sets')

        # setup base structure
        dataset = os.path.join(cls.datasets, 'base')
        doc_dir, doctree_dir = prepareDirectories('validation-set-base')

        # build/publish test base page
        buildSphinx(dataset, doc_dir, doctree_dir, cls.config)

        # finalize configuration for tests
        cls.config['confluence_master_homepage'] = False
        cls.config['confluence_purge'] = True
        cls.config['confluence_purge_from_master'] = True
        if cls.test_key != DEFAULT_TEST_KEY:
            cls.config['confluence_publish_prefix'] = '{}-'.format(cls.test_key)
        cls.config['confluence_parent_page'] = cls.test_key
    def test_highlights_set(self):
        config = dict(self.config)
        config['highlight_language'] = 'none'

        expected = os.path.join(self.test_dir, 'expected-hs')
        doc_dir, doctree_dir = prepareDirectories('literal-markup-hs')
        buildSphinx(self.dataset, doc_dir, doctree_dir, config)
        assertExpectedWithOutput(self, 'index', expected, doc_dir)
    def test_override_lang(self):
        config = dict(self.config)
        config['confluence_lang_transform'] = test_override_lang_method

        expected = os.path.join(self.test_dir, 'expected-ol')
        doc_dir, doctree_dir = prepareDirectories('literal-markup-ol')
        buildSphinx(self.dataset, doc_dir, doctree_dir, config)
        assertExpectedWithOutput(self, 'index', expected, doc_dir)
Example #6
0
 def test_manpage_without_config(self):
     doc_dir, doctree_dir = prepareDirectories('manpage-noconf')
     buildSphinx(self.dataset, doc_dir, doctree_dir, self.config)
     assertExpectedWithOutput(self,
                              'manpage-noconf',
                              self.expected,
                              doc_dir,
                              tpn='index')
    def test_nonjsonresponse(self):
        config = dict(self.config)
        config['confluence_server_url'] = 'https://example.com/'
        dataset = os.path.join(self.datasets, 'base')
        doc_dir, doctree_dir = prepareDirectories('validation-set-nonjsonresponse')

        with self.assertRaises(ConfluenceBadApiError):
            buildSphinx(dataset, doc_dir, doctree_dir, config)
    def test_common(self):
        config = dict(self.config)
        config['imgmath_image_format'] = 'svg'

        dataset = os.path.join(self.datasets, 'common')
        doc_dir, doctree_dir = prepareDirectories('validation-set-common')

        buildSphinx(dataset, doc_dir, doctree_dir, config)
 def test_headings_default(self):
     doc_dir, doctree_dir = prepareDirectories('headings-default')
     buildSphinx(self.dataset, doc_dir, doctree_dir, self.config)
     assertExpectedWithOutput(self,
                              'headings-default',
                              self.expected,
                              doc_dir,
                              tpn='headings')
Example #10
0
 def test_alignment_default(self):
     doc_dir, doctree_dir = prepareDirectories('alignment-center')
     buildSphinx(self.dataset, doc_dir, doctree_dir, self.config)
     assertExpectedWithOutput(self,
                              'alignment-center',
                              self.expected,
                              doc_dir,
                              tpn='index')
    def test_singlepage_numbered(self):
        dataset = os.path.join(self.test_dir, 'dataset-numbered')
        expected = os.path.join(self.test_dir, 'expected-numbered')
        doc_dir, doctree_dir = prepareDirectories('singlepage-numbered')
        buildSphinx(dataset, doc_dir, doctree_dir, self.config,
            builder='singleconfluence')

        assertExpectedWithOutput(self, 'index', expected, doc_dir)
Example #12
0
    def setUpClass(self):
        self.test_dir = os.path.dirname(os.path.realpath(__file__))
        self.dataset_base = os.path.join(self.test_dir, 'dataset-metadata')

        self.config = prepareConfiguration()

        doc_dir, doctree_dir = prepareDirectories('metadata')
        self.doc_dir = doc_dir
        self.doctree_dir = doctree_dir
Example #13
0
 def build_document_given_dataset(self, dataset):
     config = prepareConfiguration()
     doc_dir, doctree_dir = prepareDirectories('image-star')
     buildSphinx(dataset,
                 doc_dir,
                 doctree_dir,
                 config,
                 builder='singleconfluence')
     return doc_dir
    def test_hierarchy(self):
        config = dict(self.config)
        config['confluence_max_doc_depth'] = 2
        config['confluence_page_hierarchy'] = True

        dataset = os.path.join(self.datasets, 'hierarchy')
        doc_dir, doctree_dir = prepareDirectories('validation-set-hierarchy')

        buildSphinx(dataset, doc_dir, doctree_dir, config)
    def test_toctree_numbered_secnumbers_depth(self):
        config = dict(self.config)
        dataset = os.path.join(self.test_dir, 'dataset-numbered-depth')
        expected = os.path.join(self.test_dir, 'expected-numbered-depth')
        doc_dir, doctree_dir = prepareDirectories('toctree-markup-numbered-depth')
        buildSphinx(dataset, doc_dir, doctree_dir, config)

        assertExpectedWithOutput(self, 'index', expected, doc_dir)
        assertExpectedWithOutput(self, 'doc1', expected, doc_dir)
        assertExpectedWithOutput(self, 'doc2', expected, doc_dir)
    def test_header_footer(self):
        config = dict(self.config)

        dataset = os.path.join(self.datasets, 'header-footer')
        doc_dir, doctree_dir = prepareDirectories('validation-set-hf')

        config['confluence_header_file'] = os.path.join(dataset, 'header.tpl')
        config['confluence_footer_file'] = os.path.join(dataset, 'footer.tpl')

        buildSphinx(dataset, doc_dir, doctree_dir, config)
    def setUpClass(self):
        self.config = prepareConfiguration()
        test_dir = os.path.dirname(os.path.realpath(__file__))
        dataset = os.path.join(test_dir, 'dataset')
        self.expected = os.path.join(test_dir, 'expected')

        doc_dir, doctree_dir = prepareDirectories('literal-markup')
        buildSphinx(dataset, doc_dir, doctree_dir, self.config)

        self.doc_dir = doc_dir
Example #18
0
    def test_contents_default(self):
        dataset = os.path.join(self.test_dir, 'dataset-contents')
        doc_dir, doctree_dir = prepareDirectories('contents-default')
        buildSphinx(dataset, doc_dir, doctree_dir, self.config)

        with parse('sub', doc_dir) as data:
            top_link = data.find('a')
            self.assertIsNotNone(top_link, 'unable to find first link tag (a)')
            self.assertEqual(top_link['href'], '#top',
                             'contents root document not a top reference')
    def test_toctree_default(self):
        dataset = os.path.join(self.test_dir, 'dataset')
        expected = os.path.join(self.test_dir, 'expected-def')
        doc_dir, doctree_dir = prepareDirectories('toctree-markup-def')
        buildSphinx(dataset, doc_dir, doctree_dir, self.config)

        assertExpectedWithOutput(self, 'index', expected, doc_dir)
        assertExpectedWithOutput(self, 'doca', expected, doc_dir)
        assertExpectedWithOutput(self, 'docb', expected, doc_dir)
        assertExpectedWithOutput(self, 'docc', expected, doc_dir)
Example #20
0
    def test_headings_with_title(self):
        config = dict(self.config)
        config['confluence_remove_title'] = False

        doc_dir, doctree_dir = prepareDirectories('headings-with-title')
        buildSphinx(self.dataset, doc_dir, doctree_dir, config)
        assertExpectedWithOutput(self,
                                 'headings-with-title',
                                 self.expected,
                                 doc_dir,
                                 tpn='headings')
Example #21
0
def process_sandbox(target_sandbox, builder=None, defines=None):
    test_dir = os.path.dirname(os.path.realpath(__file__))
    sandbox_dir = os.path.join(test_dir, target_sandbox)

    doc_dir, doctree_dir = prepareDirectories('sandbox-test')
    buildSphinx(sandbox_dir,
                doc_dir,
                doctree_dir,
                builder=builder,
                extra_config=defines,
                relax=True)
    def test_prevnext_top(self):
        config = dict(self.config)
        config['confluence_prev_next_buttons_location'] = 'top'

        doc_dir, doctree_dir = prepareDirectories('prevnext-top')

        with prepareSphinx(self.dataset, doc_dir, doctree_dir, config) as app:
            app.build(force_all=True)
            self._character_check('index', doc_dir, {'←': 0, '→': 1})
            self._character_check('middle', doc_dir, {'←': 1, '→': 1})
            self._character_check('final', doc_dir, {'←': 1, '→': 0})
Example #23
0
    def test_manpage_with_config(self):
        config = dict(self.config)
        config['manpages_url'] = 'https://manpages.example.com/{path}'

        doc_dir, doctree_dir = prepareDirectories('manpage-conf')
        buildSphinx(self.dataset, doc_dir, doctree_dir, config)
        assertExpectedWithOutput(self,
                                 'manpage-conf',
                                 self.expected,
                                 doc_dir,
                                 tpn='index')
    def test_toctree_numbered_disable(self):
        config = dict(self.config)
        config['confluence_add_secnumbers'] = False
        dataset = os.path.join(self.test_dir, 'dataset-numbered')
        expected = os.path.join(self.test_dir, 'expected-numbered-disabled')
        doc_dir, doctree_dir = prepareDirectories('toctree-markup-numbered-disabled')
        buildSphinx(dataset, doc_dir, doctree_dir, config)

        assertExpectedWithOutput(self, 'index', expected, doc_dir)
        assertExpectedWithOutput(self, 'doc1', expected, doc_dir)
        assertExpectedWithOutput(self, 'doc2', expected, doc_dir)
Example #25
0
    def run(self, result=None):
        # prepare a dummy application; no need to actually build
        self.config = {'extensions': EXT_NAME}
        self.test_dir = os.path.dirname(os.path.realpath(__file__))
        self.mock_ds = os.path.join(self.test_dir, 'dataset-common')
        self.doc_dir, self.doctree_dir = prepareDirectories('config-dummy')

        # legacy
        with self._build_app() as app:
            self.app = app
            super(TestConfluenceConfig, self).run(result)
Example #26
0
    def test_alignment_right(self):
        config = dict(self.config)
        config['confluence_default_alignment'] = 'right'

        doc_dir, doctree_dir = prepareDirectories('alignment-right')
        buildSphinx(self.dataset, doc_dir, doctree_dir, config)
        assertExpectedWithOutput(self,
                                 'alignment-right',
                                 self.expected,
                                 doc_dir,
                                 tpn='index')
Example #27
0
    def test_docname_and_docparent(self):
        mock_ds = os.path.join(self.test_dir, 'dataset-common')
        doc_dir, doctree_dir = prepareDirectories('config-dummy')
        mock_docpath = os.path.join(mock_ds, 'foo', 'bar', 'baz.rst')
        doc = DummyDocument(mock_docpath)

        # prepare a dummy application; no need to actually build
        with prepareSphinx(mock_ds, doc_dir, doctree_dir, self.config) as app:
            translator = ConfluenceBaseTranslator(doc, app.builder)

        self.assertEqual(translator.docname, 'foo/bar/baz')
        self.assertEqual(translator.docparent, 'foo/bar/')
    def test_autodocs(self):
        config = dict(self.config)
        config['extensions'].append('sphinx.ext.autodoc')
        config['extensions'].append('sphinx.ext.autosummary')

        dataset = os.path.join(self.datasets, 'auto-ext')
        doc_dir, doctree_dir = prepareDirectories('validation-set-auto')
        sys.path.insert(0, os.path.join(dataset, 'src'))

        buildSphinx(dataset, doc_dir, doctree_dir, config)

        sys.path.pop(0)
Example #29
0
def process_sandbox(target_sandbox, builder=None, defines=None):
    test_dir = os.path.dirname(os.path.realpath(__file__))
    base_dir = os.path.join(test_dir, os.pardir)
    sandbox_dir = os.path.join(base_dir, target_sandbox)

    container = 'sandbox-test'
    if builder:
        container += '-' + builder

    doc_dir, doctree_dir = prepareDirectories(container)
    buildSphinx(sandbox_dir, doc_dir, doctree_dir, builder=builder,
        extra_config=defines, relax=True)
    def test_singlepage_contents_numbered(self):
        dataset = os.path.join(self.test_dir, 'dataset-contents-numbered')
        doc_dir, doctree_dir = prepareDirectories('singlepage-contents-numberd')
        buildSphinx(dataset, doc_dir, doctree_dir, self.config,
            builder='singleconfluence')

        with parse('index', doc_dir) as data:
            links = data.find_all('ac:link')
            self.assertEqual(len(links), 3)
            self.assertEqual(links[0]['ac:anchor'], '1. sub')
            self.assertEqual(links[1]['ac:anchor'], '1.1. section')
            self.assertEqual(links[2]['ac:anchor'], '1.2. section')