diff --git a/lib/rspec_api_documentation/views/markup_example.rb b/lib/rspec_api_documentation/views/markup_example.rb index 7863e844..fe604ff5 100644 --- a/lib/rspec_api_documentation/views/markup_example.rb +++ b/lib/rspec_api_documentation/views/markup_example.rb @@ -23,7 +23,8 @@ def dirname end def filename - basename = description.downcase.gsub(/\s+/, '_').gsub(Pathname::SEPARATOR_PAT, '') + special_chars = /[<>:"\/\\|?*]/ + basename = description.downcase.gsub(/\s+/, '_').gsub(special_chars, '') basename = Digest::MD5.new.update(description).to_s if basename.blank? "#{basename}.#{extension}" end diff --git a/spec/views/html_example_spec.rb b/spec/views/html_example_spec.rb index 5b24b3a6..366e0112 100644 --- a/spec/views/html_example_spec.rb +++ b/spec/views/html_example_spec.rb @@ -4,7 +4,8 @@ describe RspecApiDocumentation::Views::HtmlExample do let(:metadata) { { :resource_name => "Orders" } } let(:group) { RSpec::Core::ExampleGroup.describe("Orders", metadata) } - let(:rspec_example) { group.example("Ordering a cup of coffee") {} } + let(:description) { "Ordering a cup of coffee" } + let(:rspec_example) { group.example(description) {} } let(:rad_example) do RspecApiDocumentation::Example.new(rspec_example, configuration) end @@ -19,6 +20,14 @@ expect(html_example.filename).to eq("ordering_a_cup_of_coffee.html") end + context "when description contains special characters for Windows OS" do + let(:description) { 'foo<>:"/\|?*bar' } + + it "removes them" do + expect(html_example.filename).to eq("foobar.html") + end + end + describe "multi charctor example name" do let(:metadata) { { :resource_name => "オーダ" } } let(:label) { "Coffee / Teaが順番で並んでいること" }