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)
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)
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')
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')
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')
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')
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')
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')
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')
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')
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()
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)
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())
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())
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)
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)
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)
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)
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.") )
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 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())
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())
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())
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 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)
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)
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, '/')
def _reload_settings(self): settings.reload() self.messages.append("Settings reloaded from %s." % settings.SETTINGS_FILE) return bottle.redirect(self.get_url('home'))
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, '/')
def setUp(self): from engineer.conf import settings BaseTestCase.setUp(self) settings.reload('path_variable_expansion.yaml')
def test_disabled(self): from engineer.conf import settings settings.reload('renamer_off.yaml') self.assertFalse(settings.POST_RENAME_ENABLED)
def _reload_settings(self): settings.reload() self.messages.append( "Settings reloaded from %s." % settings.SETTINGS_FILE) return bottle.redirect(self.get_url('home'))