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)
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')
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)
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
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
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)
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')
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})
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)
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)
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')
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)
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')