From bdbc7d967a0c3d95d5e4ea19a2a5be41268d3540 Mon Sep 17 00:00:00 2001
From: Douwe Maan <douwe@selenight.nl>
Date: Wed, 22 Feb 2017 16:39:43 -0600
Subject: [PATCH] Revert "Enable Style/BarePercentLiterals"

This reverts commit 96bef54154e669f9a3e92c3a4bc76c0be3a52e48.
---
 .rubocop.yml                                         |  4 ----
 .rubocop_todo.yml                                    |  7 +++++++
 app/helpers/commits_helper.rb                        |  2 +-
 app/models/commit.rb                                 |  2 +-
 ...0160610201627_migrate_users_notification_level.rb |  4 ++--
 .../20160831214543_migrate_project_features.rb       |  4 ++--
 features/steps/project/badges/build.rb               |  2 +-
 lib/banzai/filter/autolink_filter.rb                 |  2 +-
 lib/banzai/filter/reference_filter.rb                |  4 ++--
 lib/banzai/filter/table_of_contents_filter.rb        |  6 +++---
 lib/gitlab/database/median.rb                        |  4 ++--
 spec/features/projects/badges/coverage_spec.rb       |  2 +-
 spec/features/projects/issuable_templates_spec.rb    |  2 +-
 spec/features/projects/pipelines/pipelines_spec.rb   |  2 +-
 spec/helpers/blob_helper_spec.rb                     |  2 +-
 spec/helpers/gitlab_markdown_helper_spec.rb          |  4 ++--
 spec/lib/banzai/filter/external_link_filter_spec.rb  |  6 +++---
 .../lib/banzai/filter/label_reference_filter_spec.rb |  2 +-
 .../banzai/filter/milestone_reference_filter_spec.rb |  2 +-
 spec/lib/banzai/filter/user_reference_filter_spec.rb |  2 +-
 spec/lib/banzai/pipeline/full_pipeline_spec.rb       |  2 +-
 spec/lib/gitlab/diff/highlight_spec.rb               | 12 ++++++------
 spec/lib/gitlab/gfm/reference_rewriter_spec.rb       |  8 ++++----
 spec/lib/gitlab/highlight_spec.rb                    |  6 +++---
 spec/lib/gitlab/reference_extractor_spec.rb          |  2 +-
 spec/lib/gitlab/url_sanitizer_spec.rb                |  2 +-
 spec/models/project_label_spec.rb                    |  4 ++--
 spec/models/project_services/bamboo_service_spec.rb  |  4 ++--
 .../project_services/buildkite_service_spec.rb       |  4 ++--
 .../models/project_services/drone_ci_service_spec.rb |  4 ++--
 .../models/project_services/teamcity_service_spec.rb |  6 +++---
 spec/workers/repository_import_worker_spec.rb        |  2 +-
 32 files changed, 62 insertions(+), 59 deletions(-)

diff --git a/.rubocop.yml b/.rubocop.yml
index 1850c31e344..a7d4222b9b2 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -77,10 +77,6 @@ Style/AsciiIdentifiers:
 Style/Attr:
   Enabled: true
 
-# This cop checks if usage of %() or %Q() matches configuration.
-Style/BarePercentLiterals:
-  Enabled: true
-
 # Avoid the use of BEGIN blocks.
 Style/BeginBlock:
   Enabled: true
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 6cd4e606382..8bc7d568c10 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -63,6 +63,13 @@ Rails/SkipsModelValidations:
 # Cop supports --auto-correct.
 Security/YAMLLoad:
   Enabled: false
+  
+# Offense count: 55
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+# SupportedStyles: percent_q, bare_percent
+Style/BarePercentLiterals:
+  Enabled: false
 
 # Offense count: 6
 # Cop supports --auto-correct.
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 4e1fbc57575..8aad39e148b 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -155,7 +155,7 @@ module CommitsHelper
 
     text =
       if options[:avatar]
-        %{<span class="commit-#{options[:source]}-name">#{person_name}</span>}
+        %Q{<span class="commit-#{options[:source]}-name">#{person_name}</span>}
       else
         person_name
       end
diff --git a/app/models/commit.rb b/app/models/commit.rb
index dc971e710ff..0a18986ef26 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -256,7 +256,7 @@ class Commit
   end
 
   def revert_message(user)
-    %{Revert "#{title.strip}"\n\n#{revert_description(user)}}
+    %Q{Revert "#{title.strip}"\n\n#{revert_description(user)}}
   end
 
   def reverts_commit?(commit, user)
diff --git a/db/migrate/20160610201627_migrate_users_notification_level.rb b/db/migrate/20160610201627_migrate_users_notification_level.rb
index 9da67b59dd1..ce4f00e25fa 100644
--- a/db/migrate/20160610201627_migrate_users_notification_level.rb
+++ b/db/migrate/20160610201627_migrate_users_notification_level.rb
@@ -5,7 +5,7 @@ class MigrateUsersNotificationLevel < ActiveRecord::Migration
   DOWNTIME = false
 
   def up
-    execute(%{
+    execute(%Q{
       INSERT INTO notification_settings
       (user_id, level, created_at, updated_at)
       (SELECT id, notification_level, created_at, updated_at FROM users WHERE notification_level != 1)
@@ -15,7 +15,7 @@ class MigrateUsersNotificationLevel < ActiveRecord::Migration
   # Migrates from notification settings back to user notification_level
   # If no value is found the default level of 1 will be used
   def down
-    execute(%{
+    execute(%Q{
       UPDATE users u SET
       notification_level = COALESCE((SELECT level FROM notification_settings WHERE user_id = u.id AND source_type IS NULL), 1)
     })
diff --git a/db/migrate/20160831214543_migrate_project_features.rb b/db/migrate/20160831214543_migrate_project_features.rb
index a2f2267773c..79a5fb29d64 100644
--- a/db/migrate/20160831214543_migrate_project_features.rb
+++ b/db/migrate/20160831214543_migrate_project_features.rb
@@ -10,7 +10,7 @@ class MigrateProjectFeatures < ActiveRecord::Migration
 
   def up
     sql =
-      %{
+      %Q{
         INSERT INTO project_features(project_id, issues_access_level, merge_requests_access_level, wiki_access_level,
         builds_access_level, snippets_access_level, created_at, updated_at)
           SELECT
@@ -29,7 +29,7 @@ class MigrateProjectFeatures < ActiveRecord::Migration
   end
 
   def down
-    sql = %{
+    sql = %Q{
       UPDATE projects
       SET
       issues_enabled = COALESCE((SELECT CASE WHEN issues_access_level = 20 THEN true ELSE false END AS issues_enabled FROM project_features WHERE project_features.project_id = projects.id), true),
diff --git a/features/steps/project/badges/build.rb b/features/steps/project/badges/build.rb
index 12a49779edb..96c59322f9b 100644
--- a/features/steps/project/badges/build.rb
+++ b/features/steps/project/badges/build.rb
@@ -27,6 +27,6 @@ class Spinach::Features::ProjectBadgesBuild < Spinach::FeatureSteps
   def expect_badge(status)
     svg = Nokogiri::XML.parse(page.body)
     expect(page.response_headers['Content-Type']).to include('image/svg+xml')
-    expect(svg.at(%{text:contains("#{status}")})).to be_truthy
+    expect(svg.at(%Q{text:contains("#{status}")})).to be_truthy
   end
 end
diff --git a/lib/banzai/filter/autolink_filter.rb b/lib/banzai/filter/autolink_filter.rb
index e84b7c2c0c3..b8d2673c1a6 100644
--- a/lib/banzai/filter/autolink_filter.rb
+++ b/lib/banzai/filter/autolink_filter.rb
@@ -32,7 +32,7 @@ module Banzai
       IGNORE_PARENTS = %w(a code kbd pre script style).to_set
 
       # The XPath query to use for finding text nodes to parse.
-      TEXT_QUERY = %(descendant-or-self::text()[
+      TEXT_QUERY = %Q(descendant-or-self::text()[
         not(#{IGNORE_PARENTS.map { |p| "ancestor::#{p}" }.join(' or ')})
         and contains(., '://')
         and not(starts-with(., 'http'))
diff --git a/lib/banzai/filter/reference_filter.rb b/lib/banzai/filter/reference_filter.rb
index 6281fa7e401..6640168bfa2 100644
--- a/lib/banzai/filter/reference_filter.rb
+++ b/lib/banzai/filter/reference_filter.rb
@@ -32,7 +32,7 @@ module Banzai
         attributes[:reference_type] ||= self.class.reference_type
         attributes.delete(:original) if context[:no_original_data]
         attributes.map do |key, value|
-          %(data-#{key.to_s.dasherize}="#{escape_once(value)}")
+          %Q(data-#{key.to_s.dasherize}="#{escape_once(value)}")
         end.join(' ')
       end
 
@@ -76,7 +76,7 @@ module Banzai
       def each_node
         return to_enum(__method__) unless block_given?
 
-        query = %{descendant-or-self::text()[not(#{ignore_ancestor_query})]
+        query = %Q{descendant-or-self::text()[not(#{ignore_ancestor_query})]
         | descendant-or-self::a[
           not(contains(concat(" ", @class, " "), " gfm ")) and not(@href = "")
         ]}
diff --git a/lib/banzai/filter/table_of_contents_filter.rb b/lib/banzai/filter/table_of_contents_filter.rb
index d460110b974..8e7084f2543 100644
--- a/lib/banzai/filter/table_of_contents_filter.rb
+++ b/lib/banzai/filter/table_of_contents_filter.rb
@@ -43,7 +43,7 @@ module Banzai
           end
         end
 
-        result[:toc] = %{<ul class="section-nav">\n#{result[:toc]}</ul>} unless result[:toc].empty?
+        result[:toc] = %Q{<ul class="section-nav">\n#{result[:toc]}</ul>} unless result[:toc].empty?
 
         doc
       end
@@ -51,11 +51,11 @@ module Banzai
       private
 
       def anchor_tag(id, href)
-        %{<a id="#{id}" class="anchor" href="##{href}" aria-hidden="true"></a>}
+        %Q{<a id="#{id}" class="anchor" href="##{href}" aria-hidden="true"></a>}
       end
 
       def push_toc(href, text)
-        result[:toc] << %{<li><a href="##{href}">#{text}</a></li>\n}
+        result[:toc] << %Q{<li><a href="##{href}">#{text}</a></li>\n}
       end
     end
   end
diff --git a/lib/gitlab/database/median.rb b/lib/gitlab/database/median.rb
index e265d22a989..059054ac9ff 100644
--- a/lib/gitlab/database/median.rb
+++ b/lib/gitlab/database/median.rb
@@ -100,13 +100,13 @@ module Gitlab
       end
 
       def extract_epoch(arel_attribute)
-        Arel.sql(%{EXTRACT(EPOCH FROM "#{arel_attribute.relation.name}"."#{arel_attribute.name}")})
+        Arel.sql(%Q{EXTRACT(EPOCH FROM "#{arel_attribute.relation.name}"."#{arel_attribute.name}")})
       end
 
       def extract_diff_epoch(diff)
         return diff unless Gitlab::Database.postgresql?
 
-        Arel.sql(%{EXTRACT(EPOCH FROM (#{diff.to_sql}))})
+        Arel.sql(%Q{EXTRACT(EPOCH FROM (#{diff.to_sql}))})
       end
 
       # Need to cast '0' to an INTERVAL before we can check if the interval is positive
diff --git a/spec/features/projects/badges/coverage_spec.rb b/spec/features/projects/badges/coverage_spec.rb
index 1fefcb916f6..01a95bf49ac 100644
--- a/spec/features/projects/badges/coverage_spec.rb
+++ b/spec/features/projects/badges/coverage_spec.rb
@@ -77,6 +77,6 @@ feature 'test coverage badge' do
   def expect_coverage_badge(coverage)
     svg = Nokogiri::XML.parse(page.body)
     expect(page.response_headers['Content-Type']).to include('image/svg+xml')
-    expect(svg.at(%{text:contains("#{coverage}")})).to be_truthy
+    expect(svg.at(%Q{text:contains("#{coverage}")})).to be_truthy
   end
 end
diff --git a/spec/features/projects/issuable_templates_spec.rb b/spec/features/projects/issuable_templates_spec.rb
index 3fe5a6ec818..e90a033b8c4 100644
--- a/spec/features/projects/issuable_templates_spec.rb
+++ b/spec/features/projects/issuable_templates_spec.rb
@@ -13,7 +13,7 @@ feature 'issuable templates', feature: true, js: true do
 
   context 'user creates an issue using templates' do
     let(:template_content) { 'this is a test "bug" template' }
-    let(:longtemplate_content) { %(this\n\n\n\n\nis\n\n\n\n\na\n\n\n\n\nbug\n\n\n\n\ntemplate) }
+    let(:longtemplate_content) { %Q(this\n\n\n\n\nis\n\n\n\n\na\n\n\n\n\nbug\n\n\n\n\ntemplate) }
     let(:issue) { create(:issue, author: user, assignee: user, project: project) }
     let(:description_addition) { ' appending to description' }
 
diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb
index 0e12618b629..592dc4483d2 100644
--- a/spec/features/projects/pipelines/pipelines_spec.rb
+++ b/spec/features/projects/pipelines/pipelines_spec.rb
@@ -154,7 +154,7 @@ describe 'Pipelines', :feature, :js do
         it 'contains badge with tooltip which contains error' do
           expect(pipeline).to have_yaml_errors
           expect(page).to have_selector(
-            %{span[data-original-title="#{pipeline.yaml_errors}"]})
+            %Q{span[data-original-title="#{pipeline.yaml_errors}"]})
         end
       end
 
diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb
index 3e1b29dde75..fa516f9903e 100644
--- a/spec/helpers/blob_helper_spec.rb
+++ b/spec/helpers/blob_helper_spec.rb
@@ -23,7 +23,7 @@ describe BlobHelper do
     end
 
     it 'highlights single block' do
-      expected = %[<pre class="code highlight"><code><span id="LC1" class="line"><span class="p">(</span><span class="nb">make-pathname</span> <span class="ss">:defaults</span> <span class="nv">name</span></span>
+      expected = %Q[<pre class="code highlight"><code><span id="LC1" class="line"><span class="p">(</span><span class="nb">make-pathname</span> <span class="ss">:defaults</span> <span class="nv">name</span></span>
 <span id="LC2" class="line"><span class="ss">:type</span> <span class="s">"assem"</span><span class="p">))</span></span></code></pre>]
 
       expect(helper.highlight(blob_name, blob_content)).to eq(expected)
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index 908e1a65c55..7daf03bcc54 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -107,13 +107,13 @@ describe GitlabMarkdownHelper do
     it 'ignores reference links when they are the entire body' do
       text = issues[0].to_reference
       act = helper.link_to_gfm(text, '/foo')
-      expect(act).to eq %(<a href="/foo">#{issues[0].to_reference}</a>)
+      expect(act).to eq %Q(<a href="/foo">#{issues[0].to_reference}</a>)
     end
 
     it 'replaces commit message with emoji to link' do
       actual = link_to_gfm(':book:Book', '/foo')
       expect(actual)
-        .to eq %(<img class="emoji" title=":book:" alt=":book:" src="http://#{Gitlab.config.gitlab.host}/assets/1F4D6.png" height="20" width="20" align="absmiddle"><a href="/foo">Book</a>)
+        .to eq %Q(<img class="emoji" title=":book:" alt=":book:" src="http://#{Gitlab.config.gitlab.host}/assets/1F4D6.png" height="20" width="20" align="absmiddle"><a href="/foo">Book</a>)
     end
   end
 
diff --git a/spec/lib/banzai/filter/external_link_filter_spec.rb b/spec/lib/banzai/filter/external_link_filter_spec.rb
index 5ffbab0f12f..d9e4525cb28 100644
--- a/spec/lib/banzai/filter/external_link_filter_spec.rb
+++ b/spec/lib/banzai/filter/external_link_filter_spec.rb
@@ -15,7 +15,7 @@ describe Banzai::Filter::ExternalLinkFilter, lib: true do
 
   it 'skips internal links' do
     internal = Gitlab.config.gitlab.url
-    exp = act = %(<a href="#{internal}/sign_in">Login</a>)
+    exp = act = %Q(<a href="#{internal}/sign_in">Login</a>)
     expect(filter(act).to_html).to eq exp
   end
 
@@ -70,8 +70,8 @@ describe Banzai::Filter::ExternalLinkFilter, lib: true do
     it 'skips internal links' do
       internal_link = Gitlab.config.gitlab.url + "/sign_in"
       url = internal_link.gsub(/\Ahttp/, 'HtTp')
-      act = %(<a href="#{url}">Login</a>)
-      exp = %(<a href="#{internal_link}">Login</a>)
+      act = %Q(<a href="#{url}">Login</a>)
+      exp = %Q(<a href="#{internal_link}">Login</a>)
       expect(filter(act).to_html).to eq(exp)
     end
 
diff --git a/spec/lib/banzai/filter/label_reference_filter_spec.rb b/spec/lib/banzai/filter/label_reference_filter_spec.rb
index 80fa940f330..cb3cf982351 100644
--- a/spec/lib/banzai/filter/label_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/label_reference_filter_spec.rb
@@ -282,7 +282,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
   end
 
   describe 'referencing a label in a link href' do
-    let(:reference) { %{<a href="#{label.to_reference}">Label</a>} }
+    let(:reference) { %Q{<a href="#{label.to_reference}">Label</a>} }
 
     it 'links to a valid reference' do
       doc = reference_filter("See #{reference}")
diff --git a/spec/lib/banzai/filter/milestone_reference_filter_spec.rb b/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
index 0f4619a6dfb..fe88b9cb73e 100644
--- a/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
@@ -117,7 +117,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
   end
 
   describe 'referencing a milestone in a link href' do
-    let(:reference) { %{<a href="#{milestone.to_reference}">Milestone</a>} }
+    let(:reference) { %Q{<a href="#{milestone.to_reference}">Milestone</a>} }
 
     it 'links to a valid reference' do
       doc = reference_filter("See #{reference}")
diff --git a/spec/lib/banzai/filter/user_reference_filter_spec.rb b/spec/lib/banzai/filter/user_reference_filter_spec.rb
index 6d6a00a3b1f..d5d128c1907 100644
--- a/spec/lib/banzai/filter/user_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/user_reference_filter_spec.rb
@@ -144,7 +144,7 @@ describe Banzai::Filter::UserReferenceFilter, lib: true do
   end
 
   context 'referencing a user in a link href' do
-    let(:reference) { %{<a href="#{user.to_reference}">User</a>} }
+    let(:reference) { %Q{<a href="#{user.to_reference}">User</a>} }
 
     it 'links to a User' do
       doc = reference_filter("Hey #{reference}")
diff --git a/spec/lib/banzai/pipeline/full_pipeline_spec.rb b/spec/lib/banzai/pipeline/full_pipeline_spec.rb
index c24a0e4d2b6..2501b638774 100644
--- a/spec/lib/banzai/pipeline/full_pipeline_spec.rb
+++ b/spec/lib/banzai/pipeline/full_pipeline_spec.rb
@@ -20,7 +20,7 @@ describe Banzai::Pipeline::FullPipeline do
     end
 
     it 'escapes the data-original attribute on a reference' do
-      markdown = %{[">bad things](#{issue.to_reference})}
+      markdown = %Q{[">bad things](#{issue.to_reference})}
       result = described_class.to_html(markdown, project: project)
       expect(result).to include(%{data-original='\"&gt;bad things'})
     end
diff --git a/spec/lib/gitlab/diff/highlight_spec.rb b/spec/lib/gitlab/diff/highlight_spec.rb
index 1cb6f66ced5..0e9309d278e 100644
--- a/spec/lib/gitlab/diff/highlight_spec.rb
+++ b/spec/lib/gitlab/diff/highlight_spec.rb
@@ -22,19 +22,19 @@ describe Gitlab::Diff::Highlight, lib: true do
       end
 
       it 'highlights and marks unchanged lines' do
-        code = %{ <span id="LC7" class="line">  <span class="k">def</span> <span class="nf">popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="kp">nil</span><span class="p">)</span></span>\n}
+        code = %Q{ <span id="LC7" class="line">  <span class="k">def</span> <span class="nf">popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="kp">nil</span><span class="p">)</span></span>\n}
 
         expect(subject[2].text).to eq(code)
       end
 
       it 'highlights and marks removed lines' do
-        code = %{-<span id="LC9" class="line">      <span class="k">raise</span> <span class="s2">"System commands must be given as an array of strings"</span></span>\n}
+        code = %Q{-<span id="LC9" class="line">      <span class="k">raise</span> <span class="s2">"System commands must be given as an array of strings"</span></span>\n}
 
         expect(subject[4].text).to eq(code)
       end
 
       it 'highlights and marks added lines' do
-        code = %{+<span id="LC9" class="line">      <span class="k">raise</span> <span class="no"><span class='idiff left'>RuntimeError</span></span><span class="p"><span class='idiff'>,</span></span><span class='idiff right'> </span><span class="s2">"System commands must be given as an array of strings"</span></span>\n}
+        code = %Q{+<span id="LC9" class="line">      <span class="k">raise</span> <span class="no"><span class='idiff left'>RuntimeError</span></span><span class="p"><span class='idiff'>,</span></span><span class='idiff right'> </span><span class="s2">"System commands must be given as an array of strings"</span></span>\n}
 
         expect(subject[5].text).to eq(code)
       end
@@ -53,21 +53,21 @@ describe Gitlab::Diff::Highlight, lib: true do
       end
 
       it 'marks unchanged lines' do
-        code = %{   def popen(cmd, path=nil)}
+        code = %q{   def popen(cmd, path=nil)}
 
         expect(subject[2].text).to eq(code)
         expect(subject[2].text).not_to be_html_safe
       end
 
       it 'marks removed lines' do
-        code = %{-      raise "System commands must be given as an array of strings"}
+        code = %q{-      raise "System commands must be given as an array of strings"}
 
         expect(subject[4].text).to eq(code)
         expect(subject[4].text).not_to be_html_safe
       end
 
       it 'marks added lines' do
-        code = %{+      raise <span class='idiff left right'>RuntimeError, </span>&quot;System commands must be given as an array of strings&quot;}
+        code = %q{+      raise <span class='idiff left right'>RuntimeError, </span>&quot;System commands must be given as an array of strings&quot;}
 
         expect(subject[5].text).to eq(code)
         expect(subject[5].text).to be_html_safe
diff --git a/spec/lib/gitlab/gfm/reference_rewriter_spec.rb b/spec/lib/gitlab/gfm/reference_rewriter_spec.rb
index 8625dd7b711..5d416c9eec3 100644
--- a/spec/lib/gitlab/gfm/reference_rewriter_spec.rb
+++ b/spec/lib/gitlab/gfm/reference_rewriter_spec.rb
@@ -68,12 +68,12 @@ describe Gitlab::Gfm::ReferenceRewriter do
 
           context 'label referenced by id' do
             let(:text) { '#1 and ~123' }
-            it { is_expected.to eq %{#{project_ref}#1 and #{project_ref}~123} }
+            it { is_expected.to eq %Q{#{project_ref}#1 and #{project_ref}~123} }
           end
 
           context 'label referenced by text' do
             let(:text) { '#1 and ~"test"' }
-            it { is_expected.to eq %{#{project_ref}#1 and #{project_ref}~123} }
+            it { is_expected.to eq %Q{#{project_ref}#1 and #{project_ref}~123} }
           end
         end
 
@@ -88,12 +88,12 @@ describe Gitlab::Gfm::ReferenceRewriter do
 
           context 'label referenced by id' do
             let(:text) { '#1 and ~321' }
-            it { is_expected.to eq %{#{project_ref}#1 and #{project_ref}~321} }
+            it { is_expected.to eq %Q{#{project_ref}#1 and #{project_ref}~321} }
           end
 
           context 'label referenced by text' do
             let(:text) { '#1 and ~"group label"' }
-            it { is_expected.to eq %{#{project_ref}#1 and #{project_ref}~321} }
+            it { is_expected.to eq %Q{#{project_ref}#1 and #{project_ref}~321} }
           end
         end
       end
diff --git a/spec/lib/gitlab/highlight_spec.rb b/spec/lib/gitlab/highlight_spec.rb
index fc2733691be..e177d883158 100644
--- a/spec/lib/gitlab/highlight_spec.rb
+++ b/spec/lib/gitlab/highlight_spec.rb
@@ -13,9 +13,9 @@ describe Gitlab::Highlight, lib: true do
     end
 
     it 'highlights all the lines properly' do
-      expect(lines[4]).to eq(%{<span id="LC5" class="line">  <span class="kp">extend</span> <span class="nb">self</span></span>\n})
-      expect(lines[21]).to eq(%{<span id="LC22" class="line">    <span class="k">unless</span> <span class="no">File</span><span class="p">.</span><span class="nf">directory?</span><span class="p">(</span><span class="n">path</span><span class="p">)</span></span>\n})
-      expect(lines[26]).to eq(%{<span id="LC27" class="line">    <span class="vi">@cmd_status</span> <span class="o">=</span> <span class="mi">0</span></span>\n})
+      expect(lines[4]).to eq(%Q{<span id="LC5" class="line">  <span class="kp">extend</span> <span class="nb">self</span></span>\n})
+      expect(lines[21]).to eq(%Q{<span id="LC22" class="line">    <span class="k">unless</span> <span class="no">File</span><span class="p">.</span><span class="nf">directory?</span><span class="p">(</span><span class="n">path</span><span class="p">)</span></span>\n})
+      expect(lines[26]).to eq(%Q{<span id="LC27" class="line">    <span class="vi">@cmd_status</span> <span class="o">=</span> <span class="mi">0</span></span>\n})
     end
 
     describe 'with CRLF' do
diff --git a/spec/lib/gitlab/reference_extractor_spec.rb b/spec/lib/gitlab/reference_extractor_spec.rb
index 0a2cab6888d..84cfd934fa0 100644
--- a/spec/lib/gitlab/reference_extractor_spec.rb
+++ b/spec/lib/gitlab/reference_extractor_spec.rb
@@ -29,7 +29,7 @@ describe Gitlab::ReferenceExtractor, lib: true do
     project.team << [@u_foo, :reporter]
     project.team << [@u_bar, :guest]
 
-    subject.analyze(%{
+    subject.analyze(%Q{
       Inline code: `@foo`
 
       Code block:
diff --git a/spec/lib/gitlab/url_sanitizer_spec.rb b/spec/lib/gitlab/url_sanitizer_spec.rb
index f3533947c1c..2cb74629da8 100644
--- a/spec/lib/gitlab/url_sanitizer_spec.rb
+++ b/spec/lib/gitlab/url_sanitizer_spec.rb
@@ -9,7 +9,7 @@ describe Gitlab::UrlSanitizer, lib: true do
   describe '.sanitize' do
     def sanitize_url(url)
       # We want to try with multi-line content because is how error messages are formatted
-      described_class.sanitize(%{
+      described_class.sanitize(%Q{
          remote: Not Found
          fatal: repository '#{url}' not found
       })
diff --git a/spec/models/project_label_spec.rb b/spec/models/project_label_spec.rb
index f5596227c81..9cdbfa44e5b 100644
--- a/spec/models/project_label_spec.rb
+++ b/spec/models/project_label_spec.rb
@@ -105,14 +105,14 @@ describe ProjectLabel, models: true do
       context 'using name' do
         it 'returns cross reference with label name' do
           expect(label.to_reference(project, format: :name))
-            .to eq %(#{label.project.path_with_namespace}~"#{label.name}")
+            .to eq %Q(#{label.project.path_with_namespace}~"#{label.name}")
         end
       end
 
       context 'using id' do
         it 'returns cross reference with label id' do
           expect(label.to_reference(project, format: :id))
-            .to eq %(#{label.project.path_with_namespace}~#{label.id})
+            .to eq %Q(#{label.project.path_with_namespace}~#{label.id})
         end
       end
     end
diff --git a/spec/models/project_services/bamboo_service_spec.rb b/spec/models/project_services/bamboo_service_spec.rb
index e30b62ddb61..4014d6129ee 100644
--- a/spec/models/project_services/bamboo_service_spec.rb
+++ b/spec/models/project_services/bamboo_service_spec.rb
@@ -181,7 +181,7 @@ describe BambooService, models: true, caching: true do
       end
 
       it 'sets commit status to "pending" when response has no results' do
-        stub_request(body: %({"results":{"results":{"size":"0"}}}))
+        stub_request(body: %q({"results":{"results":{"size":"0"}}}))
 
         is_expected.to eq('pending')
       end
@@ -223,6 +223,6 @@ describe BambooService, models: true, caching: true do
   end
 
   def bamboo_response(result_key: 42, build_state: 'success', size: 1)
-    %({"results":{"results":{"size":"#{size}","result":{"buildState":"#{build_state}","planResultKey":{"key":"#{result_key}"}}}}})
+    %Q({"results":{"results":{"size":"#{size}","result":{"buildState":"#{build_state}","planResultKey":{"key":"#{result_key}"}}}}})
   end
 end
diff --git a/spec/models/project_services/buildkite_service_spec.rb b/spec/models/project_services/buildkite_service_spec.rb
index 59c04c32cf0..05b602d8106 100644
--- a/spec/models/project_services/buildkite_service_spec.rb
+++ b/spec/models/project_services/buildkite_service_spec.rb
@@ -92,7 +92,7 @@ describe BuildkiteService, models: true, caching: true do
         end
 
         it 'passes through build status untouched when status is 200' do
-          stub_request(body: %({"status":"Great Success"}))
+          stub_request(body: %q({"status":"Great Success"}))
 
           is_expected.to eq('Great Success')
         end
@@ -101,7 +101,7 @@ describe BuildkiteService, models: true, caching: true do
   end
 
   def stub_request(status: 200, body: nil)
-    body ||= %({"status":"success"})
+    body ||= %q({"status":"success"})
     buildkite_full_url = 'https://gitlab.buildkite.com/status/secret-sauce-status-token.json?commit=123'
 
     WebMock.stub_request(:get, buildkite_full_url).to_return(
diff --git a/spec/models/project_services/drone_ci_service_spec.rb b/spec/models/project_services/drone_ci_service_spec.rb
index 82d80206afb..47ca802ebc2 100644
--- a/spec/models/project_services/drone_ci_service_spec.rb
+++ b/spec/models/project_services/drone_ci_service_spec.rb
@@ -50,7 +50,7 @@ describe DroneCiService, models: true, caching: true do
     end
 
     def stub_request(status: 200, body: nil)
-      body ||= %({"status":"success"})
+      body ||= %q({"status":"success"})
 
       WebMock.stub_request(:get, commit_status_path).to_return(
         status: status,
@@ -102,7 +102,7 @@ describe DroneCiService, models: true, caching: true do
         "success" => "success"
       }.each do |drone_status, our_status|
         it "sets commit status to #{our_status.inspect} when returned status is #{drone_status.inspect}" do
-          stub_request(body: %({"status":"#{drone_status}"}))
+          stub_request(body: %Q({"status":"#{drone_status}"}))
 
           is_expected.to eq(our_status)
         end
diff --git a/spec/models/project_services/teamcity_service_spec.rb b/spec/models/project_services/teamcity_service_spec.rb
index 2b76897e4eb..77b18e1c7d0 100644
--- a/spec/models/project_services/teamcity_service_spec.rb
+++ b/spec/models/project_services/teamcity_service_spec.rb
@@ -143,7 +143,7 @@ describe TeamcityService, models: true, caching: true do
       end
 
       it 'returns a build URL when teamcity_url has no trailing slash' do
-        stub_request(body: %({"build":{"id":"666"}}))
+        stub_request(body: %q({"build":{"id":"666"}}))
 
         is_expected.to eq('http://gitlab.com/teamcity/viewLog.html?buildId=666&buildTypeId=foo')
       end
@@ -152,7 +152,7 @@ describe TeamcityService, models: true, caching: true do
         let(:teamcity_url) { 'http://gitlab.com/teamcity/' }
 
         it 'returns a build URL' do
-          stub_request(body: %({"build":{"id":"666"}}))
+          stub_request(body: %q({"build":{"id":"666"}}))
 
           is_expected.to eq('http://gitlab.com/teamcity/viewLog.html?buildId=666&buildTypeId=foo')
         end
@@ -202,7 +202,7 @@ describe TeamcityService, models: true, caching: true do
 
   def stub_request(status: 200, body: nil, build_status: 'success')
     teamcity_full_url = 'http://mic:password@gitlab.com/teamcity/httpAuth/app/rest/builds/branch:unspecified:any,number:123'
-    body ||= %({"build":{"status":"#{build_status}","id":"666"}})
+    body ||= %Q({"build":{"status":"#{build_status}","id":"666"}})
 
     WebMock.stub_request(:get, teamcity_full_url).to_return(
       status: status,
diff --git a/spec/workers/repository_import_worker_spec.rb b/spec/workers/repository_import_worker_spec.rb
index 59cb168f51d..0faf9bff9c3 100644
--- a/spec/workers/repository_import_worker_spec.rb
+++ b/spec/workers/repository_import_worker_spec.rb
@@ -20,7 +20,7 @@ describe RepositoryImportWorker do
 
     context 'when the import has failed' do
       it 'hide the credentials that were used in the import URL' do
-        error = %{remote: Not Found fatal: repository 'https://user:pass@test.com/root/repoC.git/' not found }
+        error = %q{remote: Not Found fatal: repository 'https://user:pass@test.com/root/repoC.git/' not found }
         expect_any_instance_of(Projects::ImportService).to receive(:execute)
           .and_return({ status: :error, message: error })
 
-- 
GitLab