From cff8f2994ceb727e465a6b2425625af89a63ef93 Mon Sep 17 00:00:00 2001 From: Anatoliy Yastreb Date: Sat, 1 Oct 2016 13:09:50 +0100 Subject: [PATCH] Fix loading data from subdir with a period in name #5429 --- lib/jekyll/readers/data_reader.rb | 4 ++-- test/source/_data/categories.01/dairy.yaml | 6 ++++++ test/test_site.rb | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 test/source/_data/categories.01/dairy.yaml diff --git a/lib/jekyll/readers/data_reader.rb b/lib/jekyll/readers/data_reader.rb index 4c6495fd..20474011 100644 --- a/lib/jekyll/readers/data_reader.rb +++ b/lib/jekyll/readers/data_reader.rb @@ -37,10 +37,10 @@ module Jekyll path = @site.in_source_dir(dir, entry) next if @entry_filter.symlink?(path) - key = sanitize_filename(File.basename(entry, ".*")) if File.directory?(path) - read_data_to(path, data[key] = {}) + read_data_to(path, data[entry] = {}) else + key = sanitize_filename(File.basename(entry, ".*")) data[key] = read_data_file(path) end end diff --git a/test/source/_data/categories.01/dairy.yaml b/test/source/_data/categories.01/dairy.yaml new file mode 100644 index 00000000..30a09ba3 --- /dev/null +++ b/test/source/_data/categories.01/dairy.yaml @@ -0,0 +1,6 @@ +name: Dairy +products: +- name: cheese + price: 5.5 +- name: milk + price: 2.75 diff --git a/test/test_site.rb b/test/test_site.rb index 1f0d30a1..5cd20b64 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -438,6 +438,21 @@ class TestSite < JekyllUnitTest ) end + should "auto load yaml files in subdirectory with a period in the name" do + site = Site.new(site_configuration) + site.process + + file_content = SafeYAML.load_file(File.join( + source_dir, "_data", "categories.01", "dairy.yaml" + )) + + assert_equal site.data["categories.01"]["dairy"], file_content + assert_equal( + site.site_payload["site"]["data"]["categories.01"]["dairy"], + file_content + ) + end + should "load symlink files in unsafe mode" do site = Site.new(site_configuration("safe" => false)) site.process