From 10f55e89a482dbb6ef734684468b21d136fffc38 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Wed, 5 Feb 2020 16:10:28 +0530 Subject: [PATCH 1/2] Fix `Scss#sass_dir_relative_to_site_source` logic --- lib/jekyll/converters/scss.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/jekyll/converters/scss.rb b/lib/jekyll/converters/scss.rb index 27f6b00..3fcfdf1 100644 --- a/lib/jekyll/converters/scss.rb +++ b/lib/jekyll/converters/scss.rb @@ -123,7 +123,9 @@ def user_sass_load_paths end def sass_dir_relative_to_site_source - Jekyll.sanitized_path(site_source, sass_dir) + @sass_dir_relative_to_site_source ||= begin + Jekyll.sanitized_path(site_source, sass_dir).sub(site.source + "/", "") + end end # rubocop:disable Metrics/AbcSize From 3279c8dbe81bb31fb7f4a4fa6169905fe63a157f Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Wed, 5 Feb 2020 17:39:59 +0530 Subject: [PATCH 2/2] Update converter and tests to align with change --- lib/jekyll/converters/scss.rb | 3 ++- spec/[alpha]beta/_config.yml | 3 +++ spec/[alpha]beta/_sass/_color.scss | 2 ++ spec/[alpha]beta/_sass/_grid.scss | 1 + spec/[alpha]beta/css/main.scss | 4 ++++ spec/sass_converter_spec.rb | 18 ++++++++++++++++++ spec/scss_converter_spec.rb | 20 +++++++++++++++++++- 7 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 spec/[alpha]beta/_config.yml create mode 100644 spec/[alpha]beta/_sass/_color.scss create mode 100644 spec/[alpha]beta/_sass/_grid.scss create mode 100644 spec/[alpha]beta/css/main.scss diff --git a/lib/jekyll/converters/scss.rb b/lib/jekyll/converters/scss.rb index 3fcfdf1..438985a 100644 --- a/lib/jekyll/converters/scss.rb +++ b/lib/jekyll/converters/scss.rb @@ -139,7 +139,7 @@ def sass_load_paths # Expand file globs (e.g. `node_modules/*/node_modules` ) Dir.chdir(site_source) do - paths = paths.flat_map { |path| Dir.glob(path) }.uniq + paths = paths.flat_map { |path| Dir.glob(path) } paths.map! do |path| if safe? @@ -151,6 +151,7 @@ def sass_load_paths end end + paths.uniq! paths << site.theme.sass_path if site.theme&.sass_path paths.select { |path| File.directory?(path) } end diff --git a/spec/[alpha]beta/_config.yml b/spec/[alpha]beta/_config.yml new file mode 100644 index 0000000..7f6d3a0 --- /dev/null +++ b/spec/[alpha]beta/_config.yml @@ -0,0 +1,3 @@ +sass: + style: :compressed +highlighter: rouge diff --git a/spec/[alpha]beta/_sass/_color.scss b/spec/[alpha]beta/_sass/_color.scss new file mode 100644 index 0000000..3f767ec --- /dev/null +++ b/spec/[alpha]beta/_sass/_color.scss @@ -0,0 +1,2 @@ +$black: #999; +a { color: $black } diff --git a/spec/[alpha]beta/_sass/_grid.scss b/spec/[alpha]beta/_sass/_grid.scss new file mode 100644 index 0000000..e2d4832 --- /dev/null +++ b/spec/[alpha]beta/_sass/_grid.scss @@ -0,0 +1 @@ +.half { width: 50% } diff --git a/spec/[alpha]beta/css/main.scss b/spec/[alpha]beta/css/main.scss new file mode 100644 index 0000000..337cdb6 --- /dev/null +++ b/spec/[alpha]beta/css/main.scss @@ -0,0 +1,4 @@ +--- +--- + +@import "grid"; diff --git a/spec/sass_converter_spec.rb b/spec/sass_converter_spec.rb index e56ced5..f2791e0 100644 --- a/spec/sass_converter_spec.rb +++ b/spec/sass_converter_spec.rb @@ -95,4 +95,22 @@ def converter(overrides = {}) expect(verter.convert(content)).to eql(css_output) end end + + context "in a site nested inside directory with square brackets" do + let(:site) do + make_site( + "source" => File.expand_path("[alpha]beta", __dir__), + "sass" => { + "style" => :compact, + } + ) + end + + let(:verter) { sass_converter_instance(site) } + + it "produces CSS without raising errors" do + expect { site.process }.not_to raise_error + expect(verter.convert(content)).to eql(css_output) + end + end end diff --git a/spec/scss_converter_spec.rb b/spec/scss_converter_spec.rb index 347d7b4..0a10b4c 100644 --- a/spec/scss_converter_spec.rb +++ b/spec/scss_converter_spec.rb @@ -81,7 +81,7 @@ def converter(overrides = {}) it "not allow sass_dirs outside of site source" do expect( converter("sass_dir" => "/etc/passwd").sass_dir_relative_to_site_source - ).to eql(source_dir("etc/passwd")) + ).to eql("etc/passwd") end end end @@ -356,4 +356,22 @@ def converter(overrides = {}) expect(verter.convert(content)).to eql(css_output) end end + + context "in a site nested inside directory with square brackets" do + let(:site) do + make_site( + "source" => File.expand_path("[alpha]beta", __dir__), + "sass" => { + "style" => :compact, + } + ) + end + + let(:verter) { scss_converter_instance(site) } + + it "produces CSS without raising errors" do + expect { site.process }.not_to raise_error + expect(verter.convert(content)).to eql(css_output) + end + end end