From b7c3285563b31251488ff21c3e27c490c6162384 Mon Sep 17 00:00:00 2001 From: Arul Date: Mon, 2 Sep 2019 22:27:15 +0530 Subject: [PATCH] Gitub actions (#53) * push action Initial scratch pad * #26 requirements.txt added * #26 unit test failures fixes * #26 install theme in action python3 compatible test * #26 test failure fixes based on new pelican * #26 python3 test fixes --- .github/workflows/main.yml | 28 +++++++++++++++++++++++++++ tests/default_conf.py | 12 ++++++++++++ tests/requirements.txt | 3 +++ tests/support.py | 39 +++++++++++++++++++++++++++++++------- tests/test_author_bio.py | 2 +- tests/test_coverimages.py | 4 ++-- 6 files changed, 78 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/main.yml create mode 100644 tests/requirements.txt diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..6b66959 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,28 @@ +name: Python package + +on: [push] + +jobs: + build: + + runs-on: ubuntu-18.04 + strategy: + max-parallel: 4 + matrix: + python-version: [2.7, 3.5, 3.6, 3.7] + + steps: + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r tests/requirements.txt + pelican-themes -i ../attila + - name: Test with pytest + run: | + cd tests + pytest diff --git a/tests/default_conf.py b/tests/default_conf.py index 63b49a1..0ea4d20 100644 --- a/tests/default_conf.py +++ b/tests/default_conf.py @@ -115,6 +115,18 @@ COLOR_SCHEME_CSS = 'github.css' CSS_OVERRIDE = ['assets/css/myblog.css'] +# Jinja config - Pelican 4 +JINJA_ENVIRONMENT = { + 'extensions' :[ + 'jinja2.ext.loopcontrols', + 'jinja2.ext.i18n', + 'jinja2.ext.with_', + 'jinja2.ext.do' + ] +} + +JINJA_FILTERS = {'max': max} + # AUTHORS_BIO = { # "arul": { # "name": "Arul", diff --git a/tests/requirements.txt b/tests/requirements.txt new file mode 100644 index 0000000..9e4c123 --- /dev/null +++ b/tests/requirements.txt @@ -0,0 +1,3 @@ +pelican +BeautifulSoup4 +pytest diff --git a/tests/support.py b/tests/support.py index db81e84..610af54 100644 --- a/tests/support.py +++ b/tests/support.py @@ -246,10 +246,15 @@ class BaseTest(object): def gen_article_and_html_from_rst(self, rstPath): content, metadata = self.reader.read(rstPath) article = Article(content=content, metadata=metadata) - generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + context = self.settings.copy() + context['generated_content'] = {} + context['static_links'] = set() + context['static_content'] = {} + context['localsiteurl'] = self.settings['SITEURL'] + generator = ArticlesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) generator.generate_context() f = lambda a: True if (a.slug == article.slug) else False - result = filter(f, generator.context["articles"])[0] + result = list(filter(f, generator.context["articles"]))[0] self.writer.write_file( result.save_as, generator.get_template('article'), generator.context, article=result) @@ -259,10 +264,15 @@ class BaseTest(object): def gen_page_and_html_from_rst(self, rstPath): content, metadata = self.reader.read(rstPath) page = Page(content=content, metadata=metadata) - generator = PagesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + context = self.settings.copy() + context['generated_content'] = {} + context['static_links'] = set() + context['static_content'] = {} + context['localsiteurl'] = self.settings['SITEURL'] + generator = PagesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) generator.generate_context() f = lambda a: True if (a.slug == page.slug) else False - result = filter(f, generator.context["pages"])[0] + result = list(filter(f, generator.context["pages"]))[0] self.writer.write_file( result.save_as, generator.get_template('page'), generator.context, page=result) @@ -270,7 +280,12 @@ class BaseTest(object): return (result, soup) def gen_tag_and_html_from_name(self, name): - generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + context = self.settings.copy() + context['generated_content'] = {} + context['static_links'] = set() + context['static_content'] = {} + context['localsiteurl'] = self.settings['SITEURL'] + generator = ArticlesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) generator.generate_context() generator.generate_tags(self.writer.write_file) selectedTag = None @@ -283,7 +298,12 @@ class BaseTest(object): return (selectedTag, soup) def gen_category_and_html_from_name(self, name): - generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + context = self.settings.copy() + context['generated_content'] = {} + context['static_links'] = set() + context['static_content'] = {} + context['localsiteurl'] = self.settings['SITEURL'] + generator = ArticlesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) generator.generate_context() generator.generate_categories(self.writer.write_file) selectedCategory = None @@ -296,7 +316,12 @@ class BaseTest(object): return (selectedCategory, soup) def gen_author_and_html_from_name(self, name): - generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + context = self.settings.copy() + context['generated_content'] = {} + context['static_links'] = set() + context['static_content'] = {} + context['localsiteurl'] = self.settings['SITEURL'] + generator = ArticlesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) generator.generate_context() generator.generate_authors(self.writer.write_file) selectedAuthor = None diff --git a/tests/test_author_bio.py b/tests/test_author_bio.py index 82dbdf5..02c3735 100644 --- a/tests/test_author_bio.py +++ b/tests/test_author_bio.py @@ -10,7 +10,7 @@ def tearDownModule(): print("teardown module") try: rmtree(OUTPUT_DIR) - except OSError, e: + except OSError as e: print ("Error: %s - %s." % (e.filename,e.strerror)) class AuthorSocialLinksTest(unittest.TestCase, BaseTest): diff --git a/tests/test_coverimages.py b/tests/test_coverimages.py index 18ec146..7c0405c 100644 --- a/tests/test_coverimages.py +++ b/tests/test_coverimages.py @@ -13,7 +13,7 @@ def tearDownModule(): print("teardown module") try: rmtree(OUTPUT_DIR) - except OSError, e: + except OSError as e: print ("Error: %s - %s." % (e.filename,e.strerror)) class ArticleCoverImageTest(unittest.TestCase, BaseTest): @@ -59,7 +59,7 @@ class ArticleCoverImageTest(unittest.TestCase, BaseTest): def test_article_theme_cover(self): rstPath="content/article_without_cover.rst" result, soup = self.gen_article_and_html_from_rst(rstPath) - selected = soup.find(id="blog-header") + selected = soup.find(id="post-header") # Assertion self.assertTrue("class" not in selected)