Exemple #1
0
    def test_config_inheritance_dicts(self):
        from engineer.conf import settings

        settings.reload('inheritance_dicts.yaml')

        expected = {'key1': 'value1new', 'key2': 'value2', 'key3': 'value3'}
        self.assertEqual(settings.test_dict, expected)
Exemple #2
0
    def test_settings(self):
        from engineer.conf import settings

        settings.reload('config.yaml')
        self.assertTrue(hasattr(settings, 'POST_RENAME_ENABLED'))
        self.assertTrue(hasattr(settings, 'POST_RENAME_CONFIG'))
        self.assertTrue(settings.POST_RENAME_ENABLED)
Exemple #3
0
    def test_timestamp_custom(self):
        from engineer.conf import settings

        settings.reload(self.post_tests_dir / 'permalinks_timestamp_custom.yaml')
        file = self.post_tests_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/2012-09-04/tag-multiple.html')
        self.assertEqual(post.output_file_name, 'tag-multiple.html')
Exemple #4
0
    def test_end_slash(self):
        from engineer.conf import settings

        settings.reload(self.post_tests_dir / 'permalinks_end_slash.yaml')
        file = self.post_tests_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/test/tag-multiple/')
        self.assertEqual(post.output_file_name, 'index.html')
Exemple #5
0
    def test_end_slash(self):
        from engineer.conf import settings

        settings.reload(self.post_tests_dir / 'permalinks_end_slash.yaml')
        file = self.post_tests_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/test/tag-multiple/')
        self.assertEqual(post.output_file_name, 'index.html')
Exemple #6
0
    def test_slug(self):
        from engineer.conf import settings

        settings.reload(self.post_tests_dir / 'permalinks_slug.yaml')
        file = self.post_tests_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/2012/09/04/tag-multiple.html')
        self.assertEqual(post.output_file_name, 'tag-multiple.html')
Exemple #7
0
    def test_no_leading_zeroes(self):
        from engineer.conf import settings

        settings.reload(self.config_dir / 'permalinks_no_leading_zeroes.yaml')
        file = self.post_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/2012/9/4/tag-multiple.html')
        self.assertEqual(post.output_file_name, 'tag-multiple.html')
Exemple #8
0
    def test_leading_slash(self):
        from engineer.conf import settings

        settings.reload(self.config_dir / 'permalinks_leading_slash.yaml')
        file = self.post_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/2012-09-04/tag-multiple.html')
        self.assertEqual(post.output_file_name, 'tag-multiple.html')
Exemple #9
0
    def test_timestamp_custom(self):
        from engineer.conf import settings

        settings.reload(self.config_dir / 'permalinks_timestamp_custom.yaml')
        file = self.post_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/2012-09-04/tag-multiple.html')
        self.assertEqual(post.output_file_name, 'tag-multiple.html')
Exemple #10
0
    def test_pretty(self):
        from engineer.conf import settings

        settings.reload(self.config_dir / 'permalinks_pretty.yaml')
        file = self.post_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/2012/09/tag-multiple/')
        self.assertEqual(post.output_file_name, 'index.html')
Exemple #11
0
    def test_no_leading_zeroes(self):
        from engineer.conf import settings

        settings.reload(self.post_tests_dir / 'permalinks_no_leading_zeroes.yaml')
        file = self.post_tests_dir / 'tag_multiple.md'
        post = Post(file)

        self.assertEqual(post.url, '/test/2012/9/4/tag-multiple.html')
        self.assertEqual(post.output_file_name, 'tag-multiple.html')
Exemple #12
0
    def setUp(self):
        from engineer.conf import settings

        bootstrap()  #bootstrap logging infrastructure
        load_plugins()  #load plugins
        self.source_path = test_data_root
        os.chdir(self.copied_data_path)
        self.post_tests_dir = self.copied_data_path / 'post_tests'

        settings.reload(self.post_tests_dir / 'settings.yaml')
        settings.create_required_directories()
Exemple #13
0
    def setUp(self):
        from engineer.conf import settings

        bootstrap()  #bootstrap logging infrastructure
        load_plugins()  #load plugins
        self.source_path = test_data_root
        os.chdir(self.copied_data_path)
        self.post_tests_dir = self.copied_data_path / 'post_tests'

        settings.reload(self.post_tests_dir / 'settings.yaml')
        settings.create_required_directories()
Exemple #14
0
    def test_config_inheritance_dicts(self):
        from engineer.conf import settings

        settings.reload('inheritance_dicts.yaml')

        expected = {
            'key1': 'value1new',
            'key2': 'value2',
            'key3': 'value3'
        }
        self.assertEqual(settings.test_dict, expected)
Exemple #15
0
    def test_lazy_links(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('config.yaml')

        post = Post('posts/lazy_markdown_links.md')
        self.assertEqual(post.content_preprocessed.strip(), self._expected_output.strip())

        post = Post('posts/lazy_markdown_links2.md')
        self.assertEqual(post.content_preprocessed.strip(), self._expected_output2.strip())
Exemple #16
0
    def test_lazy_links_persist(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('lazy_links_persist.yaml')

        post = Post('posts/lazy_markdown_links.md')
        self.assertEqual(post.content_preprocessed.strip(), self._expected_output.strip())

        with open(post.source, mode='rb') as post_file:
            content = post_file.read()
        self.assertEqual(content.strip(), self._expected_metadata + self._expected_output.strip())
Exemple #17
0
    def subdir_loading_test(self):
        from engineer.conf import settings
        from engineer.loaders import LocalLoader
        from engineer.models import Post, PostCollection

        settings.reload(self.config_dir / 'load_from_subdir.yaml')
        post_file = self.post_dir / 'subdir/post_in_subdir.md'
        expected_post = Post(post_file)
        new_posts, cached_posts = LocalLoader.load_all(settings.POST_DIR)
        all_posts = PostCollection(new_posts + cached_posts)

        self.assertIn(expected_post, all_posts)
Exemple #18
0
    def test_lazy_links(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('config.yaml')

        post = Post('posts/lazy_markdown_links.md')
        self.assertEqual(post.content_preprocessed.strip(),
                         self._expected_output.strip())

        post = Post('posts/lazy_markdown_links2.md')
        self.assertEqual(post.content_preprocessed.strip(),
                         self._expected_output2.strip())
Exemple #19
0
    def test_force_fenced_metadata(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('finalization_fenced.yaml')
        settings.create_required_directories()
        post = Post('posts/finalization_draft.md')
        self.assertEqual(post.title, "Finalization Draft")

        expected_output = '---\n\n' + finalization_draft_output
        with open(post.source, mode='rb') as post_file:
            content = post_file.read()
        self.assertEqual(content, expected_output)
Exemple #20
0
    def test_force_fenced_metadata(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('finalization_fenced.yaml')
        settings.create_required_directories()
        post = Post('posts/finalization_draft.md')
        self.assertEqual(post.title, "Finalization Draft")

        expected_output = '---\n\n' + finalization_draft_output
        with open(post.source, mode='rb') as post_file:
            content = post_file.read()
        self.assertEqual(content, expected_output)
Exemple #21
0
    def test_finalization_unfenced_post(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('finalization_unfenced.yaml')
        settings.create_required_directories()
        post = Post('posts/finalization_fenced.md')
        self.assertEqual(post.title, "Finalization Fenced")

        expected_output = ''.join(finalization_fenced_output.splitlines(True)[2:])
        with open(post.source, mode='rb') as post_file:
            content = post_file.read()
        self.assertEqual(content, expected_output)
Exemple #22
0
    def test_finalization_unfenced_post(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('finalization_unfenced.yaml')
        settings.create_required_directories()
        post = Post('posts/finalization_fenced.md')
        self.assertEqual(post.title, "Finalization Fenced")

        expected_output = ''.join(
            finalization_fenced_output.splitlines(True)[2:])
        with open(post.source, mode='rb') as post_file:
            content = post_file.read()
        self.assertEqual(content, expected_output)
Exemple #23
0
    def test_deprecated_settings(self):
        from engineer.conf import settings

        with LogCapture('engineer.conf', level=logging.WARNING) as log_output:
            settings.reload('deprecated_settings.yaml')
            log_output.check(
                ('engineer.conf',
                 'CONSOLE',
                 "Loading configuration from %s\deprecated_settings.yaml." % self.copied_data_path),
                ('engineer.conf', 'WARNING', "The 'NORMALIZE_INPUT_FILES' setting was deprecated in version 0.4: This "
                                             "setting is now ignored."),
                ('engineer.conf', 'WARNING', "The 'NORMALIZE_INPUT_FILE_MASK' setting was deprecated in version 0.4: "
                                             "This setting is now ignored.")
            )
Exemple #24
0
    def global_links_test(self):
        """Global links test."""
        from engineer.conf import settings

        settings.reload(self.config_dir / 'global_links_settings.yaml')
        post = Post(self.post_dir / 'global_links_post.md')

        expected_content = """
<p><a href="http://tylerbutler.com">Tyler Butler</a> is the author of&nbsp;Engineer.</p>
<p>He does not like to be called <a href="http://tylerbutler.com">Ty</a>.</p>
        """

        actual_content = unicode(post.convert_to_html(post.content_preprocessed))
        self.assertEqual(actual_content.strip(), expected_content.strip())
Exemple #25
0
    def test_lazy_links_persist(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('lazy_links_persist.yaml')

        post = Post('posts/lazy_markdown_links.md')
        self.assertEqual(post.content_preprocessed.strip(),
                         self._expected_output.strip())

        with open(post.source, mode='rb') as post_file:
            content = post_file.read()
        self.assertEqual(
            content.strip(),
            self._expected_metadata + self._expected_output.strip())
Exemple #26
0
    def test_post_renamer_custom_config(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('custom_renames.yaml')

        post = Post('posts/draft_post.md')
        self.assertEqual(post.source.name, 'draft_post.md')
        self.assertTrue(post.source.exists())

        post = Post('posts/review_post.md')
        self.assertEqual(post.source.name, '2012-11-02-a-post-in-review.md')
        self.assertTrue(post.source.exists())
        self.assertFalse(path('posts/review_post.md').exists())

        post = Post('posts/published_post_with_timestamp.md')
        self.assertEqual(post.source.name, '(p) 2012-11-02 a-published-post.md')
        self.assertTrue(post.source.exists())
        self.assertFalse(path('posts/published_post_with_timestamp.md').exists())
Exemple #27
0
def cmdline(args=sys.argv):
    # bootstrap logging
    bootstrap()

    # Load all plugins
    load_plugins()

    args = get_argparser().parse_args(args[1:])
    skip_settings = ('init', )

    logger = logging.getLogger('engineer')
    if args.verbose >= 2:
        logger.removeHandler(get_console_handler(logging.WARNING))
        logger.addHandler(get_console_handler(logging.DEBUG))
    elif args.verbose == 1:
        logger.removeHandler(get_console_handler(logging.WARNING))
        logger.addHandler(get_console_handler(logging.INFO))
    else:
        pass  # WARNING level is added by default in bootstrap method

    if args.parser_name in skip_settings:
        pass
    else:  # try loading settings
        try:
            from engineer.conf import settings

            if args.config_file is None:
                default_settings_file = path.getcwd() / 'config.yaml'
                logger.info(
                    "No '--settings' parameter specified, defaulting to %s." %
                    default_settings_file)
                settings.reload(default_settings_file)
            else:
                settings.reload(settings_file=args.config_file)
        except Exception as e:
            logger.error(e.message)
            exit()

    args.func(args)
    exit()
Exemple #28
0
def cmdline(args=sys.argv):
    # bootstrap logging
    bootstrap()

    # Load all plugins
    load_plugins()

    args = get_argparser().parse_args(args[1:])
    skip_settings = ('init',)

    logger = logging.getLogger('engineer')
    if args.verbose >= 2:
        logger.removeHandler(get_console_handler(logging.WARNING))
        logger.addHandler(get_console_handler(logging.DEBUG))
    elif args.verbose == 1:
        logger.removeHandler(get_console_handler(logging.WARNING))
        logger.addHandler(get_console_handler(logging.INFO))
    else:
        pass # WARNING level is added by default in bootstrap method

    if args.parser_name in skip_settings:
        pass
    else: # try loading settings
        try:
            from engineer.conf import settings

            if args.config_file is None:
                default_settings_file = path.getcwd() / 'config.yaml'
                logger.info("No '--settings' parameter specified, defaulting to %s." % default_settings_file)
                settings.reload(default_settings_file)
            else:
                settings.reload(settings_file=args.config_file)
        except Exception as e:
            logger.error(e.message)
            exit()

    args.func(args)
    exit()
    def test_finalization_draft(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('finalization.yaml')
        settings.create_required_directories()
        post = Post('posts/finalization_draft.md')
        self.assertEqual(post.title, "Finalization Draft")

        expected_output = """title: Finalization Draft
status: draft
slug: finalization-draft
tags:
- tag

---

This is a finalization test post.
""".format(year=post.timestamp_local.year, month=post.timestamp_local.month, day=post.timestamp_local.day)

        with open(post.source, mode='rb') as post_file:
            content = post_file.read()
        self.assertEqual(content, expected_output)
Exemple #30
0
    def test_finalization_draft(self):
        from engineer.conf import settings
        from engineer.models import Post

        settings.reload('finalization.yaml')
        settings.create_required_directories()
        post = Post('posts/finalization_draft.md')
        self.assertEqual(post.title, "Finalization Draft")

        expected_output = """title: Finalization Draft
status: draft
url: /{year:02d}/{month:02d}/{day:02d}/finalization-draft/
slug: finalization-draft
tags:
- tag

---

This is a finalization test post.
""".format(year=post.timestamp_local.year, month=post.timestamp_local.month, day=post.timestamp_local.day)

        with open(post.source, mode='rb') as post_file:
            content = post_file.read()
        self.assertEqual(content, expected_output)
Exemple #31
0
    def test_config_yaml(self):
        from engineer.conf import settings

        settings.reload('config.yaml')
        self.assertEqual(settings.SITE_TITLE, 'Test Config')
        self.assertEqual(settings.HOME_URL, '/')
Exemple #32
0
 def _reload_settings(self):
     settings.reload()
     self.messages.append("Settings reloaded from %s." %
                          settings.SETTINGS_FILE)
     return bottle.redirect(self.get_url('home'))
Exemple #33
0
    def test_config_yaml(self):
        from engineer.conf import settings

        settings.reload('config.yaml')
        self.assertEqual(settings.SITE_TITLE, 'Test Config')
        self.assertEqual(settings.HOME_URL, '/')
Exemple #34
0
    def test_config_inheritance(self):
        from engineer.conf import settings

        settings.reload('inheritance.yaml')
        self.assertEqual(settings.SITE_TITLE, 'Inheritance Test')
        self.assertEqual(settings.HOME_URL, '/')
Exemple #35
0
    def setUp(self):
        from engineer.conf import settings

        BaseTestCase.setUp(self)
        settings.reload('path_variable_expansion.yaml')
Exemple #36
0
    def test_disabled(self):
        from engineer.conf import settings

        settings.reload('renamer_off.yaml')
        self.assertFalse(settings.POST_RENAME_ENABLED)
Exemple #37
0
    def test_config_inheritance(self):
        from engineer.conf import settings

        settings.reload('inheritance.yaml')
        self.assertEqual(settings.SITE_TITLE, 'Inheritance Test')
        self.assertEqual(settings.HOME_URL, '/')
Exemple #38
0
 def _reload_settings(self):
     settings.reload()
     self.messages.append(
         "Settings reloaded from %s." % settings.SETTINGS_FILE)
     return bottle.redirect(self.get_url('home'))
Exemple #39
0
    def setUp(self):
        from engineer.conf import settings

        BaseTestCase.setUp(self)
        settings.reload('path_variable_expansion.yaml')