示例#1
0
    def test_generate_output(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['STATIC_PATHS'] = ['static']
        settings['TEMPLATE_PAGES'] = {
                'template/source.html': 'generated/file.html'
                }

        generator = TemplatePagesGenerator({'foo': 'bar'}, settings,
                self.temp_content, '', self.temp_output, None)

        # create a dummy template file
        template_dir = os.path.join(self.temp_content, 'template')
        template_filename = os.path.join(template_dir, 'source.html')
        os.makedirs(template_dir)
        with open(template_filename, 'w') as template_file:
            template_file.write(self.TEMPLATE_CONTENT)

        writer = Writer(self.temp_output, settings=settings)
        generator.generate_output(writer)

        output_filename = os.path.join(
                self.temp_output, 'generated', 'file.html')

        # output file has been generated
        self.assertTrue(os.path.exists(output_filename))

        # output content is correct
        with open(output_filename, 'r') as output_file:
            self.assertEquals(output_file.read(), 'foo: bar')
示例#2
0
    def test_generate_output(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['STATIC_PATHS'] = ['static']
        settings['TEMPLATE_PAGES'] = {
                'template/source.html': 'generated/file.html'
                }

        generator = TemplatePagesGenerator({'foo': 'bar'}, settings,
                self.temp_content, '', self.temp_output, None)

        # create a dummy template file
        template_dir = os.path.join(self.temp_content, 'template')
        template_filename = os.path.join(template_dir, 'source.html')
        os.makedirs(template_dir)
        with open(template_filename, 'w') as template_file:
            template_file.write(self.TEMPLATE_CONTENT)

        writer = Writer(self.temp_output, settings=settings)
        generator.generate_output(writer)

        output_filename = os.path.join(
                self.temp_output, 'generated', 'file.html')

        # output file has been generated
        self.assertTrue(os.path.exists(output_filename))

        # output content is correct
        with open(output_filename, 'r') as output_file:
            self.assertEquals(output_file.read(), 'foo: bar')
示例#3
0
    def test_generate_context(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['ARTICLE_DIR'] = 'content'
        settings['DEFAULT_CATEGORY'] = 'Default'
        generator = ArticlesGenerator(settings.copy(), settings, CUR_DIR,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        generator.generate_context()
        for article in generator.articles:
            relfilepath = os.path.relpath(article.filename, CUR_DIR)
            if relfilepath == os.path.join("TestCategory",
                                           "article_with_category.rst"):
                self.assertEquals(article.category.name, 'yeah')
            elif relfilepath == os.path.join("TestCategory",
                                             "article_without_category.rst"):
                self.assertEquals(article.category.name, 'TestCategory')
            elif relfilepath == "article_without_category.rst":
                self.assertEquals(article.category.name, 'Default')

        categories = [cat.name for cat, _ in generator.categories]
        # assert that the categories are ordered as expected
        self.assertEquals(
                categories, ['Default', 'TestCategory', 'Yeah', 'test',
                             'yeah'])
示例#4
0
    def test_do_not_use_folder_as_category(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['ARTICLE_DIR'] = 'content'
        settings['DEFAULT_CATEGORY'] = 'Default'
        settings['DEFAULT_DATE'] = (1970, 1, 1)
        settings['USE_FOLDER_AS_CATEGORY'] = False
        settings['filenames'] = {}
        generator = ArticlesGenerator(settings.copy(), settings, CUR_DIR,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        generator.generate_context()
        # test for name
        # categories are grouped by slug; if two categories have the same slug
        # but different names they will be grouped together, the first one in
        # terms of process order will define the name for that category
        categories = [cat.name for cat, _ in generator.categories]
        categories_alternatives = (
            sorted(['Default', 'Yeah', 'test', '指導書']),
            sorted(['Default', 'yeah', 'test', '指導書']),
        )
        self.assertTrue(sorted(categories) in categories_alternatives)
        # test for slug
        categories = [cat.slug for cat, _ in generator.categories]
        categories_expected = ['default', 'yeah', 'test', 'zhi-dao-shu']
        self.assertEqual(sorted(categories), sorted(categories_expected))
示例#5
0
    def test_less_compiler(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['STATIC_PATHS'] = ['static']
        settings['LESS_GENERATOR'] = True

        generator = LessCSSGenerator(None, settings, self.temp_content,
                        _DEFAULT_CONFIG['THEME'], self.temp_output, None)

        # create a dummy less file
        less_dir = os.path.join(self.temp_content, 'static', 'css')
        less_filename = os.path.join(less_dir, 'test.less')

        less_output = os.path.join(self.temp_output, 'static', 'css',
                            'test.css')

        os.makedirs(less_dir)
        with open(less_filename, 'w') as less_file:
            less_file.write(self.LESS_CONTENT)

        generator.generate_output()

        # we have the file ?
        self.assertTrue(os.path.exists(less_output))

        # was it compiled ?
        self.assertIsNotNone(re.search(r'^\s+color:\s*#4D926F;$',
            open(less_output).read(), re.MULTILINE | re.IGNORECASE))
示例#6
0
    def test_generate_output(self):

        settings = _DEFAULT_CONFIG.copy()
        settings["STATIC_PATHS"] = ["static"]
        settings["TEMPLATE_PAGES"] = {"template/source.html": "generated/file.html"}

        generator = TemplatePagesGenerator({"foo": "bar"}, settings, self.temp_content, "", self.temp_output, None)

        # create a dummy template file
        template_dir = os.path.join(self.temp_content, "template")
        template_filename = os.path.join(template_dir, "source.html")
        os.makedirs(template_dir)
        with open(template_filename, "w") as template_file:
            template_file.write(self.TEMPLATE_CONTENT)

        writer = Writer(self.temp_output, settings=settings)
        generator.generate_output(writer)

        output_filename = os.path.join(self.temp_output, "generated", "file.html")

        # output file has been generated
        self.assertTrue(os.path.exists(output_filename))

        # output content is correct
        with open(output_filename, "r") as output_file:
            self.assertEquals(output_file.read(), "foo: bar")
示例#7
0
    def test_less_compiler(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['STATIC_PATHS'] = ['static']
        settings['LESS_GENERATOR'] = True

        # we'll nest here for py < 2.7 compat
        with temporary_folder() as temp_content:
            with temporary_folder() as temp_output:
                generator = LessCSSGenerator(None, settings, temp_content,
                                _DEFAULT_CONFIG['THEME'], temp_output, None)

                # create a dummy less file
                less_dir = os.path.join(temp_content, 'static', 'css')
                less_filename = os.path.join(less_dir, 'test.less')

                less_output = os.path.join(temp_output, 'static', 'css',
                                    'test.css')

                os.makedirs(less_dir)
                with open(less_filename, 'w') as less_file:
                    less_file.write(self.LESS_CONTENT)

                generator.generate_output()

                # we have the file ?
                self.assertTrue(os.path.exists(less_output))

                # was it compiled ?
                self.assertIsNotNone(re.search(r'^\s+color:\s*#4D926F;$',
                    open(less_output).read(), re.MULTILINE | re.IGNORECASE))
示例#8
0
    def test_generate_context(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['ARTICLE_DIR'] = 'content'
        settings['DEFAULT_CATEGORY'] = 'Default'
        generator = ArticlesGenerator(settings.copy(), settings, CUR_DIR,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        generator.generate_context()
        for article in generator.articles:
            relfilepath = os.path.relpath(article.filename, CUR_DIR)
            if relfilepath == os.path.join("TestCategory",
                                           "article_with_category.rst"):
                self.assertEquals(article.category.name, 'yeah')
            elif relfilepath == os.path.join("TestCategory",
                                             "article_without_category.rst"):
                self.assertEquals(article.category.name, 'TestCategory')
            elif relfilepath == "article_without_category.rst":
                self.assertEquals(article.category.name, 'Default')

        categories = [cat.name for cat, _ in generator.categories]
        # assert that the categories are ordered as expected
        self.assertEquals(
                categories, ['Default', 'TestCategory', 'Yeah', 'test',
                             'yeah'])
示例#9
0
    def test_generate_context(self):
        settings = _DEFAULT_CONFIG.copy()

        settings['PAGE_DIR'] = 'TestPages'
        settings['DEFAULT_DATE'] = (1970, 01, 01)
        generator = PagesGenerator(settings.copy(), settings, CUR_DIR,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        generator.generate_context()
        pages = self.distill_pages(generator.pages)
        hidden_pages = self.distill_pages(generator.hidden_pages)

        pages_expected = [
            [u'This is a test page', 'published', 'page'],
            [u'This is a markdown test page', 'published', 'page'],
            [u'This is a test page with a preset template', 'published', 'custom']
        ]
        hidden_pages_expected = [
            [u'This is a test hidden page', 'hidden', 'page'],
            [u'This is a markdown test hidden page', 'hidden', 'page'],
            [u'This is a test hidden page with a custom template', 'hidden', 'custom']
        ]

        self.assertItemsEqual(pages_expected,pages)
        self.assertItemsEqual(hidden_pages_expected,hidden_pages)
示例#10
0
    def test_do_not_use_folder_as_category(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['ARTICLE_DIR'] = 'content'
        settings['DEFAULT_CATEGORY'] = 'Default'
        settings['DEFAULT_DATE'] = (1970, 1, 1)
        settings['USE_FOLDER_AS_CATEGORY'] = False
        settings['filenames'] = {}
        generator = ArticlesGenerator(settings.copy(), settings,
                            CUR_DIR, _DEFAULT_CONFIG['THEME'], None,
                            _DEFAULT_CONFIG['MARKUP'])
        generator.generate_context()
        # test for name
        # categories are grouped by slug; if two categories have the same slug
        # but different names they will be grouped together, the first one in
        # terms of process order will define the name for that category
        categories = [cat.name for cat, _ in generator.categories]
        categories_alternatives = (
            sorted(['Default', 'Yeah', 'test', '指導書']),
            sorted(['Default', 'yeah', 'test', '指導書']),
        )
        self.assertTrue(sorted(categories) in categories_alternatives)
        # test for slug
        categories = [cat.slug for cat, _ in generator.categories]
        categories_expected = ['default', 'yeah', 'test', 'zhi-dao-shu']
        self.assertEqual(sorted(categories), sorted(categories_expected))
示例#11
0
 def get_generator(self, *posts):
     settings = _DEFAULT_CONFIG.copy()
     settings['ARTICLE_DIR'] = 'content'
     settings['DEFAULT_CATEGORY'] = 'Default'
     generator = ArticlesGenerator(settings.copy(), settings, TESTS_DIR,
                                   _DEFAULT_CONFIG['THEME'], None,
                                   _DEFAULT_CONFIG['MARKUP'])
     return generator
示例#12
0
 def test_metadata_url_format(self):
     # Arbitrary metadata should be passed through url_format()
     page = Page(**self.page_kwargs)
     self.assertIn('summary', page.url_format.keys())
     page.metadata['directory'] = 'test-dir'
     page.settings = _DEFAULT_CONFIG.copy()
     page.settings['PAGE_SAVE_AS'] = '{directory}/{slug}'
     self.assertEqual(page.save_as, 'test-dir/foo-bar')
示例#13
0
 def test_metadata_url_format(self):
     # Arbitrary metadata should be passed through url_format()
     page = Page(**self.page_kwargs)
     self.assertIn('summary', page.url_format.keys())
     page.metadata['directory'] = 'test-dir'
     page.settings = _DEFAULT_CONFIG.copy()
     page.settings['PAGE_SAVE_AS'] = '{directory}/{slug}'
     self.assertEqual(page.save_as, 'test-dir/foo-bar')
示例#14
0
 def test_metadata_url_format(self):
     """Arbitrary metadata should be passed through url_format()
     """
     page = Page(**self.page_kwargs)
     self.assertIn("summary", page.url_format.keys())
     page.metadata["directory"] = "test-dir"
     page.settings = _DEFAULT_CONFIG.copy()
     page.settings["PAGE_SAVE_AS"] = "{directory}/{slug}"
     self.assertEqual(page.save_as, "test-dir/foo-bar")
示例#15
0
    def test_direct_templates_save_as_false(self):

        settings = _DEFAULT_CONFIG.copy()
        settings["DIRECT_TEMPLATES"] = ["archives"]
        settings["ARCHIVES_SAVE_AS"] = "archives/index.html"
        generator = ArticlesGenerator(
            settings, settings, None, _DEFAULT_CONFIG["THEME"], None, _DEFAULT_CONFIG["MARKUP"]
        )
        write = MagicMock()
        generator.generate_direct_templates(write)
        write.assert_called_count == 0
示例#16
0
    def test_direct_templates_save_as_false(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['DIRECT_TEMPLATES'] = ['archives']
        settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
        generator = ArticlesGenerator(settings, settings, None,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        write = MagicMock()
        generator.generate_direct_templates(write)
        write.assert_called_count == 0
示例#17
0
    def test_direct_templates_save_as_false(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['DIRECT_TEMPLATES'] = ['archives']
        settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
        generator = ArticlesGenerator(settings, settings, None,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        write = MagicMock()
        generator.generate_direct_templates(write)
        write.assert_called_count == 0
示例#18
0
    def test_direct_templates_save_as_default(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['DIRECT_TEMPLATES'] = ['archives']
        generator = ArticlesGenerator(settings.copy(), settings, None,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        write = MagicMock()
        generator.generate_direct_templates(write)
        write.assert_called_with("archives.html",
            generator.get_template("archives"), settings,
            blog=True, paginated={}, page_name='archives')
示例#19
0
    def test_direct_templates_save_as_default(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['DIRECT_TEMPLATES'] = ['archives']
        generator = ArticlesGenerator(settings.copy(), settings, None,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        write = MagicMock()
        generator.generate_direct_templates(write)
        write.assert_called_with("archives.html",
            generator.get_template("archives"), settings,
            blog=True, paginated={}, page_name='archives')
示例#20
0
    def test_do_not_use_folder_as_category(self):

        settings = _DEFAULT_CONFIG.copy()
        settings["ARTICLE_DIR"] = "content"
        settings["DEFAULT_CATEGORY"] = "Default"
        settings["USE_FOLDER_AS_CATEGORY"] = False
        generator = ArticlesGenerator(
            settings.copy(), settings, CUR_DIR, _DEFAULT_CONFIG["THEME"], None, _DEFAULT_CONFIG["MARKUP"]
        )
        generator.generate_context()

        categories = [cat.name for cat, _ in generator.categories]
        self.assertEquals(categories, ["Default", "Yeah", "test", "yeah"])
示例#21
0
    def test_do_not_use_folder_as_category(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['ARTICLE_DIR'] = 'content'
        settings['DEFAULT_CATEGORY'] = 'Default'
        settings['USE_FOLDER_AS_CATEGORY'] = False
        generator = ArticlesGenerator(settings.copy(), settings,
                            CUR_DIR, _DEFAULT_CONFIG['THEME'], None,
                            _DEFAULT_CONFIG['MARKUP'])
        generator.generate_context()

        categories = [cat.name for cat, _ in generator.categories]
        self.assertEquals(categories, ['Default', 'Yeah', 'test', 'yeah'])
示例#22
0
    def test_do_not_use_folder_as_category(self):

        settings = _DEFAULT_CONFIG.copy()
        settings['ARTICLE_DIR'] = 'content'
        settings['DEFAULT_CATEGORY'] = 'Default'
        settings['USE_FOLDER_AS_CATEGORY'] = False
        generator = ArticlesGenerator(settings.copy(), settings, CUR_DIR,
                                      _DEFAULT_CONFIG['THEME'], None,
                                      _DEFAULT_CONFIG['MARKUP'])
        generator.generate_context()

        categories = [cat.name for cat, _ in generator.categories]
        self.assertEquals(categories, ['Default', 'Yeah', 'test', 'yeah'])
示例#23
0
 def test_summary_max_length(self):
     # If a :SUMMARY_MAX_LENGTH: is set, and there is no other summary,
     # generated summary should not exceed the given length.
     page_kwargs = self._copy_page_kwargs()
     settings = _DEFAULT_CONFIG.copy()
     page_kwargs['settings'] = settings
     del page_kwargs['metadata']['summary']
     settings['SUMMARY_MAX_LENGTH'] = None
     page = Page(**page_kwargs)
     self.assertEqual(page.summary, TEST_CONTENT)
     settings['SUMMARY_MAX_LENGTH'] = 10
     page = Page(**page_kwargs)
     self.assertEqual(page.summary, truncate_html_words(TEST_CONTENT, 10))
示例#24
0
 def test_summary_max_length(self):
     """If a :SUMMARY_MAX_LENGTH: is set, and there is no other summary, generated summary
        should not exceed the given length."""
     page_kwargs = self._copy_page_kwargs()
     settings = _DEFAULT_CONFIG.copy()
     page_kwargs['settings'] = settings
     del page_kwargs['metadata']['summary']
     settings['SUMMARY_MAX_LENGTH'] = None
     page = Page(**page_kwargs)
     self.assertEqual(page.summary, TEST_CONTENT)
     settings['SUMMARY_MAX_LENGTH'] = 10
     page = Page(**page_kwargs)
     self.assertEqual(page.summary, truncate_html_words(TEST_CONTENT, 10))
示例#25
0
 def get_populated_generator(self):
     """
     We only need to pull all the test articles once, but read from it
      for each test.
     """
     if self.generator is None:
         settings = _DEFAULT_CONFIG.copy()
         settings['ARTICLE_DIR'] = 'content'
         settings['DEFAULT_CATEGORY'] = 'Default'
         self.generator = ArticlesGenerator(settings.copy(), settings,
                             CUR_DIR, _DEFAULT_CONFIG['THEME'], None,
                             _DEFAULT_CONFIG['MARKUP'])
         self.generator.generate_context()
     return self.generator
示例#26
0
 def get_populated_generator(self):
     """
     We only need to pull all the test articles once, but read from it
      for each test.
     """
     if self.generator is None:
         settings = _DEFAULT_CONFIG.copy()
         settings['ARTICLE_DIR'] = 'content'
         settings['DEFAULT_CATEGORY'] = 'Default'
         self.generator = ArticlesGenerator(settings.copy(), settings,
                             CUR_DIR, _DEFAULT_CONFIG['THEME'], None,
                             _DEFAULT_CONFIG['MARKUP'])
         self.generator.generate_context()
     return self.generator
示例#27
0
 def get_populated_generator(self):
     """
     We only need to pull all the test articles once, but read from it
      for each test.
     """
     if self.generator is None:
         settings = _DEFAULT_CONFIG.copy()
         settings["ARTICLE_DIR"] = "content"
         settings["DEFAULT_CATEGORY"] = "Default"
         self.generator = ArticlesGenerator(
             settings.copy(), settings, CUR_DIR, _DEFAULT_CONFIG["THEME"], None, _DEFAULT_CONFIG["MARKUP"]
         )
         self.generator.generate_context()
     return self.generator
示例#28
0
    def test_direct_templates_save_as_modified(self):

        settings = _DEFAULT_CONFIG.copy()
        settings["DIRECT_TEMPLATES"] = ["archives"]
        settings["ARCHIVES_SAVE_AS"] = "archives/index.html"
        generator = ArticlesGenerator(
            settings, settings, None, _DEFAULT_CONFIG["THEME"], None, _DEFAULT_CONFIG["MARKUP"]
        )
        write = MagicMock()
        generator.generate_direct_templates(write)
        write.assert_called_with(
            "archives/index.html",
            generator.get_template("archives"),
            settings,
            blog=True,
            paginated={},
            page_name="archives",
        )
示例#29
0
    def test_generate_context(self):
        settings = _DEFAULT_CONFIG.copy()

        settings["PAGE_DIR"] = "TestPages"
        generator = PagesGenerator(
            settings.copy(), settings, CUR_DIR, _DEFAULT_CONFIG["THEME"], None, _DEFAULT_CONFIG["MARKUP"]
        )
        generator.generate_context()
        pages = self.distill_pages(generator.pages)
        hidden_pages = self.distill_pages(generator.hidden_pages)

        pages_expected = [
            [u"This is a test page", "published", "page"],
            [u"This is a markdown test page", "published", "page"],
            [u"This is a test page with a preset template", "published", "custom"],
        ]
        hidden_pages_expected = [
            [u"This is a test hidden page", "hidden", "page"],
            [u"This is a markdown test hidden page", "hidden", "page"],
            [u"This is a test hidden page with a custom template", "hidden", "custom"],
        ]

        self.assertItemsEqual(pages_expected, pages)
        self.assertItemsEqual(hidden_pages_expected, hidden_pages)
示例#30
0
def get_settings():
    settings = _DEFAULT_CONFIG.copy()
    settings['DIRECT_TEMPLATES'] = ['archives']
    settings['filenames'] = {}
    return settings
示例#31
0
文件: support.py 项目: jaknel/pelican
def get_settings():
    settings = _DEFAULT_CONFIG.copy()
    settings['DIRECT_TEMPLATES'] = ['archives']
    settings['filenames'] = {}
    return settings