From e418d9b2f4f52f688de031da1ef997ea46fffd2b Mon Sep 17 00:00:00 2001 From: Tom Harvey Date: Fri, 29 Jun 2018 12:36:37 -0700 Subject: [PATCH 01/40] Example of CircleCI deployment through CircleCI v2 (#7024) Merge pull request 7024 --- docs/_docs/continuous-integration/circleci.md | 71 ++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/docs/_docs/continuous-integration/circleci.md b/docs/_docs/continuous-integration/circleci.md index b4aadc61..baf5f78e 100644 --- a/docs/_docs/continuous-integration/circleci.md +++ b/docs/_docs/continuous-integration/circleci.md @@ -61,7 +61,7 @@ test: ## Complete Example circle.yml File -When you put it all together, here's an example of what that `circle.yml` file could look like: +When you put it all together, here's an example of what that `circle.yml` file could look like in v1: ```yaml machine: @@ -83,6 +83,75 @@ deployment: - rsync -va --delete ./_site username@my-website:/var/html ``` +for CircleCI v2, a Docker-based system which new projects will follow, set the `S3_BUCKET_NAME` environment variable (an example of the required config file is shown below). + +```yaml +defaults: &defaults + working_directory: ~/repo +version: 2 +jobs: + build: + <<: *defaults + docker: + - image: circleci/ruby:2.5 + environment: + BUNDLE_PATH: ~/repo/vendor/bundle + steps: + - checkout + - restore_cache: + keys: + - rubygems-v1-{{ checksum "Gemfile.lock" }} + - rubygems-v1-fallback + - run: + name: Bundle Install + command: bundle check || bundle install + - run: + name: HTMLProofer tests + command: | + bundle exec htmlproofer ./_site \ + --allow-hash-href \ + --check-favicon \ + --check-html \ + --disable-external + - save_cache: + key: rubygems-v1-{{ checksum "Gemfile.lock" }} + paths: + - vendor/bundle + - run: + name: Jekyll build + command: bundle exec jekyll build + - persist_to_workspace: + root: ./ + paths: + - _site + deploy: + <<: *defaults + docker: + - image: circleci/python:3.6.3 + environment: + S3_BUCKET_NAME: <> + steps: + - attach_workspace: + at: ./ + - run: + name: Install AWS CLI + command: pip install awscli --upgrade --user + - run: + name: Upload to s3 + command: ~/.local/bin/aws s3 sync ./_site s3://$S3_BUCKET_NAME/ --delete --acl public-read +workflows: + version: 2 + test-deploy: + jobs: + - build + - deploy: + requires: + - build + filters: + branches: + only: master +``` + ## Questions? This entire guide is open-source. Go ahead and [edit it][7] if you have a fix or [ask for help][8] if you run into trouble and need some help. CircleCI also has an [online community][9] for help. From 4d96e4b7bde82c3d68510828152b81a5d679a2bf Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 29 Jun 2018 15:36:39 -0400 Subject: [PATCH 02/40] Update history to reflect merge of #7024 [ci skip] --- History.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/History.markdown b/History.markdown index c61043a4..58d812be 100644 --- a/History.markdown +++ b/History.markdown @@ -61,6 +61,10 @@ * Use assert_include (#7093) * Update rubocop version to 0.57.x (#7078) +### -docs + + * Example of CircleCI deployment through CircleCI v2 (#7024) + ## 3.8.3 / 2018-06-05 ### Bug Fixes From 43f4fc6c70a5f1f1aac1b2438a9c7fb47bad8aac Mon Sep 17 00:00:00 2001 From: Boris van Hoytema Date: Fri, 6 Jul 2018 20:47:03 +0200 Subject: [PATCH 03/40] GitHub enables you to use themes from other repos (#7112) Merge pull request 7112 --- docs/_docs/themes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index b9fdf5ec..d4b8aa6d 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -201,7 +201,7 @@ To install a gem-based theme: You can have multiple themes listed in your site's `Gemfile`, but only one theme can be selected in your site's `_config.yml`. {: .note .info } -If you're publishing your Jekyll site on [GitHub Pages](https://pages.github.com/), note that GitHub Pages supports only some gem-based themes. See [Supported Themes](https://pages.github.com/themes/) in GitHub's documentation to see which themes are supported. +If you're publishing your Jekyll site on [GitHub Pages](https://pages.github.com/), note that GitHub Pages supports only [some gem-based themes](https://pages.github.com/themes/). GitHub Pages also supports [using any theme hosted on GitHub](https://help.github.com/articles/adding-a-jekyll-theme-to-your-github-pages-site/#adding-a-jekyll-theme-in-your-sites-_configyml-file) using the `remote_theme` configuration as if it were a gem-based theme. ## Creating a gem-based theme From bfd58fa94932f71d32fc8593103e0b358cd6f968 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 6 Jul 2018 14:47:05 -0400 Subject: [PATCH 04/40] Update history to reflect merge of #7112 [ci skip] --- History.markdown | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/History.markdown b/History.markdown index 58d812be..63f1220a 100644 --- a/History.markdown +++ b/History.markdown @@ -28,6 +28,7 @@ * Added plugin json-get. (#7086) * Update travis-ci.md to point out "this is an example Gemfile" (#7089) * Adding `jekyll-info` plugin (#7091) + * GitHub enables you to use themes from other repos (#7112) ### Minor Enhancements @@ -59,10 +60,7 @@ * Update Rubocop's config (#7050) * Remember to release docs gem (#7066) * Use assert_include (#7093) - * Update rubocop version to 0.57.x (#7078) - -### -docs - + * Update rubocop version to 0.57.x ### -docs (#7078) * Example of CircleCI deployment through CircleCI v2 (#7024) ## 3.8.3 / 2018-06-05 From 70f4d4908de10239b4774210a0e720b7df3b32f9 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Sat, 7 Jul 2018 13:01:41 +0200 Subject: [PATCH 05/40] Fix: Escape Liquid --- docs/_docs/continuous-integration/circleci.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_docs/continuous-integration/circleci.md b/docs/_docs/continuous-integration/circleci.md index baf5f78e..ce58a009 100644 --- a/docs/_docs/continuous-integration/circleci.md +++ b/docs/_docs/continuous-integration/circleci.md @@ -100,7 +100,7 @@ jobs: - checkout - restore_cache: keys: - - rubygems-v1-{{ checksum "Gemfile.lock" }} + - rubygems-v1-{% raw %}{{ checksum "Gemfile.lock" }}{% endraw %} - rubygems-v1-fallback - run: name: Bundle Install @@ -114,7 +114,7 @@ jobs: --check-html \ --disable-external - save_cache: - key: rubygems-v1-{{ checksum "Gemfile.lock" }} + key: rubygems-v1-{% raw %}{{ checksum "Gemfile.lock" }}{% endraw %} paths: - vendor/bundle - run: From 385bf36724e87a597feacf9c041292f005ededca Mon Sep 17 00:00:00 2001 From: Christian Oliff Date: Mon, 9 Jul 2018 03:04:41 +0900 Subject: [PATCH 06/40] Updates to v1.4 (#7105) Merge pull request 7105 --- CODE_OF_CONDUCT.markdown | 67 +++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/CODE_OF_CONDUCT.markdown b/CODE_OF_CONDUCT.markdown index 8425dfc7..7d1d3214 100644 --- a/CODE_OF_CONDUCT.markdown +++ b/CODE_OF_CONDUCT.markdown @@ -1,49 +1,46 @@ # Code of Conduct -As contributors and maintainers of this project, and in the interest of -fostering an open and welcoming community, we pledge to respect all people who -contribute through reporting issues, posting feature requests, updating -documentation, submitting pull requests or patches, and other activities. +## Our Pledge -We are committed to making participation in this project a harassment-free -experience for everyone, regardless of level of experience, gender, gender -identity and expression, sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, religion, or nationality. +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment -* Publishing other's private information, such as physical or electronic - addresses, without explicit permission -* Other unethical or unprofessional conduct +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +## Our Responsibilities -By adopting this Code of Conduct, project maintainers commit themselves to -fairly and consistently applying these principles to every aspect of managing -this project. Project maintainers who do not follow or enforce the Code of -Conduct may be permanently removed from the project team. +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by opening an issue or contacting a project maintainer. All complaints -will be reviewed and investigated and will result in a response that is deemed -necessary and appropriate to the circumstances. Maintainers are obligated to -maintain confidentiality with regard to the reporter of an incident. +## Scope +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 1.3.0, available at -[http://contributor-covenant.org/version/1/3/0/][version] +## Enforcement -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/3/0/ +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting a project maintainer. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://www.contributor-covenant.org/version/1/4/code-of-conduct.html][version] + +[homepage]: https://www.contributor-covenant.org/ +[version]: https://www.contributor-covenant.org/version/1/4/code-of-conduct.html From 565567ac08ac1c3db5129aa55e3c6996f2070c82 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 8 Jul 2018 14:04:43 -0400 Subject: [PATCH 07/40] Update history to reflect merge of #7105 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 63f1220a..f8aa4ecd 100644 --- a/History.markdown +++ b/History.markdown @@ -29,6 +29,7 @@ * Update travis-ci.md to point out "this is an example Gemfile" (#7089) * Adding `jekyll-info` plugin (#7091) * GitHub enables you to use themes from other repos (#7112) + * Updates to CODE OF CONDUCT (v1.4.0) (#7105) ### Minor Enhancements From d57715031a3c8fea19e7eaa4b46376f42111ee43 Mon Sep 17 00:00:00 2001 From: Alexey Kopytko Date: Mon, 9 Jul 2018 03:12:11 +0900 Subject: [PATCH 08/40] =?UTF-8?q?Instructions=20to=20view=20theme=E2=80=99?= =?UTF-8?q?s=20files=20under=20Linux=20(#7095)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge pull request 7095 --- docs/_docs/themes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index d4b8aa6d..b8f469e5 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -52,6 +52,8 @@ To locate a theme's files on your computer: open $(bundle show minima) # On Windows explorer /usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0 + # On Linux + xdg-open $(bundle show minima) ``` A Finder or Explorer window opens showing the theme's files and directories. The Minima theme gem contains these files: From caa0846e7bef0e95312a0122041b7c41b7bd201c Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 8 Jul 2018 14:12:13 -0400 Subject: [PATCH 09/40] Update history to reflect merge of #7095 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index f8aa4ecd..632d7b58 100644 --- a/History.markdown +++ b/History.markdown @@ -30,6 +30,7 @@ * Adding `jekyll-info` plugin (#7091) * GitHub enables you to use themes from other repos (#7112) * Updates to CODE OF CONDUCT (v1.4.0) (#7105) + * Instructions to view theme’s files under Linux (#7095) ### Minor Enhancements From f4fcfbdaa02e11777fa776ed9e29341f4efefb79 Mon Sep 17 00:00:00 2001 From: Kelly-Ann Green Date: Mon, 9 Jul 2018 01:25:32 -0400 Subject: [PATCH 10/40] Update item_property to return numbers as numbers instead of strings (#6608) Merge pull request 6608 --- lib/jekyll/filters.rb | 25 ++++++++++++++++--------- test/test_filters.rb | 16 ++++++++++++---- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 2a390f06..ed8c3163 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -299,16 +299,16 @@ module Jekyll # We also utilize the Schwartzian transform to make this more efficient. def sort_input(input, property, order) input.map { |item| [item_property(item, property), item] } - .sort! do |apple_info, orange_info| - apple_property = apple_info.first - orange_property = orange_info.first + .sort! do |a_info, b_info| + a_property = a_info.first + b_property = b_info.first - if !apple_property.nil? && orange_property.nil? + if !a_property.nil? && b_property.nil? - order - elsif apple_property.nil? && !orange_property.nil? + elsif a_property.nil? && !b_property.nil? + order else - apple_property <=> orange_property + a_property <=> b_property || a_property.to_s <=> b_property.to_s end end .map!(&:last) @@ -317,15 +317,22 @@ module Jekyll def item_property(item, property) if item.respond_to?(:to_liquid) property.to_s.split(".").reduce(item.to_liquid) do |subvalue, attribute| - subvalue[attribute] + parse_sort_input(subvalue[attribute]) end elsif item.respond_to?(:data) - item.data[property.to_s] + parse_sort_input(item.data[property.to_s]) else - item[property.to_s] + parse_sort_input(item[property.to_s]) end end + # return numeric values as numbers for proper sorting + def parse_sort_input(property) + number_like = %r!\A\s*-?(?:\d+\.?\d*|\.\d+)\s*\Z! + return property.to_f if property =~ number_like + property + end + def as_liquid(item) case item when Hash diff --git a/test/test_filters.rb b/test/test_filters.rb index a3dd142a..ef9cbaaa 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -1074,10 +1074,6 @@ class TestFilters < JekyllUnitTest end should "return sorted strings" do assert_equal %w(10 2), @filter.sort(%w(10 2)) - assert_equal( - [{ "a" => "10" }, { "a" => "2" }], - @filter.sort([{ "a" => "10" }, { "a" => "2" }], "a") - ) assert_equal %w(FOO Foo foo), @filter.sort(%w(foo Foo FOO)) assert_equal %w(_foo foo foo_), @filter.sort(%w(foo_ _foo foo)) # Cyrillic @@ -1090,6 +1086,18 @@ class TestFilters < JekyllUnitTest assert_equal [{ "a" => 1 }, { "a" => 2 }, { "a" => 3 }, { "a" => 4 }], @filter.sort([{ "a" => 4 }, { "a" => 3 }, { "a" => 1 }, { "a" => 2 }], "a") end + should "return sorted by property array with numeric strings sorted as numbers" do + assert_equal([{ "a" => ".5" }, { "a" => "0.65" }, { "a" => "10" }], + @filter.sort([{ "a" => "10" }, { "a" => ".5" }, { "a" => "0.65" }], "a")) + end + should "return sorted by property array with numeric strings first" do + assert_equal([{ "a" => ".5" }, { "a" => "0.6" }, { "a" => "twelve" }], + @filter.sort([{ "a" => "twelve" }, { "a" => ".5" }, { "a" => "0.6" }], "a")) + end + should "return sorted by property array with numbers and strings " do + assert_equal([{ "a" => "1" }, { "a" => "1abc" }, { "a" => "20" }], + @filter.sort([{ "a" => "20" }, { "a" => "1" }, { "a" => "1abc" }], "a")) + end should "return sorted by property array with nils first" do ary = [{ "a" => 2 }, { "b" => 1 }, { "a" => 1 }] assert_equal [{ "b" => 1 }, { "a" => 1 }, { "a" => 2 }], @filter.sort(ary, "a") From c124937e69b9dbd6a401a9ce650686bd14c70092 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 9 Jul 2018 01:25:34 -0400 Subject: [PATCH 11/40] Update history to reflect merge of #6608 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 632d7b58..3dd1f881 100644 --- a/History.markdown +++ b/History.markdown @@ -38,6 +38,7 @@ * Memoize computing excerpt's relative_path (#6951) * Liquefied link tag (#6269) * Suggest re-running command with --trace on fail (#6551) + * Update item_property to return numbers as numbers instead of strings (#6608) ### Major Enhancements From 4c7dbb691572d24e312c0345929e12bca934bdba Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Mon, 9 Jul 2018 11:10:35 -0500 Subject: [PATCH 12/40] Fix tests to have "expected value" as the first argument passed to `assert_equal` (#7104) * assert_equal(exp, act) * improve clarity of PageWithoutAFile test * Hoist invariant out of loop --- test/test_document.rb | 4 ++-- test/test_excerpt_drop.rb | 4 ++-- test/test_filters.rb | 3 ++- test/test_front_matter_defaults.rb | 8 ++++---- test/test_page_without_a_file.rb | 16 ++++++++++------ 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/test/test_document.rb b/test/test_document.rb index ce8dbeda..b652b454 100644 --- a/test/test_document.rb +++ b/test/test_document.rb @@ -126,11 +126,11 @@ class TestDocument < JekyllUnitTest end should "output the collection name in the #to_liquid method" do - assert_equal @document.to_liquid["collection"], "methods" + assert_equal "methods", @document.to_liquid["collection"] end should "output its relative path as path in Liquid" do - assert_equal @document.to_liquid["path"], "_methods/configuration.md" + assert_equal "_methods/configuration.md", @document.to_liquid["path"] end end diff --git a/test/test_excerpt_drop.rb b/test/test_excerpt_drop.rb index 1eb66872..e9e387de 100644 --- a/test/test_excerpt_drop.rb +++ b/test/test_excerpt_drop.rb @@ -28,7 +28,7 @@ class TestExcerptDrop < JekyllUnitTest should "inherit the layout for the drop but not the excerpt" do assert_nil @excerpt.data["layout"] - assert_equal @excerpt_drop["layout"], @doc_drop["layout"] + assert_equal @doc_drop["layout"], @excerpt_drop["layout"] end should "be inspectable" do @@ -36,7 +36,7 @@ class TestExcerptDrop < JekyllUnitTest end should "inherit values from the document" do - assert_equal @excerpt_drop.keys.sort, @doc_drop.keys.sort + assert_equal @doc_drop.keys.sort, @excerpt_drop.keys.sort end end end diff --git a/test/test_filters.rb b/test/test_filters.rb index ef9cbaaa..f0f37c4e 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -687,10 +687,11 @@ class TestFilters < JekyllUnitTest should "convert drop with drops to json" do @filter.site.read actual = @filter.jsonify(@filter.site.to_liquid) - assert_equal JSON.parse(actual)["jekyll"], { + expected = { "environment" => "development", "version" => Jekyll::VERSION, } + assert_equal expected, JSON.parse(actual)["jekyll"] end # rubocop:disable Style/StructInheritance diff --git a/test/test_front_matter_defaults.rb b/test/test_front_matter_defaults.rb index 2f996a9f..dab4385c 100644 --- a/test/test_front_matter_defaults.rb +++ b/test/test_front_matter_defaults.rb @@ -22,7 +22,7 @@ class TestFrontMatterDefaults < JekyllUnitTest end should "affect only the specified path and type" do - assert_equal @affected.data["key"], "val" + assert_equal "val", @affected.data["key"] assert_nil @not_affected.data["key"] end @@ -50,7 +50,7 @@ class TestFrontMatterDefaults < JekyllUnitTest end should "affect only the specified path and type" do - assert_equal @affected.data["key"], "val" + assert_equal "val", @affected.data["key"] assert_nil @not_affected.data["key"] end @@ -78,7 +78,7 @@ class TestFrontMatterDefaults < JekyllUnitTest end should "affect only the specified path" do - assert_equal @affected.data["key"], "val" + assert_equal "val", @affected.data["key"] assert_nil @not_affected.data["key"] end end @@ -102,7 +102,7 @@ class TestFrontMatterDefaults < JekyllUnitTest end should "affect only the specified path and all types" do - assert_equal @affected.data["key"], "val" + assert_equal "val", @affected.data["key"] assert_nil @not_affected.data["key"] end end diff --git a/test/test_page_without_a_file.rb b/test/test_page_without_a_file.rb index d52d82fd..50624890 100644 --- a/test/test_page_without_a_file.rb +++ b/test/test_page_without_a_file.rb @@ -41,6 +41,10 @@ class TestPageWithoutAFile < JekyllUnitTest should "have basic attributes defined in it" do regular_page = setup_page("properties.html", :klass => Page) + # assert a couple of attributes accessible in a regular Jekyll::Page instance + assert_equal "All the properties.\n", regular_page["content"] + assert_equal "properties.html", regular_page["name"] + basic_attrs = %w(dir name path url) attrs = { "content" => "All the properties.\n", @@ -56,13 +60,13 @@ class TestPageWithoutAFile < JekyllUnitTest "url" => "/properties.html", } attrs.each do |prop, value| - # assert the props being accessible in a Jekyll::Page instance - assert_equal "All the properties.\n", regular_page["content"] - assert_equal "properties.html", regular_page["name"] - - # assert differences with Jekyll::PageWithoutAFile instance + # assert that all attributes (of a Jekyll::PageWithoutAFile instance) other than + # "dir", "name", "path", "url" are `nil`. + # For example, @page[dir] should be "/" but @page[content] or @page[layout], should + # simply be nil. + # if basic_attrs.include?(prop) - assert_equal @page[prop], value, "For :" + assert_equal value, @page[prop], "For Jekyll::PageWithoutAFile attribute '#{prop}':" else assert_nil @page[prop] end From 3650baa5dbd6ccff1f5735ca0d406a4697a654bf Mon Sep 17 00:00:00 2001 From: Derek Smart Date: Mon, 9 Jul 2018 12:12:37 -0400 Subject: [PATCH 13/40] add jekyll-xml-source (#7114) Merge pull request 7114 --- docs/_docs/plugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index ba18ce30..2a2f2647 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -940,6 +940,7 @@ You can find a few useful plugins at the following locations: - [jekyll-pwa-plugin](https://github.com/lavas-project/jekyll-pwa): A plugin provides PWA support for Jekyll. It generates a service worker in Jekyll build process and makes precache and runtime cache available in the runtime with Google Workbox. - [jekyll-algolia](https://community.algolia.com/jekyll-algolia/): Add fast and relevant search to your Jekyll site through the Algolia API. - [jekyll-get](https://github.com/18F/jekyll-get): Download data from external JSON API sources to use in generating a site. +- [jekyll-xml-source](https://github.com/mcred/jekyll-xml-source): Download XML and RSS from external sites for use in site data.
Submit your gem plugins
From a1ea95d445b39e6887882422a96c1ae79acc262d Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 9 Jul 2018 12:12:39 -0400 Subject: [PATCH 14/40] Update history to reflect merge of #7114 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 3dd1f881..f57e2bbf 100644 --- a/History.markdown +++ b/History.markdown @@ -31,6 +31,7 @@ * GitHub enables you to use themes from other repos (#7112) * Updates to CODE OF CONDUCT (v1.4.0) (#7105) * Instructions to view theme’s files under Linux (#7095) + * add jekyll-xml-source (#7114) ### Minor Enhancements From 8846741ed21c5c9c19cbd62b295a8382ebd682a6 Mon Sep 17 00:00:00 2001 From: Alex Wood Date: Mon, 9 Jul 2018 23:06:54 -0400 Subject: [PATCH 15/40] Fix #7082 Add call to unused method (#7122) Merge pull request 7122 --- lib/jekyll/commands/serve.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/jekyll/commands/serve.rb b/lib/jekyll/commands/serve.rb index ecf6fe67..a5b58897 100644 --- a/lib/jekyll/commands/serve.rb +++ b/lib/jekyll/commands/serve.rb @@ -91,7 +91,10 @@ module Jekyll def process(opts) opts = configuration_from_options(opts) destination = opts["destination"] - register_reload_hooks(opts) if opts["livereload"] + if opts["livereload"] + validate_options(opts) + register_reload_hooks(opts) + end setup(destination) start_up_webrick(opts, destination) From 5950a7c11370b5af3cea52a745053febf26bef0a Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 9 Jul 2018 23:06:56 -0400 Subject: [PATCH 16/40] Update history to reflect merge of #7122 [ci skip] --- History.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/History.markdown b/History.markdown index f57e2bbf..6b3b974d 100644 --- a/History.markdown +++ b/History.markdown @@ -67,6 +67,10 @@ * Update rubocop version to 0.57.x ### -docs (#7078) * Example of CircleCI deployment through CircleCI v2 (#7024) +### Bug Fixes + + * Add call to unused method `validate_options` in `commands/serve.rb` (#7122) + ## 3.8.3 / 2018-06-05 ### Bug Fixes From 402ee84abb3799097eb7ac16c4dfa4f77c2c1a59 Mon Sep 17 00:00:00 2001 From: Nicolas Hoizey Date: Wed, 11 Jul 2018 13:14:14 +0000 Subject: [PATCH 17/40] Add the jekyll-firstimage filter plugin (#7127) Merge pull request 7127 --- docs/_docs/plugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index 2a2f2647..f44d7383 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -828,6 +828,7 @@ You can find a few useful plugins at the following locations: - [replace_regex](https://github.com/sparanoid/replace_regex): A Liquid filter to perform regex replace. - [Jekyll Money](https://rubygems.org/gems/jekyll-money): A Jekyll plugin for dealing with money. Because we all have to at some point. - [jekyll-random](https://github.com/codecalm/jekyll-random) by [codecalm](https://nodecalm.net): A Jekyll plugin that generates pseudo-random data. Very useful when you want to generate a large amount of random data. +- [jekyll-firstimage](https://github.com/nhoizey/jekyll-firstimage) adds a Liquid filter finding the first image in a HTML content string, including responsive images srcset. #### Tags From 0e0960e2c33d26e4da831c83fb082b93a9b09d53 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 11 Jul 2018 09:14:16 -0400 Subject: [PATCH 18/40] Update history to reflect merge of #7127 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 6b3b974d..0ccf4be5 100644 --- a/History.markdown +++ b/History.markdown @@ -32,6 +32,7 @@ * Updates to CODE OF CONDUCT (v1.4.0) (#7105) * Instructions to view theme’s files under Linux (#7095) * add jekyll-xml-source (#7114) + * Add the jekyll-firstimage filter plugin (#7127) ### Minor Enhancements From 180179303515cf82ed99503fedfe6f3f5497657b Mon Sep 17 00:00:00 2001 From: Jakob Krigovsky Date: Wed, 11 Jul 2018 16:01:17 +0200 Subject: [PATCH 19/40] Use .markdown for page templates (#7126) Merge pull request 7126 --- docs/_docs/themes.md | 4 ++-- lib/site_template/{about.md => about.markdown} | 0 lib/site_template/{index.md => index.markdown} | 0 test/test_new_command.rb | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename lib/site_template/{about.md => about.markdown} (100%) rename lib/site_template/{index.md => index.markdown} (100%) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index b8f469e5..a2fcc4c9 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -19,8 +19,8 @@ In the case of Minima, you see only the following files in your Jekyll site dire ├── _config.yml ├── _posts │ └── 2016-12-04-welcome-to-jekyll.markdown -├── about.md -└── index.md +├── about.markdown +└── index.markdown ``` The `Gemfile` and `Gemfile.lock` files are used by Bundler to keep track of the required gems and gem versions you need to build your Jekyll site. diff --git a/lib/site_template/about.md b/lib/site_template/about.markdown similarity index 100% rename from lib/site_template/about.md rename to lib/site_template/about.markdown diff --git a/lib/site_template/index.md b/lib/site_template/index.markdown similarity index 100% rename from lib/site_template/index.md rename to lib/site_template/index.markdown diff --git a/test/test_new_command.rb b/test/test_new_command.rb index 632ad3d5..6bb6ed3c 100644 --- a/test/test_new_command.rb +++ b/test/test_new_command.rb @@ -57,7 +57,7 @@ class TestNewCommand < JekyllUnitTest capture_output { Jekyll::Commands::New.process(@args) } new_site_files = dir_contents(@full_path).reject do |f| - File.extname(f) == ".markdown" + f.end_with?("welcome-to-jekyll.markdown") end assert_same_elements static_template_files, new_site_files From dcbc4433878ac9496f19e838197f17d56c0d1221 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 11 Jul 2018 10:01:20 -0400 Subject: [PATCH 20/40] Update history to reflect merge of #7126 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 0ccf4be5..9a32843d 100644 --- a/History.markdown +++ b/History.markdown @@ -41,6 +41,7 @@ * Liquefied link tag (#6269) * Suggest re-running command with --trace on fail (#6551) * Update item_property to return numbers as numbers instead of strings (#6608) + * Use .markdown for page templates (#7126) ### Major Enhancements From 5d1f85928ad6f764b3f0a71611462752f1203703 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 11 Jul 2018 13:32:39 -0400 Subject: [PATCH 21/40] Use a real theme in the example (#7125) Merge pull request 7125 --- docs/_docs/themes.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index a2fcc4c9..46068615 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -166,20 +166,21 @@ For example, search for [jekyll theme on RubyGems](https://rubygems.org/search?u To install a gem-based theme: -1. Add the theme to your site's `Gemfile`: +1. Add the theme gem to your site's `Gemfile`: ```ruby # ./Gemfile - gem "jekyll-theme-awesome" + # This is an example, declare the theme gem you want to use here + gem "jekyll-theme-minimal" ``` - Or if you've started with the `jekyll new` command, replace `gem "minima", "~> 2.0"` with your theme-gem: + Or if you've started with the `jekyll new` command, replace `gem "minima", "~> 2.0"` with the gem you want, e.g: ```diff # ./Gemfile - gem "minima", "~> 2.0" - + gem "jekyll-theme-awesome" + + gem "jekyll-theme-minimal" ``` 2. Install the theme: @@ -191,7 +192,7 @@ To install a gem-based theme: 3. Add the following to your site's `_config.yml` to activate the theme: ```yaml - theme: jekyll-theme-awesome + theme: jekyll-theme-minimal ``` 4. Build your site: From 06125425820eadbc412faaea087161fd8ef75da9 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 11 Jul 2018 13:32:41 -0400 Subject: [PATCH 22/40] Update history to reflect merge of #7125 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 9a32843d..39f23f52 100644 --- a/History.markdown +++ b/History.markdown @@ -33,6 +33,7 @@ * Instructions to view theme’s files under Linux (#7095) * add jekyll-xml-source (#7114) * Add the jekyll-firstimage filter plugin (#7127) + * Use a real theme in the example (#7125) ### Minor Enhancements From 9adac3a11ea405b5395247ae224cf40553a7abb6 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Thu, 12 Jul 2018 19:51:23 +0530 Subject: [PATCH 23/40] Fix Rubocop offences in test files (#7128) Merge pull request 7128 --- .rubocop.yml | 7 + test/helper.rb | 29 +- test/test_coffeescript.rb | 52 +- test/test_collections.rb | 40 +- test/test_command.rb | 4 +- test/test_commands_serve.rb | 52 +- test/test_configuration.rb | 108 ++-- test/test_convertible.rb | 4 +- test/test_doctor_command.rb | 16 +- test/test_document.rb | 110 ++-- test/test_drop.rb | 6 +- test/test_entry_filter.rb | 2 +- test/test_excerpt.rb | 11 +- test/test_filters.rb | 132 ++--- test/test_front_matter_defaults.rb | 66 +-- test/test_generated_site.rb | 12 +- test/test_kramdown.rb | 31 +- test/test_layout_reader.rb | 4 +- test/test_liquid_extensions.rb | 4 +- test/test_page.rb | 10 +- test/test_page_without_a_file.rb | 10 +- test/test_plugin_manager.rb | 36 +- test/test_regenerator.rb | 34 +- test/test_related_posts.rb | 6 +- test/test_sass.rb | 8 +- test/test_site.rb | 84 ++- test/test_site_drop.rb | 6 +- test/test_static_file.rb | 10 +- test/test_tags.rb | 887 ++++++++++++++--------------- test/test_utils.rb | 12 +- 30 files changed, 881 insertions(+), 912 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 81e11e29..63094135 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -11,6 +11,7 @@ AllCops: TargetRubyVersion: 2.3 Include: - lib/**/*.rb + - test/**/*.rb Exclude: - bin/**/* - exe/**/* @@ -82,6 +83,9 @@ Metrics/PerceivedComplexity: Max: 8 Naming/FileName: Enabled: false +Naming/HeredocDelimiterNaming: + Exclude: + - test/**/*.rb Naming/MemoizedInstanceVariableName: Exclude: - lib/jekyll/page_without_a_file.rb @@ -104,6 +108,9 @@ Style/Alias: EnforcedStyle: prefer_alias_method Style/AndOr: Severity: error +Style/ClassAndModuleChildren: + Exclude: + - test/**/*.rb Style/FrozenStringLiteralComment: EnforcedStyle: always Style/Documentation: diff --git a/test/helper.rb b/test/helper.rb index 9e01b7de..29185427 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -111,13 +111,13 @@ class JekyllUnitTest < Minitest::Test end def fixture_document(relative_path) - site = fixture_site({ + site = fixture_site( "collections" => { "methods" => { "output" => true, }, - }, - }) + } + ) site.read matching_doc = site.collections["methods"].docs.find do |doc| doc.relative_path == relative_path @@ -138,13 +138,13 @@ class JekyllUnitTest < Minitest::Test end def site_configuration(overrides = {}) - full_overrides = build_configs(overrides, build_configs({ - "destination" => dest_dir, - "incremental" => false, - })) - Configuration.from(full_overrides.merge({ - "source" => source_dir, - })) + full_overrides = build_configs(overrides, build_configs( + "destination" => dest_dir, + "incremental" => false + )) + Configuration.from(full_overrides.merge( + "source" => source_dir + )) end def clear_dest @@ -197,7 +197,6 @@ class FakeLogger end module TestWEBrick - module_function def mount_server(&block) @@ -205,7 +204,7 @@ module TestWEBrick begin server.mount("/", Jekyll::Commands::Serve::Servlet, document_root, - document_root_options) + document_root_options) server.start addr = server.listeners[0].addr @@ -235,11 +234,11 @@ module TestWEBrick end def document_root_options - WEBrick::Config::FileHandler.merge({ + WEBrick::Config::FileHandler.merge( :FancyIndexing => true, :NondisclosureName => [ ".ht*", "~*", - ], - }) + ] + ) end end diff --git a/test/test_coffeescript.rb b/test/test_coffeescript.rb index a60e0595..6c6c376b 100644 --- a/test/test_coffeescript.rb +++ b/test/test_coffeescript.rb @@ -9,33 +9,33 @@ class TestCoffeeScript < JekyllUnitTest @site = fixture_site @site.process @test_coffeescript_file = dest_dir("js/coffeescript.js") - @js_output = <<-JS -(function() { - $(function() { - var cube, cubes, list, num, square; - list = [1, 2, 3, 4, 5]; - square = function(x) { - return x * x; - }; - cube = function(x) { - return square(x) * x; - }; - cubes = (function() { - var i, len, results; - results = []; - for (i = 0, len = list.length; i < len; i++) { - num = list[i]; - results.push(math.cube(num)); - } - return results; - })(); - if (typeof elvis !== "undefined" && elvis !== null) { - return alert("I knew it!"); - } - }); + @js_output = <<~JS + (function() { + $(function() { + var cube, cubes, list, num, square; + list = [1, 2, 3, 4, 5]; + square = function(x) { + return x * x; + }; + cube = function(x) { + return square(x) * x; + }; + cubes = (function() { + var i, len, results; + results = []; + for (i = 0, len = list.length; i < len; i++) { + num = list[i]; + results.push(math.cube(num)); + } + return results; + })(); + if (typeof elvis !== "undefined" && elvis !== null) { + return alert("I knew it!"); + } + }); -}).call(this); -JS + }).call(this); + JS end should "write a JS file in place" do diff --git a/test/test_collections.rb b/test/test_collections.rb index 33d3f912..7af86dd8 100644 --- a/test/test_collections.rb +++ b/test/test_collections.rb @@ -94,13 +94,13 @@ class TestCollections < JekyllUnitTest context "a collection with permalink" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "methods" => { "permalink" => "/awesome/:path/", }, - }, - }) + } + ) @site.process @collection = @site.collections["methods"] end @@ -112,9 +112,9 @@ class TestCollections < JekyllUnitTest context "with a collection" do setup do - @site = fixture_site({ - "collections" => ["methods"], - }) + @site = fixture_site( + "collections" => ["methods"] + ) @site.process @collection = @site.collections["methods"] end @@ -154,35 +154,35 @@ class TestCollections < JekyllUnitTest should "not include the underscored files in the list of docs" do refute_includes @collection.docs.map(&:relative_path), "_methods/_do_not_read_me.md" refute_includes @collection.docs.map(&:relative_path), - "_methods/site/_dont_include_me_either.md" + "_methods/site/_dont_include_me_either.md" end end context "with a collection with metadata" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "methods" => { "foo" => "bar", "baz" => "whoo", }, - }, - }) + } + ) @site.process @collection = @site.collections["methods"] end should "extract the configuration collection information as metadata" do - assert_equal @collection.metadata, { "foo" => "bar", "baz" => "whoo" } + assert_equal @collection.metadata, "foo" => "bar", "baz" => "whoo" end end context "in safe mode" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => ["methods"], - "safe" => true, - }) + "safe" => true + ) @site.process @collection = @site.collections["methods"] end @@ -202,10 +202,10 @@ class TestCollections < JekyllUnitTest context "with dots in the filenames" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => ["with.dots"], - "safe" => true, - }) + "safe" => true + ) @site.process @collection = @site.collections["with.dots"] end @@ -231,14 +231,14 @@ class TestCollections < JekyllUnitTest context "a collection with included dotfiles" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "methods" => { "permalink" => "/awesome/:path/", }, }, - "include" => %w(.htaccess .gitignore), - }) + "include" => %w(.htaccess .gitignore) + ) @site.process @collection = @site.collections["methods"] end diff --git a/test/test_command.rb b/test/test_command.rb index 33e13798..d202628c 100644 --- a/test/test_command.rb +++ b/test/test_command.rb @@ -15,7 +15,9 @@ class TestCommand < JekyllUnitTest context "when fatal error occurs" do should "exit with non-zero error code" do site = Object.new - def site.process; raise Jekyll::Errors::FatalException; end + def site.process + raise Jekyll::Errors::FatalException + end error = assert_raises(SystemExit) { Command.process_site(site) } refute_equal 0, error.status end diff --git a/test/test_commands_serve.rb b/test/test_commands_serve.rb index ce9f1c65..b589de2f 100644 --- a/test/test_commands_serve.rb +++ b/test/test_commands_serve.rb @@ -5,7 +5,6 @@ require "mercenary" require "helper" require "httpclient" require "openssl" -require "thread" require "tmpdir" class TestCommandsServe < JekyllUnitTest @@ -126,9 +125,9 @@ class TestCommandsServe < JekyllUnitTest should "apply the max and min delay options" do skip_if_windows "EventMachine support on Windows is limited" opts = serve(@standard_options.merge( - "livereload_max_delay" => "1066", - "livereload_min_delay" => "3" - )) + "livereload_max_delay" => "1066", + "livereload_min_delay" => "3" + )) content = @client.get_content( "http://#{opts["host"]}:#{opts["port"]}/#{opts["baseurl"]}/hello.html" ) @@ -191,14 +190,14 @@ class TestCommandsServe < JekyllUnitTest end should "use user destinations" do - assert_equal "foo", custom_opts({ "destination" => "foo" })[ + assert_equal "foo", custom_opts("destination" => "foo")[ :DocumentRoot ] end should "use user port" do # WHAT?!?!1 Over 9000? That's impossible. - assert_equal 9001, custom_opts({ "port" => 9001 })[ + assert_equal 9001, custom_opts("port" => 9001)[ :Port ] end @@ -237,21 +236,20 @@ class TestCommandsServe < JekyllUnitTest expect(Jekyll::Commands::Serve).to receive(:start_up_webrick) end should "set the site url by default to `http://localhost:4000`" do - @merc.execute(:serve, { "watch" => false, "url" => "https://jekyllrb.com/" }) + @merc.execute(:serve, "watch" => false, "url" => "https://jekyllrb.com/") assert_equal 1, Jekyll.sites.count assert_equal "http://localhost:4000", Jekyll.sites.first.config["url"] end should "take `host`, `port` and `ssl` into consideration if set" do - @merc.execute(:serve, { - "watch" => false, - "host" => "example.com", - "port" => "9999", - "url" => "https://jekyllrb.com/", - "ssl_cert" => "foo", - "ssl_key" => "bar", - }) + @merc.execute(:serve, + "watch" => false, + "host" => "example.com", + "port" => "9999", + "url" => "https://jekyllrb.com/", + "ssl_cert" => "foo", + "ssl_key" => "bar") assert_equal 1, Jekyll.sites.count assert_equal "https://example.com:9999", Jekyll.sites.first.config["url"] @@ -262,7 +260,7 @@ class TestCommandsServe < JekyllUnitTest should "not update the site url" do expect(Jekyll).to receive(:env).and_return("production") expect(Jekyll::Commands::Serve).to receive(:start_up_webrick) - @merc.execute(:serve, { "watch" => false, "url" => "https://jekyllrb.com/" }) + @merc.execute(:serve, "watch" => false, "url" => "https://jekyllrb.com/") assert_equal 1, Jekyll.sites.count assert_equal "https://jekyllrb.com/", Jekyll.sites.first.config["url"] @@ -271,7 +269,7 @@ class TestCommandsServe < JekyllUnitTest context "verbose" do should "debug when verbose" do - assert_equal custom_opts({ "verbose" => true })[:Logger].level, 5 + assert_equal custom_opts("verbose" => true)[:Logger].level, 5 end should "warn when not verbose" do @@ -282,15 +280,15 @@ class TestCommandsServe < JekyllUnitTest context "enabling SSL" do should "raise if enabling without key or cert" do assert_raises RuntimeError do - custom_opts({ - "ssl_key" => "foo", - }) + custom_opts( + "ssl_key" => "foo" + ) end assert_raises RuntimeError do - custom_opts({ - "ssl_key" => "foo", - }) + custom_opts( + "ssl_key" => "foo" + ) end end @@ -299,12 +297,12 @@ class TestCommandsServe < JekyllUnitTest expect(OpenSSL::X509::Certificate).to receive(:new).and_return("c1") allow(File).to receive(:read).and_return("foo") - result = custom_opts({ + result = custom_opts( "ssl_cert" => "foo", "source" => "bar", "enable_ssl" => true, - "ssl_key" => "bar", - }) + "ssl_key" => "bar" + ) assert result[:SSLEnable] assert_equal result[:SSLPrivateKey], "c2" @@ -317,7 +315,7 @@ class TestCommandsServe < JekyllUnitTest allow(Jekyll::Commands::Serve).to receive(:start_up_webrick) expect(Jekyll).to receive(:configuration).once.and_call_original - @merc.execute(:serve, { "watch" => false }) + @merc.execute(:serve, "watch" => false) end end end diff --git a/test/test_configuration.rb b/test/test_configuration.rb index 17c0d219..3f19949a 100644 --- a/test/test_configuration.rb +++ b/test/test_configuration.rb @@ -15,7 +15,7 @@ class TestConfiguration < JekyllUnitTest end should "merge input over defaults" do - result = Configuration.from({ "source" => "blah" }) + result = Configuration.from("source" => "blah") refute_equal result["source"], Configuration::DEFAULTS["source"] assert_equal result["source"], "blah" end @@ -28,11 +28,9 @@ class TestConfiguration < JekyllUnitTest result = Configuration.from({}) assert_equal( result["collections"], - { - "posts" => { - "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title:output_ext", - }, + "posts" => { + "output" => true, + "permalink" => "/:categories/:year/:month/:day/:title:output_ext", } ) end @@ -72,7 +70,7 @@ class TestConfiguration < JekyllUnitTest assert_instance_of Hash, result["collections"] assert_equal( result["collections"], - { "posts" => { "output" => true }, "methods" => {} } + "posts" => { "output" => true }, "methods" => {} ) end @@ -81,17 +79,15 @@ class TestConfiguration < JekyllUnitTest .add_default_collections assert_equal( result["collections"], - { - "posts" => { - "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title/", - }, + "posts" => { + "output" => true, + "permalink" => "/:categories/:year/:month/:day/:title/", } ) result = Configuration[{ "permalink" => nil, "collections" => {} }] .add_default_collections - assert_equal result["collections"], { "posts" => { "output" => true } } + assert_equal result["collections"], "posts" => { "output" => true } end should "forces posts to output" do @@ -186,7 +182,7 @@ class TestConfiguration < JekyllUnitTest allow(SafeYAML) .to receive(:load_file) .with("not_empty.yml") - .and_return({ "foo" => "bar", "include" => "", "exclude" => "" }) + .and_return("foo" => "bar", "include" => "", "exclude" => "") Jekyll.logger.log_level = :warn read_config = @config.read_config_files(["empty.yml", "not_empty.yml"]) Jekyll.logger.log_level = :info @@ -301,11 +297,11 @@ class TestConfiguration < JekyllUnitTest allow($stderr) .to receive(:puts) .with(Colorator.red( - "Fatal: ".rjust(20) + \ - "The configuration file '#{@user_config}' could not be found." - )) + "Fatal: ".rjust(20) + \ + "The configuration file '#{@user_config}' could not be found." + )) assert_raises LoadError do - Jekyll.configuration({ "config" => [@user_config] }) + Jekyll.configuration("config" => [@user_config]) end end @@ -334,14 +330,14 @@ class TestConfiguration < JekyllUnitTest allow(SafeYAML) .to receive(:load_file) .with(@paths[:other]) - .and_return({ "baseurl" => "http://example.com" }) + .and_return("baseurl" => "http://example.com") allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:other]}") assert_equal \ - site_configuration({ + site_configuration( "baseurl" => "http://example.com", - "config" => @paths[:other], - }), - Jekyll.configuration(test_config.merge({ "config" => @paths[:other] })) + "config" => @paths[:other] + ), + Jekyll.configuration(test_config.merge("config" => @paths[:other])) end should "load different config if specified with symbol key" do @@ -349,33 +345,33 @@ class TestConfiguration < JekyllUnitTest allow(SafeYAML) .to receive(:load_file) .with(@paths[:other]) - .and_return({ "baseurl" => "http://example.com" }) + .and_return("baseurl" => "http://example.com") allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:other]}") assert_equal \ - site_configuration({ + site_configuration( "baseurl" => "http://example.com", - "config" => @paths[:other], - }), - Jekyll.configuration(test_config.merge({ :config => @paths[:other] })) + "config" => @paths[:other] + ), + Jekyll.configuration(test_config.merge(:config => @paths[:other])) end should "load default config if path passed is empty" do allow(SafeYAML).to receive(:load_file).with(@paths[:default]).and_return({}) allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:default]}") assert_equal \ - site_configuration({ "config" => [@paths[:empty]] }), - Jekyll.configuration(test_config.merge({ "config" => [@paths[:empty]] })) + site_configuration("config" => [@paths[:empty]]), + Jekyll.configuration(test_config.merge("config" => [@paths[:empty]])) end should "successfully load a TOML file" do Jekyll.logger.log_level = :warn assert_equal \ - site_configuration({ + site_configuration( "baseurl" => "/you-beautiful-blog-you", "title" => "My magnificent site, wut", - "config" => [@paths[:toml]], - }), - Jekyll.configuration(test_config.merge({ "config" => [@paths[:toml]] })) + "config" => [@paths[:toml]] + ), + Jekyll.configuration(test_config.merge("config" => [@paths[:toml]])) Jekyll.logger.log_level = :info end @@ -389,12 +385,12 @@ class TestConfiguration < JekyllUnitTest allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:other]}") allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:toml]}") assert_equal( - site_configuration({ - "config" => [@paths[:default], @paths[:other], @paths[:toml]], - }), + site_configuration( + "config" => [@paths[:default], @paths[:other], @paths[:toml]] + ), Jekyll.configuration( test_config.merge( - { "config" => [@paths[:default], @paths[:other], @paths[:toml]] } + "config" => [@paths[:default], @paths[:other], @paths[:toml]] ) ) ) @@ -404,11 +400,11 @@ class TestConfiguration < JekyllUnitTest allow(SafeYAML) .to receive(:load_file) .with(@paths[:default]) - .and_return({ "baseurl" => "http://example.dev" }) + .and_return("baseurl" => "http://example.dev") allow(SafeYAML) .to receive(:load_file) .with(@paths[:other]) - .and_return({ "baseurl" => "http://example.com" }) + .and_return("baseurl" => "http://example.com") allow($stdout) .to receive(:puts) .with("Configuration file: #{@paths[:default]}") @@ -416,12 +412,12 @@ class TestConfiguration < JekyllUnitTest .to receive(:puts) .with("Configuration file: #{@paths[:other]}") assert_equal \ - site_configuration({ + site_configuration( "baseurl" => "http://example.com", - "config" => [@paths[:default], @paths[:other]], - }), + "config" => [@paths[:default], @paths[:other]] + ), Jekyll.configuration( - test_config.merge({ "config" => [@paths[:default], @paths[:other]] }) + test_config.merge("config" => [@paths[:default], @paths[:other]]) ) end end @@ -437,41 +433,41 @@ class TestConfiguration < JekyllUnitTest conf = Configuration[default_configuration].tap do |c| c["collections"] = ["docs"] end - assert_equal conf.add_default_collections, conf.merge({ + assert_equal conf.add_default_collections, conf.merge( "collections" => { "docs" => {}, "posts" => { "output" => true, "permalink" => "/:categories/:year/:month/:day/:title:output_ext", }, - }, - }) + } + ) end should "force collections.posts.output = true" do conf = Configuration[default_configuration].tap do |c| c["collections"] = { "posts" => { "output" => false } } end - assert_equal conf.add_default_collections, conf.merge({ + assert_equal conf.add_default_collections, conf.merge( "collections" => { "posts" => { "output" => true, "permalink" => "/:categories/:year/:month/:day/:title:output_ext", }, - }, - }) + } + ) end should "set collections.posts.permalink if it's not set" do conf = Configuration[default_configuration] - assert_equal conf.add_default_collections, conf.merge({ + assert_equal conf.add_default_collections, conf.merge( "collections" => { "posts" => { "output" => true, "permalink" => "/:categories/:year/:month/:day/:title:output_ext", }, - }, - }) + } + ) end should "leave collections.posts.permalink alone if it is set" do @@ -481,14 +477,14 @@ class TestConfiguration < JekyllUnitTest "posts" => { "permalink" => posts_permalink }, } end - assert_equal conf.add_default_collections, conf.merge({ + assert_equal conf.add_default_collections, conf.merge( "collections" => { "posts" => { "output" => true, "permalink" => posts_permalink, }, - }, - }) + } + ) end end diff --git a/test/test_convertible.rb b/test/test_convertible.rb index 5b73e252..a3bea6ba 100644 --- a/test/test_convertible.rb +++ b/test/test_convertible.rb @@ -8,8 +8,8 @@ class TestConvertible < JekyllUnitTest setup do @convertible = OpenStruct.new( "site" => Site.new(Jekyll.configuration( - "source" => File.expand_path("fixtures", __dir__) - )) + "source" => File.expand_path("fixtures", __dir__) + )) ) @convertible.extend Jekyll::Convertible @base = File.expand_path("fixtures", __dir__) diff --git a/test/test_doctor_command.rb b/test/test_doctor_command.rb index 18287868..ac453810 100644 --- a/test/test_doctor_command.rb +++ b/test/test_doctor_command.rb @@ -10,10 +10,10 @@ class TestDoctorCommand < JekyllUnitTest end should "return success on a valid site/page" do - @site = Site.new(Jekyll.configuration({ - "source" => File.join(source_dir, "/_urls_differ_by_case_valid"), - "destination" => dest_dir, - })) + @site = Site.new(Jekyll.configuration( + "source" => File.join(source_dir, "/_urls_differ_by_case_valid"), + "destination" => dest_dir + )) @site.process output = capture_stderr do ret = Jekyll::Commands::Doctor.urls_only_differ_by_case(@site) @@ -23,10 +23,10 @@ class TestDoctorCommand < JekyllUnitTest end should "return warning for pages only differing by case" do - @site = Site.new(Jekyll.configuration({ - "source" => File.join(source_dir, "/_urls_differ_by_case_invalid"), - "destination" => dest_dir, - })) + @site = Site.new(Jekyll.configuration( + "source" => File.join(source_dir, "/_urls_differ_by_case_invalid"), + "destination" => dest_dir + )) @site.process output = capture_stderr do ret = Jekyll::Commands::Doctor.urls_only_differ_by_case(@site) diff --git a/test/test_document.rb b/test/test_document.rb index b652b454..7f449c75 100644 --- a/test/test_document.rb +++ b/test/test_document.rb @@ -10,10 +10,9 @@ class TestDocument < JekyllUnitTest def setup_encoded_document(filename) site = fixture_site("collections" => ["encodings"]) site.process - Document.new(site.in_source_dir(File.join("_encodings", filename)), { - :site => site, - :collection => site.collections["encodings"], - }).tap(&:read) + Document.new(site.in_source_dir(File.join("_encodings", filename)), + :site => site, + :collection => site.collections["encodings"]).tap(&:read) end def setup_document_with_dates(filename) @@ -21,19 +20,18 @@ class TestDocument < JekyllUnitTest site.process docs = nil with_env("TZ", "UTC") do - docs = Document.new(site.in_source_dir(File.join("_dates", filename)), { - :site => site, - :collection => site.collections["dates"], - }).tap(&:read) + docs = Document.new(site.in_source_dir(File.join("_dates", filename)), + :site => site, + :collection => site.collections["dates"]).tap(&:read) end docs end context "a document in a collection" do setup do - @site = fixture_site({ - "collections" => ["methods"], - }) + @site = fixture_site( + "collections" => ["methods"] + ) @site.process @document = @site.collections["methods"].docs.detect do |d| d.relative_path == "_methods/configuration.md" @@ -112,7 +110,7 @@ class TestDocument < JekyllUnitTest context "with YAML ending in three dots" do setup do - @site = fixture_site({ "collections" => ["methods"] }) + @site = fixture_site("collections" => ["methods"]) @site.process @document = @site.collections["methods"].docs.detect do |d| d.relative_path == "_methods/yaml_with_dots.md" @@ -136,7 +134,7 @@ class TestDocument < JekyllUnitTest context "a document as part of a collection with front matter defaults" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => ["slides"], "defaults" => [{ "scope" => { "path" => "", "type" => "slides" }, @@ -145,8 +143,8 @@ class TestDocument < JekyllUnitTest "key" => "myval", }, }, - },], - }) + },] + ) @site.process @document = @site.collections["slides"].docs.select { |d| d.is_a?(Document) }.first end @@ -166,7 +164,7 @@ class TestDocument < JekyllUnitTest context "a document as part of a collection with overridden default values" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => ["slides"], "defaults" => [{ "scope" => { "path" => "", "type" => "slides" }, @@ -176,8 +174,8 @@ class TestDocument < JekyllUnitTest "test2" => "default1", }, }, - },], - }) + },] + ) @site.process @document = @site.collections["slides"].docs[1] end @@ -194,7 +192,7 @@ class TestDocument < JekyllUnitTest context "a document as part of a collection with valid path" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => ["slides"], "defaults" => [{ "scope" => { "path" => "_slides", "type" => "slides" }, @@ -203,8 +201,8 @@ class TestDocument < JekyllUnitTest "key" => "value123", }, }, - },], - }) + },] + ) @site.process @document = @site.collections["slides"].docs.first end @@ -218,7 +216,7 @@ class TestDocument < JekyllUnitTest context "a document as part of a collection with invalid path" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => ["slides"], "defaults" => [{ "scope" => { "path" => "somepath", "type" => "slides" }, @@ -227,8 +225,8 @@ class TestDocument < JekyllUnitTest "key" => "myval", }, }, - },], - }) + },] + ) @site.process @document = @site.collections["slides"].docs.first end @@ -242,9 +240,9 @@ class TestDocument < JekyllUnitTest context "a document in a collection with a custom permalink" do setup do - @site = fixture_site({ - "collections" => ["slides"], - }) + @site = fixture_site( + "collections" => ["slides"] + ) @site.process @document = @site.collections["slides"].docs[2] @dest_file = dest_dir("slide/3/index.html") @@ -261,15 +259,15 @@ class TestDocument < JekyllUnitTest context "a document in a collection with custom filename permalinks" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "slides" => { "output" => true, "permalink" => "/slides/test/:name", }, }, - "permalink" => "pretty", - }) + "permalink" => "pretty" + ) @site.process @document = @site.collections["slides"].docs[0] @dest_file = dest_dir("slides/test/example-slide-1.html") @@ -290,13 +288,13 @@ class TestDocument < JekyllUnitTest context "a document in a collection with pretty permalink style" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "slides" => { "output" => true, }, - }, - }) + } + ) @site.permalink_style = :pretty @site.process @document = @site.collections["slides"].docs[0] @@ -314,13 +312,13 @@ class TestDocument < JekyllUnitTest context "a document in a collection with cased file name" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "slides" => { "output" => true, }, - }, - }) + } + ) @site.permalink_style = :pretty @site.process @document = @site.collections["slides"].docs[7] @@ -334,13 +332,13 @@ class TestDocument < JekyllUnitTest context "a document in a collection with cased file name" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "slides" => { "output" => true, }, - }, - }) + } + ) @site.process @document = @site.collections["slides"].docs[6] @dest_file = dest_dir("slides/example-slide-7.php") @@ -365,14 +363,14 @@ class TestDocument < JekyllUnitTest context "documents in a collection with custom title permalinks" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "slides" => { "output" => true, "permalink" => "/slides/:title", }, - }, - }) + } + ) @site.process @document = @site.collections["slides"].docs[3] @document_without_slug = @site.collections["slides"].docs[4] @@ -410,9 +408,9 @@ class TestDocument < JekyllUnitTest context "document with a permalink with dots & a trailing slash" do setup do - @site = fixture_site({ "collections" => { + @site = fixture_site("collections" => { "with.dots" => { "output" => true }, - }, }) + }) @site.process @document = @site.collections["with.dots"].docs.last @dest_file = dest_dir("with.dots", "permalink.with.slash.tho", "index.html") @@ -433,13 +431,13 @@ class TestDocument < JekyllUnitTest context "documents in a collection" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "slides" => { "output" => true, }, - }, - }) + } + ) @site.process @files = @site.collections["slides"].docs end @@ -465,13 +463,13 @@ class TestDocument < JekyllUnitTest context "a static file in a collection" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "slides" => { "output" => true, }, - }, - }) + } + ) @site.process @document = @site.collections["slides"].files.find do |doc| doc.relative_path == "_slides/octojekyll.png" @@ -498,13 +496,13 @@ class TestDocument < JekyllUnitTest context "a document in a collection with non-alphabetic file name" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "methods" => { "output" => true, }, - }, - }) + } + ) @site.process @document = @site.collections["methods"].docs.find do |doc| doc.relative_path == "_methods/escape-+ #%20[].md" @@ -527,13 +525,13 @@ class TestDocument < JekyllUnitTest context "a document in a collection with dash-separated numeric file name" do setup do - @site = fixture_site({ + @site = fixture_site( "collections" => { "methods" => { "output" => true, }, - }, - }) + } + ) @site.process @document = @site.collections["methods"].docs.find do |doc| doc.relative_path == "_methods/3940394-21-9393050-fifif1323-test.md" diff --git a/test/test_drop.rb b/test/test_drop.rb index 5c46d81d..aa9387db 100644 --- a/test/test_drop.rb +++ b/test/test_drop.rb @@ -17,9 +17,9 @@ end class TestDrop < JekyllUnitTest context "Drops" do setup do - @site = fixture_site({ - "collections" => ["methods"], - }) + @site = fixture_site( + "collections" => ["methods"] + ) @site.process @document = @site.collections["methods"].docs.detect do |d| d.relative_path == "_methods/configuration.md" diff --git a/test/test_entry_filter.rb b/test/test_entry_filter.rb index c9025092..7e84df70 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -10,7 +10,7 @@ class TestEntryFilter < JekyllUnitTest should "filter entries" do ent1 = %w(foo.markdown bar.markdown baz.markdown #baz.markdown# - .baz.markdow foo.markdown~ .htaccess _posts _pages ~$benbalter.docx) + .baz.markdow foo.markdown~ .htaccess _posts _pages ~$benbalter.docx) entries = EntryFilter.new(@site).filter(ent1) assert_equal %w(foo.markdown bar.markdown baz.markdown .htaccess), entries diff --git a/test/test_excerpt.rb b/test/test_excerpt.rb index 24647dec..986ef6b4 100644 --- a/test/test_excerpt.rb +++ b/test/test_excerpt.rb @@ -4,10 +4,9 @@ require "helper" class TestExcerpt < JekyllUnitTest def setup_post(file) - Document.new(@site.in_source_dir(File.join("_posts", file)), { - :site => @site, - :collection => @site.posts, - }).tap(&:read) + Document.new(@site.in_source_dir(File.join("_posts", file)), + :site => @site, + :collection => @site.posts).tap(&:read) end def do_render(document) @@ -81,9 +80,9 @@ class TestExcerpt < JekyllUnitTest context "#relative_path" do should "return its document's relative path with '/#excerpt' appended" do assert_equal "#{@excerpt.doc.relative_path}/#excerpt", - @excerpt.relative_path + @excerpt.relative_path assert_equal "_posts/2013-07-22-post-excerpt-with-layout.markdown/#excerpt", - @excerpt.relative_path + @excerpt.relative_path end end diff --git a/test/test_filters.rb b/test/test_filters.rb index f0f37c4e..c8909f25 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -9,7 +9,7 @@ class TestFilters < JekyllUnitTest def initialize(opts = {}) @site = Jekyll::Site.new(opts.merge("skip_config_files" => true)) - @context = Liquid::Context.new(@site.site_payload, {}, { :site => @site }) + @context = Liquid::Context.new(@site.site_payload, {}, :site => @site) end end @@ -37,12 +37,12 @@ class TestFilters < JekyllUnitTest context "filters" do setup do @sample_time = Time.utc(2013, 3, 27, 11, 22, 33) - @filter = make_filter_mock({ + @filter = make_filter_mock( "timezone" => "UTC", "url" => "http://example.com", "baseurl" => "/base", - "dont_show_posts_before" => @sample_time, - }) + "dont_show_posts_before" => @sample_time + ) @sample_date = Date.parse("2013-03-02") @time_as_string = "September 11, 2001 12:46:30 -0000" @time_as_numeric = 1_399_680_607 @@ -88,7 +88,7 @@ class TestFilters < JekyllUnitTest end should "escapes special characters when configured to do so" do - kramdown = make_filter_mock({ :kramdown => { :entity_output => :symbolic } }) + kramdown = make_filter_mock(:kramdown => { :entity_output => :symbolic }) assert_equal( "“This filter’s test…”", kramdown.smartify(%q{"This filter's test..."}) @@ -406,82 +406,82 @@ class TestFilters < JekyllUnitTest should "ensure the leading slash for the baseurl" do page_url = "about/my_favorite_page/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => "base", - }) + "baseurl" => "base" + ) assert_equal "http://example.com/base/#{page_url}", filter.absolute_url(page_url) end should "be ok with a blank but present 'url'" do page_url = "about/my_favorite_page/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "", - "baseurl" => "base", - }) + "baseurl" => "base" + ) assert_equal "/base/#{page_url}", filter.absolute_url(page_url) end should "be ok with a nil 'url'" do page_url = "about/my_favorite_page/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => nil, - "baseurl" => "base", - }) + "baseurl" => "base" + ) assert_equal "/base/#{page_url}", filter.absolute_url(page_url) end should "be ok with a nil 'baseurl'" do page_url = "about/my_favorite_page/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => nil, - }) + "baseurl" => nil + ) assert_equal "http://example.com/#{page_url}", filter.absolute_url(page_url) end should "not prepend a forward slash if input is empty" do page_url = "" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => "/base", - }) + "baseurl" => "/base" + ) assert_equal "http://example.com/base", filter.absolute_url(page_url) end should "not append a forward slash if input is '/'" do page_url = "/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => "/base", - }) + "baseurl" => "/base" + ) assert_equal "http://example.com/base/", filter.absolute_url(page_url) end should "not append a forward slash if input is '/' and nil 'baseurl'" do page_url = "/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => nil, - }) + "baseurl" => nil + ) assert_equal "http://example.com/", filter.absolute_url(page_url) end should "not append a forward slash if both input and baseurl are simply '/'" do page_url = "/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => "/", - }) + "baseurl" => "/" + ) assert_equal "http://example.com/", filter.absolute_url(page_url) end should "normalize international URLs" do page_url = "" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://ümlaut.example.org/", - "baseurl" => nil, - }) + "baseurl" => nil + ) assert_equal "http://xn--mlaut-jva.example.org/", filter.absolute_url(page_url) end @@ -492,19 +492,19 @@ class TestFilters < JekyllUnitTest should "transform the input URL to a string" do page_url = "/my-page.html" - filter = make_filter_mock({ "url" => Value.new(proc { "http://example.org" }) }) + filter = make_filter_mock("url" => Value.new(proc { "http://example.org" })) assert_equal "http://example.org#{page_url}", filter.absolute_url(page_url) end should "not raise a TypeError when passed a hash" do - assert @filter.absolute_url({ "foo" => "bar" }) + assert @filter.absolute_url("foo" => "bar") end context "with a document" do setup do - @site = fixture_site({ - "collections" => ["methods"], - }) + @site = fixture_site( + "collections" => ["methods"] + ) @site.process @document = @site.collections["methods"].docs.detect do |d| d.relative_path == "_methods/configuration.md" @@ -531,7 +531,7 @@ class TestFilters < JekyllUnitTest should "ensure the leading slash for the baseurl" do page_url = "about/my_favorite_page/" - filter = make_filter_mock({ "baseurl" => "base" }) + filter = make_filter_mock("baseurl" => "base") assert_equal "/base/#{page_url}", filter.relative_url(page_url) end @@ -542,51 +542,51 @@ class TestFilters < JekyllUnitTest should "be ok with a nil 'baseurl'" do page_url = "about/my_favorite_page/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => nil, - }) + "baseurl" => nil + ) assert_equal "/#{page_url}", filter.relative_url(page_url) end should "not prepend a forward slash if input is empty" do page_url = "" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => "/base", - }) + "baseurl" => "/base" + ) assert_equal "/base", filter.relative_url(page_url) end should "not prepend a forward slash if baseurl ends with a single '/'" do page_url = "/css/main.css" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => "/base/", - }) + "baseurl" => "/base/" + ) assert_equal "/base/css/main.css", filter.relative_url(page_url) end should "not return valid URI if baseurl ends with multiple '/'" do page_url = "/css/main.css" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => "/base//", - }) + "baseurl" => "/base//" + ) refute_equal "/base/css/main.css", filter.relative_url(page_url) end should "not prepend a forward slash if both input and baseurl are simply '/'" do page_url = "/" - filter = make_filter_mock({ + filter = make_filter_mock( "url" => "http://example.com", - "baseurl" => "/", - }) + "baseurl" => "/" + ) assert_equal "/", filter.relative_url(page_url) end should "not return the url by reference" do - filter = make_filter_mock({ :baseurl => nil }) + filter = make_filter_mock(:baseurl => nil) page = Page.new(filter.site, test_dir("fixtures"), "", "front_matter.erb") assert_equal "/front_matter.erb", page.url url = filter.relative_url(page.url) @@ -596,7 +596,7 @@ class TestFilters < JekyllUnitTest should "transform the input baseurl to a string" do page_url = "/my-page.html" - filter = make_filter_mock({ "baseurl" => Value.new(proc { "/baseurl/" }) }) + filter = make_filter_mock("baseurl" => Value.new(proc { "/baseurl/" })) assert_equal "/baseurl#{page_url}", filter.relative_url(page_url) end @@ -640,7 +640,7 @@ class TestFilters < JekyllUnitTest context "jsonify filter" do should "convert hash to json" do - assert_equal "{\"age\":18}", @filter.jsonify({ :age => 18 }) + assert_equal "{\"age\":18}", @filter.jsonify(:age => 18) end should "convert array to json" do @@ -705,7 +705,7 @@ class TestFilters < JekyllUnitTest { "name" => name, :v => 1, - :thing => M.new({ :kay => "jewelers" }), + :thing => M.new(:kay => "jewelers"), :stuff => true, } end @@ -973,7 +973,7 @@ class TestFilters < JekyllUnitTest @filter.site.tap(&:read) posts = @filter.site.site_payload["site"]["posts"] results = @filter.where_exp(posts, "post", - "post.date > site.dont_show_posts_before") + "post.date > site.dont_show_posts_before") assert_equal posts.select { |p| p.date > @sample_time }.count, results.length end end @@ -1085,19 +1085,19 @@ class TestFilters < JekyllUnitTest end should "return sorted by property array" do assert_equal [{ "a" => 1 }, { "a" => 2 }, { "a" => 3 }, { "a" => 4 }], - @filter.sort([{ "a" => 4 }, { "a" => 3 }, { "a" => 1 }, { "a" => 2 }], "a") + @filter.sort([{ "a" => 4 }, { "a" => 3 }, { "a" => 1 }, { "a" => 2 }], "a") end should "return sorted by property array with numeric strings sorted as numbers" do assert_equal([{ "a" => ".5" }, { "a" => "0.65" }, { "a" => "10" }], - @filter.sort([{ "a" => "10" }, { "a" => ".5" }, { "a" => "0.65" }], "a")) + @filter.sort([{ "a" => "10" }, { "a" => ".5" }, { "a" => "0.65" }], "a")) end should "return sorted by property array with numeric strings first" do assert_equal([{ "a" => ".5" }, { "a" => "0.6" }, { "a" => "twelve" }], - @filter.sort([{ "a" => "twelve" }, { "a" => ".5" }, { "a" => "0.6" }], "a")) + @filter.sort([{ "a" => "twelve" }, { "a" => ".5" }, { "a" => "0.6" }], "a")) end should "return sorted by property array with numbers and strings " do assert_equal([{ "a" => "1" }, { "a" => "1abc" }, { "a" => "20" }], - @filter.sort([{ "a" => "20" }, { "a" => "1" }, { "a" => "1abc" }], "a")) + @filter.sort([{ "a" => "20" }, { "a" => "1" }, { "a" => "1abc" }], "a")) end should "return sorted by property array with nils first" do ary = [{ "a" => 2 }, { "b" => 1 }, { "a" => 1 }] @@ -1106,13 +1106,13 @@ class TestFilters < JekyllUnitTest end should "return sorted by property array with nils last" do assert_equal [{ "a" => 1 }, { "a" => 2 }, { "b" => 1 }], - @filter.sort([{ "a" => 2 }, { "b" => 1 }, { "a" => 1 }], "a", "last") + @filter.sort([{ "a" => 2 }, { "b" => 1 }, { "a" => 1 }], "a", "last") end should "return sorted by subproperty array" do assert_equal [{ "a" => { "b" => 1 } }, { "a" => { "b" => 2 } }, { "a" => { "b" => 3 } },], - @filter.sort([{ "a" => { "b" => 2 } }, { "a" => { "b" => 1 } }, - { "a" => { "b" => 3 } },], "a.b") + @filter.sort([{ "a" => { "b" => 2 } }, { "a" => { "b" => 1 } }, + { "a" => { "b" => 3 } },], "a.b") end end @@ -1140,7 +1140,7 @@ class TestFilters < JekyllUnitTest context "inspect filter" do should "return a HTML-escaped string representation of an object" do - assert_equal "{"<a>"=>1}", @filter.inspect({ "" => 1 }) + assert_equal "{"<a>"=>1}", @filter.inspect("" => 1) end should "quote strings" do diff --git a/test/test_front_matter_defaults.rb b/test/test_front_matter_defaults.rb index dab4385c..ee12f205 100644 --- a/test/test_front_matter_defaults.rb +++ b/test/test_front_matter_defaults.rb @@ -5,7 +5,7 @@ require "helper" class TestFrontMatterDefaults < JekyllUnitTest context "A site with full front matter defaults" do setup do - @site = fixture_site({ + @site = fixture_site( "defaults" => [{ "scope" => { "path" => "contacts", @@ -14,8 +14,8 @@ class TestFrontMatterDefaults < JekyllUnitTest "values" => { "key" => "val", }, - },], - }) + },] + ) @output = capture_output { @site.process } @affected = @site.pages.find { |page| page.relative_path == "contacts/bar.html" } @not_affected = @site.pages.find { |page| page.relative_path == "about.html" } @@ -33,7 +33,7 @@ class TestFrontMatterDefaults < JekyllUnitTest context "A site with full front matter defaults (glob)" do setup do - @site = fixture_site({ + @site = fixture_site( "defaults" => [{ "scope" => { "path" => "contacts/*.html", @@ -42,8 +42,8 @@ class TestFrontMatterDefaults < JekyllUnitTest "values" => { "key" => "val", }, - },], - }) + },] + ) @output = capture_output { @site.process } @affected = @site.pages.find { |page| page.relative_path == "contacts/bar.html" } @not_affected = @site.pages.find { |page| page.relative_path == "about.html" } @@ -61,7 +61,7 @@ class TestFrontMatterDefaults < JekyllUnitTest context "A site with front matter type pages and an extension" do setup do - @site = fixture_site({ + @site = fixture_site( "defaults" => [{ "scope" => { "path" => "index.html", @@ -69,8 +69,8 @@ class TestFrontMatterDefaults < JekyllUnitTest "values" => { "key" => "val", }, - },], - }) + },] + ) @site.process @affected = @site.pages.find { |page| page.relative_path == "index.html" } @@ -85,7 +85,7 @@ class TestFrontMatterDefaults < JekyllUnitTest context "A site with front matter defaults with no type" do setup do - @site = fixture_site({ + @site = fixture_site( "defaults" => [{ "scope" => { "path" => "win", @@ -93,8 +93,8 @@ class TestFrontMatterDefaults < JekyllUnitTest "values" => { "key" => "val", }, - },], - }) + },] + ) @site.process @affected = @site.posts.docs.find { |page| page.relative_path =~ %r!win\/! } @@ -109,7 +109,7 @@ class TestFrontMatterDefaults < JekyllUnitTest context "A site with front matter defaults with no path and a deprecated type" do setup do - @site = fixture_site({ + @site = fixture_site( "defaults" => [{ "scope" => { "type" => "page", @@ -117,8 +117,8 @@ class TestFrontMatterDefaults < JekyllUnitTest "values" => { "key" => "val", }, - },], - }) + },] + ) @site.process @affected = @site.pages @@ -134,7 +134,7 @@ class TestFrontMatterDefaults < JekyllUnitTest context "A site with front matter defaults with no path" do setup do - @site = fixture_site({ + @site = fixture_site( "defaults" => [{ "scope" => { "type" => "pages", @@ -142,8 +142,8 @@ class TestFrontMatterDefaults < JekyllUnitTest "values" => { "key" => "val", }, - },], - }) + },] + ) @site.process @affected = @site.pages @not_affected = @site.posts.docs @@ -158,15 +158,15 @@ class TestFrontMatterDefaults < JekyllUnitTest context "A site with front matter defaults with no path or type" do setup do - @site = fixture_site({ + @site = fixture_site( "defaults" => [{ "scope" => { }, "values" => { "key" => "val", }, - },], - }) + },] + ) @site.process @affected = @site.pages @not_affected = @site.posts @@ -180,13 +180,13 @@ class TestFrontMatterDefaults < JekyllUnitTest context "A site with front matter defaults with no scope" do setup do - @site = fixture_site({ + @site = fixture_site( "defaults" => [{ "values" => { "key" => "val", }, - },], - }) + },] + ) @site.process @affected = @site.pages @not_affected = @site.posts @@ -200,15 +200,15 @@ class TestFrontMatterDefaults < JekyllUnitTest context "A site with front matter defaults with quoted date" do setup do - @site = Site.new(Jekyll.configuration({ - "source" => source_dir, - "destination" => dest_dir, - "defaults" => [{ - "values" => { - "date" => "2015-01-01 00:00:01", - }, - },], - })) + @site = Site.new(Jekyll.configuration( + "source" => source_dir, + "destination" => dest_dir, + "defaults" => [{ + "values" => { + "date" => "2015-01-01 00:00:01", + }, + },] + )) end should "not raise error" do diff --git a/test/test_generated_site.rb b/test/test_generated_site.rb index 65b82fe8..56c2bf4e 100644 --- a/test/test_generated_site.rb +++ b/test/test_generated_site.rb @@ -70,12 +70,12 @@ class TestGeneratedSite < JekyllUnitTest time_regexp = "\\d+:\\d+" # # adding a pipe character at the beginning preserves formatting with newlines - expected_output = Regexp.new <<-OUTPUT -| - /css/screen.css last edited at #{time_regexp} with extname .css - - /pgp.key last edited at #{time_regexp} with extname .key - - /products.yml last edited at #{time_regexp} with extname .yml - - /symlink-test/symlinked-dir/screen.css last edited at #{time_regexp} with extname .css -OUTPUT + expected_output = Regexp.new <<~OUTPUT + | - /css/screen.css last edited at #{time_regexp} with extname .css + - /pgp.key last edited at #{time_regexp} with extname .key + - /products.yml last edited at #{time_regexp} with extname .yml + - /symlink-test/symlinked-dir/screen.css last edited at #{time_regexp} with extname .css + OUTPUT assert_match expected_output, File.read(dest_dir("static_files.html")) end end diff --git a/test/test_kramdown.rb b/test/test_kramdown.rb index 62b70ddd..d95955f4 100644 --- a/test/test_kramdown.rb +++ b/test/test_kramdown.rb @@ -40,18 +40,18 @@ class TestKramdown < JekyllUnitTest @kramdown_config_keys.each do |key| assert kramdown_config.key?(key.to_sym), - "Expected #{kramdown_config} to include key #{key.to_sym.inspect}" + "Expected #{kramdown_config} to include key #{key.to_sym.inspect}" end @syntax_highlighter_opts_config_keys.each do |key| assert kramdown_config["syntax_highlighter_opts"].key?(key.to_sym), - "Expected #{kramdown_config["syntax_highlighter_opts"]} to include " \ - "key #{key.to_sym.inspect}" + "Expected #{kramdown_config["syntax_highlighter_opts"]} to include " \ + "key #{key.to_sym.inspect}" end assert_equal kramdown_config["smart_quotes"], kramdown_config[:smart_quotes] assert_equal kramdown_config["syntax_highlighter_opts"]["css"], - kramdown_config[:syntax_highlighter_opts][:css] + kramdown_config[:syntax_highlighter_opts][:css] end should "run Kramdown" do @@ -82,7 +82,7 @@ class TestKramdown < JekyllUnitTest markdown = Converters::Markdown.new(Utils.deep_merge_hashes(@config, override)) assert_match %r!

(«|«)Pit(›|›)hy(»|»)<\/p>!, \ - markdown.convert(%("Pit'hy")).strip + markdown.convert(%("Pit'hy")).strip end end @@ -142,16 +142,17 @@ class TestKramdown < JekyllUnitTest should "move coderay to syntax_highlighter_opts" do original = Kramdown::Document.method(:new) - markdown = Converters::Markdown.new(Utils.deep_merge_hashes(@config, { - "higlighter" => nil, - "markdown" => "kramdown", - "kramdown" => { - "syntax_highlighter" => "coderay", - "coderay" => { - "hello" => "world", - }, - }, - })) + markdown = Converters::Markdown.new( + Utils.deep_merge_hashes(@config, + "higlighter" => nil, + "markdown" => "kramdown", + "kramdown" => { + "syntax_highlighter" => "coderay", + "coderay" => { + "hello" => "world", + }, + }) + ) expect(Kramdown::Document).to receive(:new) do |arg1, hash| assert_equal hash["syntax_highlighter_opts"]["hello"], "world" diff --git a/test/test_layout_reader.rb b/test/test_layout_reader.rb index 96d2045a..3c88586a 100644 --- a/test/test_layout_reader.rb +++ b/test/test_layout_reader.rb @@ -5,8 +5,8 @@ require "helper" class TestLayoutReader < JekyllUnitTest context "reading layouts" do setup do - config = Jekyll::Configuration::DEFAULTS.merge({ "source" => source_dir, - "destination" => dest_dir, }) + config = Jekyll::Configuration::DEFAULTS.merge("source" => source_dir, + "destination" => dest_dir) @site = fixture_site(config) end diff --git a/test/test_liquid_extensions.rb b/test/test_liquid_extensions.rb index e281e10e..30637b33 100644 --- a/test/test_liquid_extensions.rb +++ b/test/test_liquid_extensions.rb @@ -22,11 +22,11 @@ class TestLiquidExtensions < JekyllUnitTest end should "extract the var properly" do - assert_equal @template.render({ "page" => { "name" => "tobi" } }), "hi tobi" + assert_equal @template.render("page" => { "name" => "tobi" }), "hi tobi" end should "return the variable name if the value isn't there" do - assert_equal @template.render({ "page" => { "title" => "tobi" } }), "hi page.name" + assert_equal @template.render("page" => { "title" => "tobi" }), "hi page.name" end end end diff --git a/test/test_page.rb b/test/test_page.rb index ed4c2c31..a34a5694 100644 --- a/test/test_page.rb +++ b/test/test_page.rb @@ -22,11 +22,11 @@ class TestPage < JekyllUnitTest context "A Page" do setup do clear_dest - @site = Site.new(Jekyll.configuration({ - "source" => source_dir, - "destination" => dest_dir, - "skip_config_files" => true, - })) + @site = Site.new(Jekyll.configuration( + "source" => source_dir, + "destination" => dest_dir, + "skip_config_files" => true + )) end context "processing pages" do diff --git a/test/test_page_without_a_file.rb b/test/test_page_without_a_file.rb index 50624890..2933bfc8 100644 --- a/test/test_page_without_a_file.rb +++ b/test/test_page_without_a_file.rb @@ -21,11 +21,11 @@ class TestPageWithoutAFile < JekyllUnitTest context "A PageWithoutAFile" do setup do clear_dest - @site = Site.new(Jekyll.configuration({ - "source" => source_dir, - "destination" => dest_dir, - "skip_config_files" => true, - })) + @site = Site.new(Jekyll.configuration( + "source" => source_dir, + "destination" => dest_dir, + "skip_config_files" => true + )) end context "with default site configuration" do diff --git a/test/test_plugin_manager.rb b/test/test_plugin_manager.rb index 213bcef6..b5d1a81c 100644 --- a/test/test_plugin_manager.rb +++ b/test/test_plugin_manager.rb @@ -24,7 +24,7 @@ class TestPluginManager < JekyllUnitTest should "not require from bundler" do with_env("JEKYLL_NO_BUNDLER_REQUIRE", "true") do refute Jekyll::PluginManager.require_from_bundler, - "Gemfile plugins were required but shouldn't have been" + "Gemfile plugins were required but shouldn't have been" assert ENV["JEKYLL_NO_BUNDLER_REQUIRE"] end end @@ -35,7 +35,7 @@ class TestPluginManager < JekyllUnitTest with_env("JEKYLL_NO_BUNDLER_REQUIRE", nil) do with_no_gemfile do refute Jekyll::PluginManager.require_from_bundler, - "Gemfile plugins were required but shouldn't have been" + "Gemfile plugins were required but shouldn't have been" assert_nil ENV["JEKYLL_NO_BUNDLER_REQUIRE"] end end @@ -68,9 +68,9 @@ class TestPluginManager < JekyllUnitTest end should "require plugin files" do - site = double({ :safe => false, - :config => { "plugins_dir" => "_plugins" }, - :in_source_dir => "/tmp/", }) + site = double(:safe => false, + :config => { "plugins_dir" => "_plugins" }, + :in_source_dir => "/tmp/") plugin_manager = PluginManager.new(site) expect(Jekyll::External).to receive(:require_with_graceful_fail) @@ -80,7 +80,7 @@ class TestPluginManager < JekyllUnitTest context "site is marked as safe" do should "allow plugins if they are whitelisted" do - site = double({ :safe => true, :config => { "whitelist" => ["jemoji"] } }) + site = double(:safe => true, :config => { "whitelist" => ["jemoji"] }) plugin_manager = PluginManager.new(site) assert plugin_manager.plugin_allowed?("jemoji") @@ -88,7 +88,7 @@ class TestPluginManager < JekyllUnitTest end should "not require plugin files" do - site = double({ :safe => true }) + site = double(:safe => true) plugin_manager = PluginManager.new(site) expect(Jekyll::External).to_not receive(:require_with_graceful_fail) @@ -98,12 +98,12 @@ class TestPluginManager < JekyllUnitTest context "plugins_dir is set to the default" do should "call site's in_source_dir" do - site = double({ + site = double( :config => { "plugins_dir" => Jekyll::Configuration::DEFAULTS["plugins_dir"], }, - :in_source_dir => "/tmp/", - }) + :in_source_dir => "/tmp/" + ) plugin_manager = PluginManager.new(site) expect(site).to receive(:in_source_dir).with("_plugins") @@ -113,7 +113,7 @@ class TestPluginManager < JekyllUnitTest context "plugins_dir is set to a different dir" do should "expand plugin path" do - site = double({ :config => { "plugins_dir" => "some_other_plugins_path" } }) + site = double(:config => { "plugins_dir" => "some_other_plugins_path" }) plugin_manager = PluginManager.new(site) expect(File).to receive(:expand_path).with("some_other_plugins_path") @@ -123,7 +123,7 @@ class TestPluginManager < JekyllUnitTest context "`paginate` config is activated" do should "print deprecation warning if jekyll-paginate is not present" do - site = double({ :config => { "paginate" => true } }) + site = double(:config => { "paginate" => true }) plugin_manager = PluginManager.new(site) expect(Jekyll::Deprecator).to( @@ -133,9 +133,9 @@ class TestPluginManager < JekyllUnitTest end should "print no deprecation warning if jekyll-paginate is present" do - site = double({ - :config => { "paginate" => true, "plugins" => ["jekyll-paginate"] }, - }) + site = double( + :config => { "paginate" => true, "plugins" => ["jekyll-paginate"] } + ) plugin_manager = PluginManager.new(site) expect(Jekyll::Deprecator).to_not receive(:deprecation_message) @@ -144,10 +144,10 @@ class TestPluginManager < JekyllUnitTest end should "conscientious require" do - site = double({ + site = double( :config => { "theme" => "test-dependency-theme" }, - :in_dest_dir => "/tmp/_site/", - }) + :in_dest_dir => "/tmp/_site/" + ) plugin_manager = PluginManager.new(site) expect(site).to receive(:theme).and_return(true) diff --git a/test/test_regenerator.rb b/test/test_regenerator.rb index 3a5d35a8..122bc40f 100644 --- a/test/test_regenerator.rb +++ b/test/test_regenerator.rb @@ -7,14 +7,14 @@ class TestRegenerator < JekyllUnitTest setup do FileUtils.rm_rf(source_dir(".jekyll-metadata")) - @site = fixture_site({ + @site = fixture_site( "collections" => { "methods" => { "output" => true, }, }, - "incremental" => true, - }) + "incremental" => true + ) @site.read @page = @site.pages.first @@ -93,9 +93,9 @@ class TestRegenerator < JekyllUnitTest context "The site regenerator" do setup do FileUtils.rm_rf(source_dir(".jekyll-metadata")) - @site = fixture_site({ - "incremental" => true, - }) + @site = fixture_site( + "incremental" => true + ) @site.read @post = @site.posts.first @@ -128,11 +128,11 @@ class TestRegenerator < JekyllUnitTest setup do FileUtils.rm_rf(source_dir(".jekyll-metadata")) - @site = Site.new(Jekyll.configuration({ - "source" => source_dir, - "destination" => dest_dir, - "incremental" => true, - })) + @site = Site.new(Jekyll.configuration( + "source" => source_dir, + "destination" => dest_dir, + "incremental" => true + )) @site.process @path = @site.in_source_dir(@site.pages.first.path) @@ -183,7 +183,7 @@ class TestRegenerator < JekyllUnitTest should "not crash when reading corrupted marshal file" do metadata_file = source_dir(".jekyll-metadata") File.open(metadata_file, "w") do |file| - file.puts Marshal.dump({ :foo => "bar" })[0, 5] + file.puts Marshal.dump(:foo => "bar")[0, 5] end @regenerator = Regenerator.new(@site) @@ -310,11 +310,11 @@ class TestRegenerator < JekyllUnitTest context "when incremental regeneration is disabled" do setup do FileUtils.rm_rf(source_dir(".jekyll-metadata")) - @site = Site.new(Jekyll.configuration({ - "source" => source_dir, - "destination" => dest_dir, - "incremental" => false, - })) + @site = Site.new(Jekyll.configuration( + "source" => source_dir, + "destination" => dest_dir, + "incremental" => false + )) @site.process @path = @site.in_source_dir(@site.pages.first.path) diff --git a/test/test_related_posts.rb b/test/test_related_posts.rb index d6a8fe6f..7f9a978f 100644 --- a/test/test_related_posts.rb +++ b/test/test_related_posts.rb @@ -29,9 +29,9 @@ class TestRelatedPosts < JekyllUnitTest end allow_any_instance_of(Jekyll::RelatedPosts).to receive(:display) - @site = fixture_site({ - "lsi" => true, - }) + @site = fixture_site( + "lsi" => true + ) @site.reset @site.read diff --git a/test/test_sass.rb b/test/test_sass.rb index 15b04162..686631d6 100644 --- a/test/test_sass.rb +++ b/test/test_sass.rb @@ -5,10 +5,10 @@ require "helper" class TestSass < JekyllUnitTest context "importing partials" do setup do - @site = Jekyll::Site.new(Jekyll.configuration({ - "source" => source_dir, - "destination" => dest_dir, - })) + @site = Jekyll::Site.new(Jekyll.configuration( + "source" => source_dir, + "destination" => dest_dir + )) @site.process @test_css_file = dest_dir("css/main.css") end diff --git a/test/test_site.rb b/test/test_site.rb index 0af32fcb..63fb63fd 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -15,7 +15,7 @@ class TestSite < JekyllUnitTest @site.posts.docs.concat(PostReader.new(@site).read_posts("")) posts = Dir[source_dir("_posts", "**", "*")] posts.delete_if do |post| - File.directory?(post) && !(post =~ Document::DATE_FILENAME_MATCHER) + File.directory?(post) && post !~ Document::DATE_FILENAME_MATCHER end end @@ -31,15 +31,15 @@ class TestSite < JekyllUnitTest end should "have an array for plugins if passed as a string" do - site = Site.new(site_configuration({ "plugins_dir" => "/tmp/plugins" })) + site = Site.new(site_configuration("plugins_dir" => "/tmp/plugins")) array = Utils::Platforms.windows? ? ["C:/tmp/plugins"] : ["/tmp/plugins"] assert_equal array, site.plugins end should "have an array for plugins if passed as an array" do - site = Site.new(site_configuration({ - "plugins_dir" => ["/tmp/plugins", "/tmp/otherplugins"], - })) + site = Site.new(site_configuration( + "plugins_dir" => ["/tmp/plugins", "/tmp/otherplugins"] + )) array = if Utils::Platforms.windows? ["C:/tmp/plugins", "C:/tmp/otherplugins"] else @@ -49,12 +49,12 @@ class TestSite < JekyllUnitTest end should "have an empty array for plugins if nothing is passed" do - site = Site.new(site_configuration({ "plugins_dir" => [] })) + site = Site.new(site_configuration("plugins_dir" => [])) assert_equal [], site.plugins end should "have the default for plugins if nil is passed" do - site = Site.new(site_configuration({ "plugins_dir" => nil })) + site = Site.new(site_configuration("plugins_dir" => nil)) assert_equal [source_dir("_plugins")], site.plugins end @@ -64,19 +64,19 @@ class TestSite < JekyllUnitTest end should "expose baseurl passed in from config" do - site = Site.new(site_configuration({ "baseurl" => "/blog" })) + site = Site.new(site_configuration("baseurl" => "/blog")) assert_equal "/blog", site.baseurl end should "only include theme includes_path if the path exists" do - site = fixture_site({ "theme" => "test-theme" }) + site = fixture_site("theme" => "test-theme") assert_equal [source_dir("_includes"), theme_dir("_includes")], - site.includes_load_paths + site.includes_load_paths allow(File).to receive(:directory?).with(theme_dir("_sass")).and_return(true) allow(File).to receive(:directory?).with(theme_dir("_layouts")).and_return(true) allow(File).to receive(:directory?).with(theme_dir("_includes")).and_return(false) - site = fixture_site({ "theme" => "test-theme" }) + site = fixture_site("theme" => "test-theme") assert_equal [source_dir("_includes")], site.includes_load_paths end end @@ -87,9 +87,7 @@ class TestSite < JekyllUnitTest end teardown do - if defined?(MyGenerator) - self.class.send(:remove_const, :MyGenerator) - end + self.class.send(:remove_const, :MyGenerator) if defined?(MyGenerator) end should "have an empty tag hash by default" do @@ -279,7 +277,7 @@ class TestSite < JekyllUnitTest posts = Dir[source_dir("**", "_posts", "**", "*")] posts.delete_if do |post| - File.directory?(post) && !(post =~ Document::DATE_FILENAME_MATCHER) + File.directory?(post) && post !~ Document::DATE_FILENAME_MATCHER end categories = %w( 2013 bar baz category foo z_category MixedCase Mixedcase publish_test win @@ -305,9 +303,9 @@ class TestSite < JekyllUnitTest should "raise for bad frontmatter if strict_front_matter is set" do site = Site.new(site_configuration( - "collections" => ["broken"], - "strict_front_matter" => true - )) + "collections" => ["broken"], + "strict_front_matter" => true + )) assert_raises(Psych::SyntaxError) do site.process end @@ -315,9 +313,9 @@ class TestSite < JekyllUnitTest should "not raise for bad frontmatter if strict_front_matter is not set" do site = Site.new(site_configuration( - "collections" => ["broken"], - "strict_front_matter" => false - )) + "collections" => ["broken"], + "strict_front_matter" => false + )) site.process end end @@ -412,9 +410,9 @@ class TestSite < JekyllUnitTest bad_processor = "Custom::Markdown" s = Site.new(site_configuration( - "markdown" => bad_processor, - "incremental" => false - )) + "markdown" => bad_processor, + "incremental" => false + )) assert_raises Jekyll::Errors::FatalException do s.process end @@ -433,9 +431,9 @@ class TestSite < JekyllUnitTest should "throw FatalException at process time" do bad_processor = "not a processor name" s = Site.new(site_configuration( - "markdown" => bad_processor, - "incremental" => false - )) + "markdown" => bad_processor, + "incremental" => false + )) assert_raises Jekyll::Errors::FatalException do s.process end @@ -489,8 +487,8 @@ class TestSite < JekyllUnitTest site.process file_content = SafeYAML.load_file(File.join( - source_dir, "_data", "categories", "dairy.yaml" - )) + source_dir, "_data", "categories", "dairy.yaml" + )) assert_equal site.data["categories"]["dairy"], file_content assert_equal( @@ -504,8 +502,8 @@ class TestSite < JekyllUnitTest site.process file_content = SafeYAML.load_file(File.join( - source_dir, "_data", "categories.01", "dairy.yaml" - )) + source_dir, "_data", "categories.01", "dairy.yaml" + )) assert_equal site.data["categories01"]["dairy"], file_content assert_equal( @@ -536,9 +534,9 @@ class TestSite < JekyllUnitTest context "manipulating the Jekyll environment" do setup do - @site = Site.new(site_configuration({ - "incremental" => false, - })) + @site = Site.new(site_configuration( + "incremental" => false + )) @site.process @page = @site.pages.find { |p| p.name == "environment.html" } end @@ -550,9 +548,9 @@ class TestSite < JekyllUnitTest context "in production" do setup do ENV["JEKYLL_ENV"] = "production" - @site = Site.new(site_configuration({ - "incremental" => false, - })) + @site = Site.new(site_configuration( + "incremental" => false + )) @site.process @page = @site.pages.find { |p| p.name == "environment.html" } end @@ -571,13 +569,13 @@ class TestSite < JekyllUnitTest should "set no theme if config is not set" do expect($stderr).not_to receive(:puts) expect($stdout).not_to receive(:puts) - site = fixture_site({ "theme" => nil }) + site = fixture_site("theme" => nil) assert_nil site.theme end should "set no theme if config is a hash" do output = capture_output do - site = fixture_site({ "theme" => {} }) + site = fixture_site("theme" => {}) assert_nil site.theme end expected_msg = "Theme: value of 'theme' in config should be String " \ @@ -589,7 +587,7 @@ class TestSite < JekyllUnitTest [:debug, :info, :warn, :error].each do |level| expect(Jekyll.logger.writer).not_to receive(level) end - site = fixture_site({ "theme" => "test-theme" }) + site = fixture_site("theme" => "test-theme") assert_instance_of Jekyll::Theme, site.theme assert_equal "test-theme", site.theme.name end @@ -616,9 +614,9 @@ class TestSite < JekyllUnitTest context "incremental build" do setup do - @site = Site.new(site_configuration({ - "incremental" => true, - })) + @site = Site.new(site_configuration( + "incremental" => true + )) @site.read end diff --git a/test/test_site_drop.rb b/test/test_site_drop.rb index 43c52d70..01f3bed3 100644 --- a/test/test_site_drop.rb +++ b/test/test_site_drop.rb @@ -5,9 +5,9 @@ require "helper" class TestSiteDrop < JekyllUnitTest context "a site drop" do setup do - @site = fixture_site({ - "collections" => ["thanksgiving"], - }) + @site = fixture_site( + "collections" => ["thanksgiving"] + ) @site.process @drop = @site.to_liquid.site end diff --git a/test/test_static_file.rb b/test/test_static_file.rb index e306d2a2..96663bac 100644 --- a/test/test_static_file.rb +++ b/test/test_static_file.rb @@ -70,7 +70,7 @@ class TestStaticFile < JekyllUnitTest "root", "_foo/dir/subdir", "file.html", - { "output" => true } + "output" => true ) assert_equal :foo, static_file.type assert_equal "/foo/dir/subdir/file.html", static_file.url @@ -82,7 +82,7 @@ class TestStaticFile < JekyllUnitTest "root", "_foo/dir/subdir", "file.html", - { "output" => true, "permalink" => "/:path/" } + "output" => true, "permalink" => "/:path/" ) assert_equal :foo, static_file.type assert_equal "/dir/subdir/file.html", static_file.url @@ -92,7 +92,7 @@ class TestStaticFile < JekyllUnitTest should "be writable by default" do static_file = setup_static_file("root", "dir/subdir", "file.html") assert(static_file.write?, - "static_file.write? should return true by default") + "static_file.write? should return true by default") end should "use the _config.yml defaults to determine writability" do @@ -107,8 +107,8 @@ class TestStaticFile < JekyllUnitTest defaults ) assert(!static_file.write?, - "static_file.write? should return false when _config.yml sets " \ - "`published: false`") + "static_file.write? should return false when _config.yml sets " \ + "`published: false`") end should "respect front matter defaults" do diff --git a/test/test_tags.rb b/test/test_tags.rb index 54b8e4b7..4141b13b 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -26,20 +26,20 @@ class TestTags < JekyllUnitTest # rubocop:enable Metrics/AbcSize def fill_post(code, override = {}) - content = < "pygments" }) + fill_post("test", "highlighter" => "pygments") end should "not cause a markdown error" do @@ -202,7 +202,7 @@ CONTENT context "post content has highlight with file reference" do setup do - fill_post("./jekyll.gemspec", { "highlighter" => "pygments" }) + fill_post("./jekyll.gemspec", "highlighter" => "pygments") end should "not embed the file" do @@ -216,7 +216,7 @@ CONTENT context "post content has highlight tag with UTF character" do setup do - fill_post("Æ", { "highlighter" => "pygments" }) + fill_post("Æ", "highlighter" => "pygments") end should "render markdown with pygments line handling" do @@ -230,14 +230,14 @@ CONTENT context "post content has highlight tag with preceding spaces & lines" do setup do - code = <<-EOS + code = <<~EOS - [,1] [,2] -[1,] FALSE TRUE -[2,] FALSE TRUE -EOS - fill_post(code, { "highlighter" => "pygments" }) + [,1] [,2] + [1,] FALSE TRUE + [2,] FALSE TRUE + EOS + fill_post(code, "highlighter" => "pygments") end should "only strip the preceding newlines" do @@ -252,18 +252,18 @@ EOS context "post content has highlight tag " \ "with preceding spaces & lines in several places" do setup do - code = <<-EOS + code = <<~EOS - [,1] [,2] + [,1] [,2] -[1,] FALSE TRUE -[2,] FALSE TRUE + [1,] FALSE TRUE + [2,] FALSE TRUE -EOS - fill_post(code, { "highlighter" => "pygments" }) + EOS + fill_post(code, "highlighter" => "pygments") end should "only strip the newlines which precede and succeed the entire block" do @@ -278,7 +278,7 @@ EOS context "post content has highlight tag with " \ "preceding spaces & Windows-style newlines" do setup do - fill_post "\r\n\r\n\r\n [,1] [,2]", { "highlighter" => "pygments" } + fill_post "\r\n\r\n\r\n [,1] [,2]", "highlighter" => "pygments" end should "only strip the preceding newlines" do @@ -292,12 +292,12 @@ EOS context "post content has highlight tag with only preceding spaces" do setup do - code = <<-EOS - [,1] [,2] -[1,] FALSE TRUE -[2,] FALSE TRUE -EOS - fill_post(code, { "highlighter" => "pygments" }) + code = <<~EOS + [,1] [,2] + [1,] FALSE TRUE + [2,] FALSE TRUE + EOS + fill_post(code, "highlighter" => "pygments") end should "only strip the preceding newlines" do @@ -337,17 +337,17 @@ EOS context "post content has raw tag" do setup do - content = <<-CONTENT ---- -title: This is a test ---- + content = <<~CONTENT + --- + title: This is a test + --- -```liquid -{% raw %} -{{ site.baseurl }}{% link _collection/name-of-document.md %} -{% endraw %} -``` -CONTENT + ```liquid + {% raw %} + {{ site.baseurl }}{% link _collection/name-of-document.md %} + {% endraw %} + ``` + CONTENT create_post(content) end @@ -389,13 +389,13 @@ CONTENT context "post content has highlight tag with preceding spaces & lines" do setup do - fill_post <<-EOS + fill_post <<~EOS - [,1] [,2] -[1,] FALSE TRUE -[2,] FALSE TRUE -EOS + [,1] [,2] + [1,] FALSE TRUE + [2,] FALSE TRUE + EOS end should "only strip the preceding newlines" do @@ -409,17 +409,17 @@ EOS context "post content has highlight tag with " \ "preceding spaces & lines in several places" do setup do - fill_post <<-EOS + fill_post <<~EOS - [,1] [,2] + [,1] [,2] -[1,] FALSE TRUE -[2,] FALSE TRUE + [1,] FALSE TRUE + [2,] FALSE TRUE -EOS + EOS end should "only strip the newlines which precede and succeed the entire block" do @@ -433,27 +433,27 @@ EOS context "post content has highlight tag with linenumbers" do setup do - create_post <<-EOS ---- -title: This is a test ---- + create_post <<~EOS + --- + title: This is a test + --- -This is not yet highlighted -{% highlight php linenos %} -test -{% endhighlight %} + This is not yet highlighted + {% highlight php linenos %} + test + {% endhighlight %} -This should not be highlighted, right? -EOS + This should not be highlighted, right? + EOS end should "should stop highlighting at boundary with rouge" do - expected = <<-EOS -

This is not yet highlighted

\n -
1
-
test
\n -

This should not be highlighted, right?

-EOS + expected = <<~EOS +

This is not yet highlighted

\n +
1
+          
test
\n +

This should not be highlighted, right?

+ EOS assert_match(expected, @result) end end @@ -474,11 +474,11 @@ EOS context "post content has highlight tag with only preceding spaces" do setup do - fill_post <<-EOS - [,1] [,2] -[1,] FALSE TRUE -[2,] FALSE TRUE -EOS + fill_post <<~EOS + [,1] [,2] + [1,] FALSE TRUE + [2,] FALSE TRUE + EOS end should "only strip the preceding newlines" do @@ -492,19 +492,19 @@ EOS context "simple post with markdown and pre tags" do setup do - @content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% post_url 2008-11-21-complex %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "not cause an error" do @@ -547,19 +546,18 @@ CONTENT context "simple page with post linking containing special characters" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% post_url 2016-11-26-special-chars-(+) %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "not cause an error" do @@ -573,22 +571,21 @@ CONTENT context "simple page with nested post linking" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + - 1 {% post_url 2008-11-21-complex %} + - 2 {% post_url /2008-11-21-complex %} + - 3 {% post_url es/2008-11-21-nested %} + - 4 {% post_url /es/2008-11-21-nested %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "not cause an error" do @@ -608,19 +605,18 @@ CONTENT context "simple page with nested post linking and path not used in `post_url`" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + - 1 {% post_url 2008-11-21-nested %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "not cause an error" do @@ -642,60 +638,57 @@ CONTENT context "simple page with invalid post name linking" do should "cause an error" do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end end should "cause an error with a bad date" do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end end end context "simple page with linking to a page" do setup do - content = < source_dir, - "destination" => dest_dir, - "read_all" => true, - }) + {% link contacts.html %} + {% link info.md %} + {% link /css/screen.css %} + CONTENT + create_post(content, + "source" => source_dir, + "destination" => dest_dir, + "read_all" => true) end should "not cause an error" do @@ -717,24 +710,23 @@ CONTENT context "simple page with dynamic linking to a page" do setup do - content = < source_dir, - "destination" => dest_dir, - "read_all" => true, - }) + {% assign contacts_filename = 'contacts' %} + {% assign contacts_ext = 'html' %} + {% link {{contacts_filename}}.{{contacts_ext}} %} + {% assign info_path = 'info.md' %} + {% link {{\ info_path\ }} %} + {% assign screen_css_path = '/css' %} + {% link {{ screen_css_path }}/screen.css %} + CONTENT + create_post(content, + "source" => source_dir, + "destination" => dest_dir, + "read_all" => true) end should "not cause an error" do @@ -756,19 +748,18 @@ CONTENT context "simple page with linking" do setup do - content = < source_dir, - "destination" => dest_dir, - "collections" => { "methods" => { "output" => true } }, - "read_collections" => true, - }) + {% link _methods/yaml_with_dots.md %} + CONTENT + create_post(content, + "source" => source_dir, + "destination" => dest_dir, + "collections" => { "methods" => { "output" => true } }, + "read_collections" => true) end should "not cause an error" do @@ -782,20 +773,19 @@ CONTENT context "simple page with dynamic linking" do setup do - content = < source_dir, - "destination" => dest_dir, - "collections" => { "methods" => { "output" => true } }, - "read_collections" => true, - }) + {% assign yaml_with_dots_path = '_methods/yaml_with_dots.md' %} + {% link {{yaml_with_dots_path}} %} + CONTENT + create_post(content, + "source" => source_dir, + "destination" => dest_dir, + "collections" => { "methods" => { "output" => true } }, + "read_collections" => true) end should "not cause an error" do @@ -809,20 +799,19 @@ CONTENT context "simple page with nested linking" do setup do - content = < source_dir, - "destination" => dest_dir, - "collections" => { "methods" => { "output" => true } }, - "read_collections" => true, - }) + - 1 {% link _methods/sanitized_path.md %} + - 2 {% link _methods/site/generate.md %} + CONTENT + create_post(content, + "source" => source_dir, + "destination" => dest_dir, + "collections" => { "methods" => { "output" => true } }, + "read_collections" => true) end should "not cause an error" do @@ -840,43 +829,41 @@ CONTENT context "simple page with invalid linking" do should "cause an error" do - content = < source_dir, - "destination" => dest_dir, - "collections" => { "methods" => { "output" => true } }, - "read_collections" => true, - }) + create_post(content, + "source" => source_dir, + "destination" => dest_dir, + "collections" => { "methods" => { "output" => true } }, + "read_collections" => true) end end end context "simple page with invalid dynamic linking" do should "cause an error" do - content = < source_dir, - "destination" => dest_dir, - "collections" => { "methods" => { "output" => true } }, - "read_collections" => true, - }) + create_post(content, + "source" => source_dir, + "destination" => dest_dir, + "collections" => { "methods" => { "output" => true } }, + "read_collections" => true) end end end @@ -886,21 +873,20 @@ CONTENT should "not allow symlink includes" do File.open("tmp/pages-test", "w") { |file| file.write("SYMLINK TEST") } assert_raises IOError do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - "safe" => true, - }) + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true, + "safe" => true) end @result ||= "" refute_match(%r!SYMLINK TEST!, @result) @@ -908,21 +894,20 @@ CONTENT should "not expose the existence of symlinked files" do ex = assert_raises IOError do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - "safe" => true, - }) + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true, + "safe" => true) end assert_match( "Could not locate the included file 'tmp/pages-test-does-not-exist' " \ @@ -936,21 +921,20 @@ CONTENT context "with one parameter" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% include params.html param="value" %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "correctly output include variable" do @@ -964,22 +948,21 @@ CONTENT context "with simple syntax but multiline markup" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% include params.html + param="value" %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "correctly output include variable" do @@ -993,22 +976,21 @@ CONTENT context "with variable syntax but multiline markup" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% include sig.markdown myparam="test" %} + {% assign path = "params" | append: ".html" %} + {% include {{ path }} + param="value" %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "correctly output include variable" do @@ -1022,57 +1004,54 @@ CONTENT context "with invalid parameter syntax" do should "throw a ArgumentError" do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end end end context "with several parameters" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% include params.html param1="new_value" param2="another" %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "list all parameters" do @@ -1087,19 +1066,18 @@ CONTENT context "without parameters" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% include params.html %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "include file with empty parameters" do @@ -1109,20 +1087,19 @@ CONTENT context "with custom includes directory" do setup do - content = < "_includes_custom", - "permalink" => "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% include custom.html %} + CONTENT + create_post(content, + "includes_dir" => "_includes_custom", + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "include file from custom directory" do @@ -1132,19 +1109,18 @@ CONTENT context "without parameters within if statement" do setup do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + {% if true %}{% include params.html %}{% endif %} + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end should "include file with empty parameters within if statement" do @@ -1154,23 +1130,22 @@ CONTENT context "include missing file" do setup do - @content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + create_post(@content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end assert_match( "Could not locate the included file 'missing.html' in any of " \ @@ -1182,7 +1157,7 @@ CONTENT context "include tag with variable and liquid filters" do setup do - site = fixture_site({ "pygments" => true }).tap(&:read).tap(&:render) + site = fixture_site("pygments" => true).tap(&:read).tap(&:render) post = site.posts.docs.find do |p| p.basename.eql? "2013-12-17-include-variable-filters.markdown" end @@ -1214,7 +1189,7 @@ CONTENT context "relative include tag with variable and liquid filters" do setup do - site = fixture_site({ "pygments" => true }).tap(&:read).tap(&:render) + site = fixture_site("pygments" => true).tap(&:read).tap(&:render) post = site.posts.docs.find do |p| p.basename.eql? "2014-09-02-relative-includes.markdown" end @@ -1249,23 +1224,22 @@ CONTENT context "trying to do bad stuff" do context "include missing file" do setup do - @content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + create_post(@content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end assert_match "Could not locate the included file 'missing.html' in any of " \ "[\"#{source_dir}\"].", exception.message @@ -1274,23 +1248,22 @@ CONTENT context "include existing file above you" do setup do - @content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - }) + create_post(@content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true) end assert_equal( "Invalid syntax for include tag. File contains invalid characters or " \ @@ -1306,21 +1279,20 @@ CONTENT should "not allow symlink includes" do File.open("tmp/pages-test", "w") { |file| file.write("SYMLINK TEST") } assert_raises IOError do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - "safe" => true, - }) + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true, + "safe" => true) end @result ||= "" refute_match(%r!SYMLINK TEST!, @result) @@ -1328,21 +1300,20 @@ CONTENT should "not expose the existence of symlinked files" do ex = assert_raises IOError do - content = < "pretty", - "source" => source_dir, - "destination" => dest_dir, - "read_posts" => true, - "safe" => true, - }) + CONTENT + create_post(content, + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true, + "safe" => true) end assert_match( "Ensure it exists in one of those directories and is not a symlink "\ diff --git a/test/test_utils.rb b/test/test_utils.rb index 844ef825..509f92e8 100644 --- a/test/test_utils.rb +++ b/test/test_utils.rb @@ -202,20 +202,20 @@ class TestUtils < JekyllUnitTest should "replace everything else but ASCII characters" do assert_equal "the-config-yml-file", - Utils.slugify("The _config.yml file?", :mode => "ascii") + Utils.slugify("The _config.yml file?", :mode => "ascii") assert_equal "f-rtive-glance", - Utils.slugify("fürtive glance!!!!", :mode => "ascii") + Utils.slugify("fürtive glance!!!!", :mode => "ascii") end should "map accented latin characters to ASCII characters" do assert_equal "the-config-yml-file", - Utils.slugify("The _config.yml file?", :mode => "latin") + Utils.slugify("The _config.yml file?", :mode => "latin") assert_equal "furtive-glance", - Utils.slugify("fürtive glance!!!!", :mode => "latin") + Utils.slugify("fürtive glance!!!!", :mode => "latin") assert_equal "aaceeiioouu", - Utils.slugify("àáçèéíïòóúü", :mode => "latin") + Utils.slugify("àáçèéíïòóúü", :mode => "latin") assert_equal "a-z", - Utils.slugify("Aあわれ鬱господинZ", :mode => "latin") + Utils.slugify("Aあわれ鬱господинZ", :mode => "latin") end should "only replace whitespace if mode is raw" do From e10444abf754116ce834e9b8e300342c394c7a9f Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Thu, 12 Jul 2018 10:21:25 -0400 Subject: [PATCH 24/40] Update history to reflect merge of #7128 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 39f23f52..cbb7bebf 100644 --- a/History.markdown +++ b/History.markdown @@ -69,6 +69,7 @@ * Use assert_include (#7093) * Update rubocop version to 0.57.x ### -docs (#7078) * Example of CircleCI deployment through CircleCI v2 (#7024) + * Fix Rubocop offences in test files (#7128) ### Bug Fixes From f9ada3ced6974330ee3e34facc49c82144e23a9c Mon Sep 17 00:00:00 2001 From: Scott Killen Date: Fri, 13 Jul 2018 06:33:56 -0400 Subject: [PATCH 25/40] Fix custom 404 page for GitHub pages (#7132) Merge pull request 7132 --- lib/site_template/404.html | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/site_template/404.html b/lib/site_template/404.html index c472b4ea..086a5c9e 100644 --- a/lib/site_template/404.html +++ b/lib/site_template/404.html @@ -1,4 +1,5 @@ --- +permalink: /404.html layout: default --- From b69196cad3449ccb4134dba8b42594dae563bdbc Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 13 Jul 2018 06:33:58 -0400 Subject: [PATCH 26/40] Update history to reflect merge of #7132 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index cbb7bebf..9a59584e 100644 --- a/History.markdown +++ b/History.markdown @@ -43,6 +43,7 @@ * Suggest re-running command with --trace on fail (#6551) * Update item_property to return numbers as numbers instead of strings (#6608) * Use .markdown for page templates (#7126) + * Fix custom 404 page for GitHub pages (#7132) ### Major Enhancements From 7a4b3fe03da3cb0c6f008ed3ce4ee4e417186b58 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Fri, 13 Jul 2018 11:12:49 -0500 Subject: [PATCH 27/40] Disable Liquid via front matter (#6824) Merge pull request 6824 --- features/post_data.feature | 13 +++++++++++++ lib/jekyll/convertible.rb | 1 + lib/jekyll/document.rb | 1 + test/fixtures/no_liquid.erb | 4 ++++ test/test_convertible.rb | 7 +++++++ 5 files changed, 26 insertions(+) create mode 100644 test/fixtures/no_liquid.erb diff --git a/features/post_data.feature b/features/post_data.feature index 79b92c26..c288115d 100644 --- a/features/post_data.feature +++ b/features/post_data.feature @@ -251,6 +251,19 @@ Feature: Post data And I should see "Post categories: scifi and Movies" in "_site/scifi/movies/2009/03/27/star-wars.html" And I should see "Post categories: SciFi and movies" in "_site/scifi/movies/2013/03/17/star-trek.html" +Scenario: Use page.render_with_liquid variable + Given I have a _posts directory + And I have the following posts: + | title | render_with_liquid | date | content | + | Unrendered Post | false | 2017-07-06 | Hello {{ page.title }} | + | Rendered Post | true | 2017-07-06 | Hello {{ page.title }} | + When I run jekyll build + Then I should get a zero exit status + And the _site directory should exist + And I should not see "Hello Unrendered Post" in "_site/2017/07/06/unrendered-post.html" + But I should see "Hello {{ page.title }}" in "_site/2017/07/06/unrendered-post.html" + And I should see "Hello Rendered Post" in "_site/2017/07/06/rendered-post.html" + Scenario Outline: Use page.path variable Given I have a /_posts directory And I have the following post in "": diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb index 5e703505..85532ba9 100644 --- a/lib/jekyll/convertible.rb +++ b/lib/jekyll/convertible.rb @@ -160,6 +160,7 @@ module Jekyll # # Returns true if the file has Liquid Tags or Variables, false otherwise. def render_with_liquid? + return false if data["render_with_liquid"] == false Jekyll::Utils.has_liquid_construct?(content) end diff --git a/lib/jekyll/document.rb b/lib/jekyll/document.rb index dbc1a6d8..8b6e54e3 100644 --- a/lib/jekyll/document.rb +++ b/lib/jekyll/document.rb @@ -159,6 +159,7 @@ module Jekyll # or if the document doesn't contain any Liquid Tags or Variables, # true otherwise. def render_with_liquid? + return false if data["render_with_liquid"] == false !(coffeescript_file? || yaml_file? || !Utils.has_liquid_construct?(content)) end diff --git a/test/fixtures/no_liquid.erb b/test/fixtures/no_liquid.erb new file mode 100644 index 00000000..bfb7fc46 --- /dev/null +++ b/test/fixtures/no_liquid.erb @@ -0,0 +1,4 @@ +--- +render_with_liquid: false +--- +{% raw %}{% endraw %} diff --git a/test/test_convertible.rb b/test/test_convertible.rb index a3bea6ba..8c204ebf 100644 --- a/test/test_convertible.rb +++ b/test/test_convertible.rb @@ -73,5 +73,12 @@ class TestConvertible < JekyllUnitTest end refute_match(%r!Invalid permalink!, out) end + + should "not parse Liquid if disabled in front matter" do + name = "no_liquid.erb" + @convertible.read_yaml(@base, name) + ret = @convertible.content.strip + assert_equal("{% raw %}{% endraw %}", ret) + end end end From 3be9e74942a5aab465d85aeb29bb035248e0d84b Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 13 Jul 2018 12:12:51 -0400 Subject: [PATCH 28/40] Update history to reflect merge of #6824 [ci skip] --- History.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/History.markdown b/History.markdown index 9a59584e..194b60b3 100644 --- a/History.markdown +++ b/History.markdown @@ -76,6 +76,10 @@ * Add call to unused method `validate_options` in `commands/serve.rb` (#7122) +### feature + + * Disable Liquid via front matter (#6824) + ## 3.8.3 / 2018-06-05 ### Bug Fixes From c7ce7ae0549b8f79c3598c17f61f44779c30f404 Mon Sep 17 00:00:00 2001 From: Ken Salomon Date: Fri, 13 Jul 2018 19:48:00 -0400 Subject: [PATCH 29/40] fix up refute_equal call (#7133) Merge pull request 7133 --- test/test_collections.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test_collections.rb b/test/test_collections.rb index 7af86dd8..9d4e9b9d 100644 --- a/test/test_collections.rb +++ b/test/test_collections.rb @@ -87,7 +87,8 @@ class TestCollections < JekyllUnitTest end should "contain only the default collections" do - refute_equal @site.collections, {} + expected = {} + refute_equal expected, @site.collections refute_nil @site.collections end end From 16e9820dac7c29b5ad835ec7ca1023301f7963d0 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 13 Jul 2018 19:48:02 -0400 Subject: [PATCH 30/40] Update history to reflect merge of #7133 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 194b60b3..47d54f03 100644 --- a/History.markdown +++ b/History.markdown @@ -71,6 +71,7 @@ * Update rubocop version to 0.57.x ### -docs (#7078) * Example of CircleCI deployment through CircleCI v2 (#7024) * Fix Rubocop offences in test files (#7128) + * fix up refute_equal call (#7133) ### Bug Fixes From 506c764e1e40f0202fa912aa3993c73a099fb314 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Mon, 16 Jul 2018 01:41:45 +0530 Subject: [PATCH 31/40] fix incorrectly passed arguments to assert_equal (#7134) Merge pull request 7134 --- test/test_ansi.rb | 2 +- test/test_collections.rb | 29 ++++++++-------- test/test_commands_serve.rb | 12 +++---- test/test_configuration.rb | 60 +++++++++++++++------------------- test/test_kramdown.rb | 2 +- test/test_liquid_extensions.rb | 4 +-- test/test_regenerator.rb | 3 +- 7 files changed, 52 insertions(+), 60 deletions(-) diff --git a/test/test_ansi.rb b/test/test_ansi.rb index e780e0dd..c8aef1db 100644 --- a/test/test_ansi.rb +++ b/test/test_ansi.rb @@ -15,7 +15,7 @@ class TestAnsi < JekyllUnitTest end should "be able to strip colors" do - assert_equal @subject.strip(@subject.yellow(@subject.red("hello"))), "hello" + assert_equal "hello", @subject.strip(@subject.yellow(@subject.red("hello"))) end should "be able to detect colors" do diff --git a/test/test_collections.rb b/test/test_collections.rb index 9d4e9b9d..eb1eb0f6 100644 --- a/test/test_collections.rb +++ b/test/test_collections.rb @@ -9,11 +9,11 @@ class TestCollections < JekyllUnitTest end should "sanitize the label name" do - assert_equal @collection.label, "....etcpassword" + assert_equal "....etcpassword", @collection.label end should "have a sanitized relative path name" do - assert_equal @collection.relative_directory, "_....etcpassword" + assert_equal "_....etcpassword", @collection.relative_directory end should "have a sanitized full path" do @@ -27,11 +27,11 @@ class TestCollections < JekyllUnitTest end should "sanitize the label name" do - assert_equal @collection.label, "methods" + assert_equal "methods", @collection.label end should "have default URL template" do - assert_equal @collection.url_template, "/:collection/:path:output_ext" + assert_equal "/:collection/:path:output_ext", @collection.url_template end should "contain no docs when initialized" do @@ -39,7 +39,7 @@ class TestCollections < JekyllUnitTest end should "know its relative directory" do - assert_equal @collection.relative_directory, "_methods" + assert_equal "_methods", @collection.relative_directory end should "know the full path to itself on the filesystem" do @@ -48,15 +48,15 @@ class TestCollections < JekyllUnitTest context "when turned into Liquid" do should "have a label attribute" do - assert_equal @collection.to_liquid["label"], "methods" + assert_equal "methods", @collection.to_liquid["label"] end should "have a docs attribute" do - assert_equal @collection.to_liquid["docs"], [] + assert_equal [], @collection.to_liquid["docs"] end should "have a files attribute" do - assert_equal @collection.to_liquid["files"], [] + assert_equal [], @collection.to_liquid["files"] end should "have a directory attribute" do @@ -64,18 +64,18 @@ class TestCollections < JekyllUnitTest end should "have a relative_directory attribute" do - assert_equal @collection.to_liquid["relative_directory"], "_methods" + assert_equal "_methods", @collection.to_liquid["relative_directory"] end should "have a output attribute" do - assert_equal @collection.to_liquid["output"], false + assert_equal false, @collection.to_liquid["output"] end end should "know whether it should be written or not" do - assert_equal @collection.write?, false + assert_equal false, @collection.write? @collection.metadata["output"] = true - assert_equal @collection.write?, true + assert_equal true, @collection.write? @collection.metadata.delete "output" end end @@ -107,7 +107,7 @@ class TestCollections < JekyllUnitTest end should "have custom URL template" do - assert_equal @collection.url_template, "/awesome/:path/" + assert_equal "/awesome/:path/", @collection.url_template end end @@ -174,7 +174,8 @@ class TestCollections < JekyllUnitTest end should "extract the configuration collection information as metadata" do - assert_equal @collection.metadata, "foo" => "bar", "baz" => "whoo" + expected = { "foo" => "bar", "baz" => "whoo" } + assert_equal expected, @collection.metadata end end diff --git a/test/test_commands_serve.rb b/test/test_commands_serve.rb index b589de2f..2970efb6 100644 --- a/test/test_commands_serve.rb +++ b/test/test_commands_serve.rb @@ -154,9 +154,7 @@ class TestCommandsServe < JekyllUnitTest end should "label itself" do - assert_equal( - @merc.name, :serve - ) + assert_equal :serve, @merc.name end should "have aliases" do @@ -269,11 +267,11 @@ class TestCommandsServe < JekyllUnitTest context "verbose" do should "debug when verbose" do - assert_equal custom_opts("verbose" => true)[:Logger].level, 5 + assert_equal 5, custom_opts("verbose" => true)[:Logger].level end should "warn when not verbose" do - assert_equal custom_opts({})[:Logger].level, 3 + assert_equal 3, custom_opts({})[:Logger].level end end @@ -305,8 +303,8 @@ class TestCommandsServe < JekyllUnitTest ) assert result[:SSLEnable] - assert_equal result[:SSLPrivateKey], "c2" - assert_equal result[:SSLCertificate], "c1" + assert_equal "c2", result[:SSLPrivateKey] + assert_equal "c1", result[:SSLCertificate] end end end diff --git a/test/test_configuration.rb b/test/test_configuration.rb index 3f19949a..d90d970a 100644 --- a/test/test_configuration.rb +++ b/test/test_configuration.rb @@ -17,7 +17,7 @@ class TestConfiguration < JekyllUnitTest should "merge input over defaults" do result = Configuration.from("source" => "blah") refute_equal result["source"], Configuration::DEFAULTS["source"] - assert_equal result["source"], "blah" + assert_equal "blah", result["source"] end should "return a valid Configuration instance" do @@ -26,13 +26,11 @@ class TestConfiguration < JekyllUnitTest should "add default collections" do result = Configuration.from({}) - assert_equal( - result["collections"], - "posts" => { - "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title:output_ext", - } - ) + expected = { "posts" => { + "output" => true, + "permalink" => "/:categories/:year/:month/:day/:title:output_ext", + }, } + assert_equal expected, result["collections"] end should "NOT backwards-compatibilize" do @@ -68,32 +66,29 @@ class TestConfiguration < JekyllUnitTest should "turn an array into a hash" do result = Configuration[{ "collections" => %w(methods) }].add_default_collections assert_instance_of Hash, result["collections"] - assert_equal( - result["collections"], - "posts" => { "output" => true }, "methods" => {} - ) + expected = { "posts" => { "output" => true }, "methods" => {} } + assert_equal expected, result["collections"] end should "only assign collections.posts.permalink if a permalink is specified" do result = Configuration[{ "permalink" => "pretty", "collections" => {} }] .add_default_collections - assert_equal( - result["collections"], - "posts" => { - "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title/", - } - ) + expected = { "posts" => { + "output" => true, + "permalink" => "/:categories/:year/:month/:day/:title/", + }, } + assert_equal expected, result["collections"] result = Configuration[{ "permalink" => nil, "collections" => {} }] .add_default_collections - assert_equal result["collections"], "posts" => { "output" => true } + expected = { "posts" => { "output" => true } } + assert_equal expected, result["collections"] end should "forces posts to output" do result = Configuration[{ "collections" => { "posts" => { "output" => false } } }] .add_default_collections - assert_equal result["collections"]["posts"]["output"], true + assert_equal true, result["collections"]["posts"]["output"] end end @@ -216,23 +211,19 @@ class TestConfiguration < JekyllUnitTest should "transform string exclude into an array" do assert @config.key?("exclude") assert @config.backwards_compatibilize.key?("exclude") - assert_equal( - @config.backwards_compatibilize["exclude"], - %w(READ-ME.md Gemfile CONTRIBUTING.hello.markdown) - ) + expected = %w(READ-ME.md Gemfile CONTRIBUTING.hello.markdown) + assert_equal expected, @config.backwards_compatibilize["exclude"] end should "transform string include into an array" do assert @config.key?("include") assert @config.backwards_compatibilize.key?("include") - assert_equal( - @config.backwards_compatibilize["include"], - %w(STOP_THE_PRESSES.txt .heloses .git) - ) + expected = %w(STOP_THE_PRESSES.txt .heloses .git) + assert_equal expected, @config.backwards_compatibilize["include"] end should "set highlighter to pygments" do assert @config.key?("pygments") assert !@config.backwards_compatibilize.key?("pygments") - assert_equal @config.backwards_compatibilize["highlighter"], "pygments" + assert_equal "pygments", @config.backwards_compatibilize["highlighter"] end should "adjust directory names" do assert @config.key?("layouts") @@ -500,12 +491,13 @@ class TestConfiguration < JekyllUnitTest ) ) assert_equal( - config["folded_string"], - "This string of text will ignore newlines till the next key.\n" + "This string of text will ignore newlines till the next key.\n", + config["folded_string"] ) + assert_equal( - config["clean_folded_string"], - "This string of text will ignore newlines till the next key." + "This string of text will ignore newlines till the next key.", + config["clean_folded_string"] ) end diff --git a/test/test_kramdown.rb b/test/test_kramdown.rb index d95955f4..94d6a4df 100644 --- a/test/test_kramdown.rb +++ b/test/test_kramdown.rb @@ -155,7 +155,7 @@ class TestKramdown < JekyllUnitTest ) expect(Kramdown::Document).to receive(:new) do |arg1, hash| - assert_equal hash["syntax_highlighter_opts"]["hello"], "world" + assert_equal "world", hash["syntax_highlighter_opts"]["hello"] original.call(arg1, hash) end diff --git a/test/test_liquid_extensions.rb b/test/test_liquid_extensions.rb index 30637b33..5886d80d 100644 --- a/test/test_liquid_extensions.rb +++ b/test/test_liquid_extensions.rb @@ -22,11 +22,11 @@ class TestLiquidExtensions < JekyllUnitTest end should "extract the var properly" do - assert_equal @template.render("page" => { "name" => "tobi" }), "hi tobi" + assert_equal "hi tobi", @template.render("page" => { "name" => "tobi" }) end should "return the variable name if the value isn't there" do - assert_equal @template.render("page" => { "title" => "tobi" }), "hi page.name" + assert_equal "hi page.name", @template.render("page" => { "title" => "tobi" }) end end end diff --git a/test/test_regenerator.rb b/test/test_regenerator.rb index 122bc40f..39b28baa 100644 --- a/test/test_regenerator.rb +++ b/test/test_regenerator.rb @@ -153,7 +153,8 @@ class TestRegenerator < JekyllUnitTest assert @regenerator.cache[@path] @regenerator.clear_cache - assert_equal @regenerator.cache, {} + expected = {} + assert_equal expected, @regenerator.cache end should "write to the metadata file" do From e49f507e4fcd5d71c8e79f70b931fb72c3416872 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 15 Jul 2018 16:11:46 -0400 Subject: [PATCH 32/40] Update history to reflect merge of #7134 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 47d54f03..8fdf79b5 100644 --- a/History.markdown +++ b/History.markdown @@ -72,6 +72,7 @@ * Example of CircleCI deployment through CircleCI v2 (#7024) * Fix Rubocop offences in test files (#7128) * fix up refute_equal call (#7133) + * Fix incorrectly passed arguments to assert_equal (#7134) ### Bug Fixes From b2c6d03b47979a7e058d4ffd824948e4a2a8f7c8 Mon Sep 17 00:00:00 2001 From: 104fps <36814947+104fps@users.noreply.github.com> Date: Mon, 16 Jul 2018 01:18:43 +0300 Subject: [PATCH 33/40] Update docs about post creation (#7138) Merge pull request 7138 --- .../_posts/0000-00-00-welcome-to-jekyll.markdown.erb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb b/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb index 8d8f7c16..187a4d9b 100644 --- a/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb +++ b/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb @@ -6,7 +6,11 @@ categories: jekyll update --- You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. -To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. +Jekyll requires blog post files to be named according to the following format: + +`YEAR-MONTH-DAY-title.MARKUP` + +Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works. Jekyll also offers powerful support for code snippets: From 34a1b7aeefca27d0100437d84c9564433bfd5430 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 15 Jul 2018 18:18:44 -0400 Subject: [PATCH 34/40] Update history to reflect merge of #7138 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 8fdf79b5..939e2a56 100644 --- a/History.markdown +++ b/History.markdown @@ -34,6 +34,7 @@ * add jekyll-xml-source (#7114) * Add the jekyll-firstimage filter plugin (#7127) * Use a real theme in the example (#7125) + * Update docs about post creation (#7138) ### Minor Enhancements From af78a1a5682dd116b00d7cba60f4ac343faf0b72 Mon Sep 17 00:00:00 2001 From: Belhassen Chelbi Date: Mon, 16 Jul 2018 03:17:22 +0100 Subject: [PATCH 35/40] Add DEV Community's Jekyll tag to community page --- docs/help/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/help/index.md b/docs/help/index.md index abc7ea2a..4d0c126b 100644 --- a/docs/help/index.md +++ b/docs/help/index.md @@ -43,6 +43,10 @@ Known breaking changes are listed in the upgrading docs. Watch videos from members of the Jekyll community speak about interesting use cases, tricks they've learned or meta Jekyll topics. +### The Dev community + +[DEV’s jekyll tag](https://dev.to/t/jekyll) is a place to share Jekyll projects, articles and tutorials as well as start discussions and ask for feedback on Jekyll-related topics. Developers of all skill-levels are welcome to take part. + ### [Google](https://www.google.com/?q=jekyll) Add **jekyll** to almost any query, and you'll find just what you need. From ca2766c2a146bec5393cc12b0a52340b66829c23 Mon Sep 17 00:00:00 2001 From: Belhassen Chelbi Date: Mon, 16 Jul 2018 14:58:26 +0100 Subject: [PATCH 36/40] Add DEV Community's Jekyll tag to community page (#7139) Merge pull request 7139 --- docs/help/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/help/index.md b/docs/help/index.md index abc7ea2a..4d0c126b 100644 --- a/docs/help/index.md +++ b/docs/help/index.md @@ -43,6 +43,10 @@ Known breaking changes are listed in the upgrading docs. Watch videos from members of the Jekyll community speak about interesting use cases, tricks they've learned or meta Jekyll topics. +### The Dev community + +[DEV’s jekyll tag](https://dev.to/t/jekyll) is a place to share Jekyll projects, articles and tutorials as well as start discussions and ask for feedback on Jekyll-related topics. Developers of all skill-levels are welcome to take part. + ### [Google](https://www.google.com/?q=jekyll) Add **jekyll** to almost any query, and you'll find just what you need. From 707e48a41272796378f094d5e33612b023c45c9d Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 16 Jul 2018 09:58:28 -0400 Subject: [PATCH 37/40] Update history to reflect merge of #7139 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 939e2a56..c2277cee 100644 --- a/History.markdown +++ b/History.markdown @@ -35,6 +35,7 @@ * Add the jekyll-firstimage filter plugin (#7127) * Use a real theme in the example (#7125) * Update docs about post creation (#7138) + * Add DEV Community's Jekyll tag to community page (#7139) ### Minor Enhancements From 6802ec93eb9c6f25489b6c734966ec4099ed9eaa Mon Sep 17 00:00:00 2001 From: Belhassen Chelbi Date: Mon, 16 Jul 2018 15:13:26 +0100 Subject: [PATCH 38/40] Add Dev.to website link --- docs/help/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/help/index.md b/docs/help/index.md index 4d0c126b..45492aaa 100644 --- a/docs/help/index.md +++ b/docs/help/index.md @@ -43,7 +43,7 @@ Known breaking changes are listed in the upgrading docs. Watch videos from members of the Jekyll community speak about interesting use cases, tricks they've learned or meta Jekyll topics. -### The Dev community +### [The Dev community](https://dev.to/) [DEV’s jekyll tag](https://dev.to/t/jekyll) is a place to share Jekyll projects, articles and tutorials as well as start discussions and ask for feedback on Jekyll-related topics. Developers of all skill-levels are welcome to take part. From 50e0379444f3b0906d6697934d1c7c49946f666b Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Tue, 17 Jul 2018 00:34:20 +0530 Subject: [PATCH 39/40] Initialize upgrading doc for v4.0 (#7140) Merge pull request 7140 --- docs/_docs/upgrading/3-to-4.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 docs/_docs/upgrading/3-to-4.md diff --git a/docs/_docs/upgrading/3-to-4.md b/docs/_docs/upgrading/3-to-4.md new file mode 100644 index 00000000..8bd1fde1 --- /dev/null +++ b/docs/_docs/upgrading/3-to-4.md @@ -0,0 +1,28 @@ +--- +title: Upgrading from 3.x to 4.x +permalink: /docs/upgrading/3-to-4/ +--- + +Upgrading from an older version of Jekyll? A few things have changed in Jekyll 4 +that you'll want to know about. + +Before we dive in, you need to have at least Ruby 2.3.0 installed. Run the following +in your terminal to check + +```sh +ruby -v +``` + +If you're using Ruby >= 2.3.0, go ahead and fetch the latest version of Jekyll: + +```sh +gem update jekyll +``` + +--- + + *Insert sections here* + +--- + +*Did we miss something? Please click "Improve this page" above and add a section. Thanks!* From ad9fbeb4b1d64b267f19955f50b32da89b5c6ebd Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 16 Jul 2018 15:04:22 -0400 Subject: [PATCH 40/40] Update history to reflect merge of #7140 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index c2277cee..efd8a7d0 100644 --- a/History.markdown +++ b/History.markdown @@ -36,6 +36,7 @@ * Use a real theme in the example (#7125) * Update docs about post creation (#7138) * Add DEV Community's Jekyll tag to community page (#7139) + * Initialize upgrading doc for v4.0 (#7140) ### Minor Enhancements