summaryrefslogtreecommitdiff
path: root/spec/lib
diff options
context:
space:
mode:
authorLuke Bennett <lbennett@gitlab.com>2019-04-23 20:04:11 +0100
committerLuke Bennett <lbennett@gitlab.com>2019-05-20 20:25:32 +0100
commit95afdfaeeb301699df3bbac0fde9cad0dda4d5f1 (patch)
tree5ffe60d88969bec005c09965faeabadfa440de4d /spec/lib
parent712282cdcc4a97df23829284bfa031613bb05571 (diff)
downloadgitlab-ce-95afdfaeeb301699df3bbac0fde9cad0dda4d5f1.tar.gz
Add HamlLint::Linter::NoPlainNodes linterhaml-lint-no-plain-nodes
Add a simple haml_lint linter to report all plain nodes. "Plain nodes" in HAML are scritpless plaintext leaf nodes. Add haml-lint_todo to onboard new haml linters. Excludes existing NoPlainNodes lints.
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/haml_lint/linter/no_plain_nodes_spec.rb55
1 files changed, 55 insertions, 0 deletions
diff --git a/spec/lib/haml_lint/linter/no_plain_nodes_spec.rb b/spec/lib/haml_lint/linter/no_plain_nodes_spec.rb
new file mode 100644
index 00000000000..99cc9b9bc8d
--- /dev/null
+++ b/spec/lib/haml_lint/linter/no_plain_nodes_spec.rb
@@ -0,0 +1,55 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require 'haml_lint'
+require 'haml_lint/spec'
+
+describe HamlLint::Linter::NoPlainNodes do
+ include_context 'linter'
+
+ context 'reports when a tag has an inline plain node' do
+ let(:haml) { '%tag Hello Tanuki' }
+ let(:message) { "`Hello Tanuki` is a plain node. Please use an i18n method like `= _('Hello Tanuki')`" }
+
+ it { is_expected.to report_lint message: message }
+ end
+
+ context 'reports when a tag has multiline plain nodes' do
+ let(:haml) { <<-HAML }
+ %tag
+ Hello
+ Tanuki
+ HAML
+
+ it { is_expected.to report_lint count: 1 }
+ end
+
+ context 'reports when a tag has an inline plain node with interpolation' do
+ let(:haml) { '%tag Hello #{"Tanuki"}!' } # rubocop:disable Lint/InterpolationCheck
+
+ it { is_expected.to report_lint }
+ end
+
+ context 'does not report when a tag has an inline script' do
+ let(:haml) { '%tag= "Hello Tanuki"' }
+
+ it { is_expected.not_to report_lint }
+ end
+
+ context 'does not report when a tag is empty' do
+ let(:haml) { '%tag' }
+
+ it { is_expected.not_to report_lint }
+ end
+
+ context 'reports multiple when a tag has multiline plain nodes split by non-text nodes' do
+ let(:haml) { <<-HAML }
+ %tag
+ Hello
+ .split-node There
+ Tanuki
+ HAML
+
+ it { is_expected.to report_lint count: 3 }
+ end
+end