def test_get_layout(self): src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_layout_old_post.md') generator = PageGenerator(self.config, self.base_path, src_file_path) meta, _ = generator.get_meta_and_content() layout = generator.get_layout(meta) self.assertEqual(layout, 'page') src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_layout_without_layout.md') generator = PageGenerator(self.config, self.base_path, src_file_path) meta, _ = generator.get_meta_and_content() layout = generator.get_layout(meta) self.assertEqual(layout, 'page')
def test_get_layout(self): src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_layout_old_post.md') generator = PageGenerator(self.config, self.base_path, src_file_path) meta, _ = generator.get_meta_and_content() layout = generator.get_layout(meta) self.assertEqual(layout, 'page') src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_layout_without_layout.md') generator = PageGenerator(self.config, self.base_path, src_file_path) meta, _ = generator.get_meta_and_content() layout = generator.get_layout(meta) self.assertEqual(layout, 'page')
def test_get_meta_and_content(self): src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_中文.md') generator = PageGenerator(self.config, self.base_path, src_file_path) meta, content = generator.get_meta_and_content() expected_meta = { 'date': '2013-10-17 00:03', 'layout': 'page', 'title': 'Foo Page 2' } self.assertEqual(meta, expected_meta) self.assertEqual( content, '<p>Simiki is a simple wiki ' 'framework, written in Python.</p>') # get meta notaion error src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_中文_meta_error_1.md') generator = PageGenerator(self.config, self.base_path, src_file_path) self.assertRaises(Exception, generator.get_meta_and_content) src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_中文_meta_error_2.md') generator = PageGenerator(self.config, self.base_path, src_file_path) self.assertRaises(Exception, generator.get_meta_and_content)
def generate_tags(self): g = PageGenerator(self.config, self.target_path) for root, dirs, files in os.walk(self.config["source"]): files = [f for f in files if not f.startswith(".")] dirs[:] = [d for d in dirs if not d.startswith(".")] for filename in files: if not filename.endswith(self.config["default_ext"]): continue md_file = os.path.join(root, filename) g.src_file = md_file meta, _ = g.get_meta_and_content(do_render=False) _tags = meta.get('tag') or [] # if None for t in _tags: self.tags.setdefault(t, []).append(meta)
def generate_tags(self): g = PageGenerator(self.config, self.target_path) for root, dirs, files in os.walk(self.config["source"]): files = [f for f in files if not f.startswith(".")] dirs[:] = [d for d in dirs if not d.startswith(".")] for filename in files: if not filename.endswith(self.config["default_ext"]): continue md_file = os.path.join(root, filename) g.src_file = md_file meta, _ = g.get_meta_and_content(do_render=False) _tags = meta.get('tag') or [] # if None for t in _tags: self.tags.setdefault(t, []).append(meta)
def generate_catalog(): pg = PageGenerator(_site_config, _base_path) pages = {} for root, dirs, files in os.walk(_site_config["source"]): files = [f for f in files if not f.startswith(".")] dirs[:] = [d for d in dirs if not d.startswith(".")] for filename in files: if not filename.endswith(_site_config["default_ext"]): continue md_file = os.path.join(root, filename) pg.src_file = md_file meta, _ = pg.get_meta_and_content(do_render=False) pages[md_file] = meta cg = CatalogGenerator(_site_config, _base_path, pages) html = cg.generate_catalog_html() ofile = os.path.join(_base_path, _site_config['destination'], "index.html") write_file(ofile, html) logging.debug('Regenerating catalog')
def test_get_template_vars(self): src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_中文.md') generator = PageGenerator(self.config, self.base_path, src_file_path) meta, content = generator.get_meta_and_content() template_vars = generator.get_template_vars(meta, content) expected_template_vars = { u'page': { u'category': u'foo\u76ee\u5f55', u'content': u'<p>Simiki is a simple wiki ' 'framework, written in Python.</p>', 'date': '2013-10-17 00:03', 'layout': 'page', 'title': 'Foo Page 2' }, u'site': get_default_config() } expected_template_vars['site'].update({'root': ''}) template_vars['site'].pop('time') expected_template_vars['site'].pop('time') assert template_vars == expected_template_vars
def test_get_template_vars(self): src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_中文.md') generator = PageGenerator(self.config, self.base_path, src_file_path) meta, content = generator.get_meta_and_content() template_vars = generator.get_template_vars(meta, content) expected_template_vars = { u'page': { u'category': u'foo\u76ee\u5f55', u'content': u'<p>Simiki is a simple wiki ' 'framework, written in Python.</p>', 'date': '2013-10-17 00:03', 'layout': 'page', 'title': 'Foo Page 2' }, u'site': get_default_config() } expected_template_vars['site'].update({'root': ''}) template_vars['site'].pop('time') expected_template_vars['site'].pop('time') assert template_vars == expected_template_vars
def test_get_meta_and_content(self): src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_中文.md') generator = PageGenerator(self.config, self.base_path, src_file_path) meta, content = generator.get_meta_and_content() expected_meta = {'date': '2013-10-17 00:03', 'layout': 'page', 'title': 'Foo Page 2'} self.assertEqual(meta, expected_meta) self.assertEqual(content, '<p>Simiki is a simple wiki ' 'framework, written in Python.</p>') # get meta notaion error src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_中文_meta_error_1.md') generator = PageGenerator(self.config, self.base_path, src_file_path) self.assertRaises(Exception, generator.get_meta_and_content) src_file_path = os.path.join(TESTS_ROOT, 'content', 'foo目录', 'foo_page_中文_meta_error_2.md') generator = PageGenerator(self.config, self.base_path, src_file_path) self.assertRaises(Exception, generator.get_meta_and_content)
def generate_catalog(): pg = PageGenerator(_site_config, _base_path) pages = {} for root, dirs, files in os.walk(_site_config["source"]): files = [f for f in files if not f.startswith(".")] dirs[:] = [d for d in dirs if not d.startswith(".")] for filename in files: if not filename.endswith(_site_config["default_ext"]): continue md_file = os.path.join(root, filename) pg.src_file = md_file meta, _ = pg.get_meta_and_content(do_render=False) pages[md_file] = meta cg = CatalogGenerator(_site_config, _base_path, pages) html = cg.generate_catalog_html() ofile = os.path.join( _base_path, _site_config['destination'], "index.html" ) write_file(ofile, html) logging.debug('Regenerating catalog')
class TestPageGenerator(unittest.TestCase): def setUp(self): self.wiki_path = os.path.join(test_path, 'mywiki_for_generator') os.chdir(self.wiki_path) self.config_file = os.path.join(base_path, 'simiki', 'conf_templates', '_config.yml.in') self.config = parse_config(self.config_file) s_themes_path = os.path.join(base_path, 'simiki', 'themes') self.d_themes_path = os.path.join('./', 'themes') if os.path.exists(self.d_themes_path): shutil.rmtree(self.d_themes_path) copytree(s_themes_path, self.d_themes_path) self.generator = PageGenerator(self.config, self.wiki_path) def test_get_category_and_file(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') self.generator.src_file = src_file category, filename = self.generator.get_category_and_file() self.assertEqual( (category, filename), (u'foo\u76ee\u5f55', u'foo_page_\u4e2d\u6587.md') ) def test_get_meta_and_content(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') self.generator.src_file = src_file meta, content = self.generator.get_meta_and_content() expected_meta = {'date': '2013-10-17 00:03', 'layout': 'page', 'title': 'Foo Page 2'} self.assertEqual(meta, expected_meta) self.assertEqual(content, '<p>Simiki is a simple wiki ' 'framework, written in Python.</p>') # get meta notaion error src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文_meta_error_1.md') self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文_meta_error_2.md') self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) def test_get_template_vars(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') self.generator.src_file = src_file meta, content = self.generator.get_meta_and_content() template_vars = self.generator.get_template_vars(meta, content) expected_template_vars = { u'page': { u'category': u'foo\u76ee\u5f55', u'content': u'<p>Simiki is a simple wiki ' 'framework, written in Python.</p>', u'filename': u'foo_page_\u4e2d\u6587.html', u'date': '2013-10-17 00:03', u'layout': 'page', u'title': 'Foo Page 2' }, u'site': get_default_config() } expected_template_vars['site'].update({'root': ''}) template_vars['site'].pop('time') expected_template_vars['site'].pop('time') assert template_vars == expected_template_vars def test_to_html(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') html = self.generator.to_html(src_file).strip() expected_output = os.path.join(self.wiki_path, 'expected_output.html') fd = open(expected_output, "rb") year = datetime.date.today().year expected_html = unicode(fd.read(), "utf-8") % year assert html == expected_html # load template error src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') self.assertRaises(Exception, PageGenerator, self.config, 'wrong_basepath', src_file) def test_get_layout(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_layout_old_post.md') self.generator.src_file = src_file meta, _ = self.generator.get_meta_and_content() layout = self.generator.get_layout(meta) self.assertEqual(layout, 'page') src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_layout_without_layout.md') self.generator.src_file = src_file meta, _ = self.generator.get_meta_and_content() layout = self.generator.get_layout(meta) self.assertEqual(layout, 'page') def test_get_meta(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_get_meta_yaml_error.md') self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_get_meta_without_title.md') self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) def tearDown(self): if os.path.exists(self.d_themes_path): shutil.rmtree(self.d_themes_path)
class TestPageGenerator(unittest.TestCase): def setUp(self): self.wiki_path = os.path.join(test_path, 'mywiki_for_generator') os.chdir(self.wiki_path) self.config_file = os.path.join(base_path, 'simiki', 'conf_templates', '_config.yml.in') self.config = parse_config(self.config_file) s_themes_path = os.path.join(base_path, 'simiki', 'themes') self.d_themes_path = os.path.join('./', 'themes') if os.path.exists(self.d_themes_path): shutil.rmtree(self.d_themes_path) copytree(s_themes_path, self.d_themes_path) self.generator = PageGenerator(self.config, self.wiki_path) def test_get_category_and_file(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') self.generator.src_file = src_file category, filename = self.generator.get_category_and_file() self.assertEqual((category, filename), (u'foo\u76ee\u5f55', u'foo_page_\u4e2d\u6587.md')) def test_get_meta_and_content(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') self.generator.src_file = src_file meta, content = self.generator.get_meta_and_content() expected_meta = { 'date': '2013-10-17 00:03', 'layout': 'page', 'title': 'Foo Page 2' } self.assertEqual(meta, expected_meta) self.assertEqual( content, '<p>Simiki is a simple wiki ' 'framework, written in Python.</p>') # get meta notaion error src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文_meta_error_1.md') self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文_meta_error_2.md') self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) def test_get_template_vars(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') self.generator.src_file = src_file meta, content = self.generator.get_meta_and_content() template_vars = self.generator.get_template_vars(meta, content) expected_template_vars = { u'page': { u'category': u'foo\u76ee\u5f55', u'content': u'<p>Simiki is a simple wiki ' 'framework, written in Python.</p>', u'filename': u'foo_page_\u4e2d\u6587.html', u'date': '2013-10-17 00:03', u'layout': 'page', u'title': 'Foo Page 2' }, u'site': get_default_config() } expected_template_vars['site'].update({'root': ''}) template_vars['site'].pop('time') expected_template_vars['site'].pop('time') assert template_vars == expected_template_vars def test_to_html(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') html = self.generator.to_html(src_file).strip() expected_output = os.path.join(self.wiki_path, 'expected_output.html') fd = open(expected_output, "rb") year = datetime.date.today().year expected_html = unicode(fd.read(), "utf-8") % year assert html == expected_html # load template error src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_中文.md') self.assertRaises(Exception, PageGenerator, self.config, 'wrong_basepath', src_file) def test_get_layout(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_layout_old_post.md') self.generator.src_file = src_file meta, _ = self.generator.get_meta_and_content() layout = self.generator.get_layout(meta) self.assertEqual(layout, 'page') src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_layout_without_layout.md') self.generator.src_file = src_file meta, _ = self.generator.get_meta_and_content() layout = self.generator.get_layout(meta) self.assertEqual(layout, 'page') def test_get_meta(self): src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_get_meta_yaml_error.md') self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) src_file = os.path.join(self.wiki_path, 'content', 'foo目录', 'foo_page_get_meta_without_title.md') self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) def tearDown(self): if os.path.exists(self.d_themes_path): shutil.rmtree(self.d_themes_path)
class TestPageGenerator(unittest.TestCase): def setUp(self): self.default_config = get_default_config() self.wiki_path = os.path.join(test_path, "mywiki_for_generator") os.chdir(self.wiki_path) self.config_file = os.path.join(base_path, "simiki", "conf_templates", "_config.yml.in") self.config = parse_config(self.config_file) s_themes_path = os.path.join(base_path, "simiki", self.default_config["themes_dir"]) self.d_themes_path = os.path.join("./", self.default_config["themes_dir"]) if os.path.exists(self.d_themes_path): shutil.rmtree(self.d_themes_path) copytree(s_themes_path, self.d_themes_path) self.generator = PageGenerator(self.config, self.wiki_path) def test_get_category_and_file(self): src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_中文.md") self.generator.src_file = src_file category, filename = self.generator.get_category_and_file() self.assertEqual((category, filename), ("foo\u76ee\u5f55", "foo_page_\u4e2d\u6587.md")) def test_get_meta_and_content(self): src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_中文.md") self.generator.src_file = src_file meta, content = self.generator.get_meta_and_content() expected_meta = { "date": "2013-10-17 00:03", "layout": "page", "title": "Foo Page 2", "category": "foo目录", "filename": "foo_page_中文.html", } self.assertEqual(meta, expected_meta) self.assertEqual(content, "<p>Simiki is a simple wiki " "framework, written in Python.</p>") # get meta notaion error src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_中文_meta_error_1.md") self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_中文_meta_error_2.md") self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) def test_get_template_vars(self): src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_中文.md") self.generator.src_file = src_file meta, content = self.generator.get_meta_and_content() template_vars = self.generator.get_template_vars(meta, content) expected_template_vars = { "page": { "category": "foo\u76ee\u5f55", "content": "<p>Simiki is a simple wiki " "framework, written in Python.</p>", "filename": "foo_page_\u4e2d\u6587.html", "date": "2013-10-17 00:03", "layout": "page", "relation": [], "title": "Foo Page 2", }, "site": get_default_config(), } expected_template_vars["site"].update({"root": ""}) template_vars["site"].pop("time") expected_template_vars["site"].pop("time") assert template_vars == expected_template_vars def test_to_html(self): src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_中文.md") html = self.generator.to_html(src_file).strip() # trip page updated and site generated paragraph html = re.sub('(?sm)\\n\s*<span class="updated">Updated.*?<\/span>', "", html) html = re.sub("(?m)^\s*<p>Site Generated .*?<\/p>$\n", "", html) expected_output = os.path.join(self.wiki_path, "expected_output.html") fd = open(expected_output, "rb") year = datetime.date.today().year expected_html = unicode(fd.read(), "utf-8") % year assert html == expected_html # load template error src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_中文.md") self.assertRaises(Exception, PageGenerator, self.config, "wrong_basepath", src_file) def test_get_layout(self): src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_layout_old_post.md") self.generator.src_file = src_file meta, _ = self.generator.get_meta_and_content() layout = self.generator.get_layout(meta) self.assertEqual(layout, "page") src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_layout_without_layout.md") self.generator.src_file = src_file meta, _ = self.generator.get_meta_and_content() layout = self.generator.get_layout(meta) self.assertEqual(layout, "page") def test_get_meta(self): src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_get_meta_yaml_error.md") self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) src_file = os.path.join(self.wiki_path, "content", "foo目录", "foo_page_get_meta_without_title.md") self.generator.src_file = src_file self.assertRaises(Exception, self.generator.get_meta_and_content) def tearDown(self): if os.path.exists(self.d_themes_path): shutil.rmtree(self.d_themes_path)