From ec02696fa23c440cb1eb4d80c7af33d48fd96b37 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Mon, 27 May 2019 23:38:17 +0200 Subject: [PATCH] DEV: introduces coding style spec (#7615) --- spec/integrity/coding_style_spec.rb | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 spec/integrity/coding_style_spec.rb diff --git a/spec/integrity/coding_style_spec.rb b/spec/integrity/coding_style_spec.rb new file mode 100644 index 00000000000..96c4ff17daf --- /dev/null +++ b/spec/integrity/coding_style_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +def list_files(base_dir, pattern = '*') + Dir[File.join("#{base_dir}", pattern)] +end + +def list_js_files(base_dir) + list_files(base_dir, '**/*.es6') +end + +def grep_files(files, regex) + files.select { |file| grep_file(file, regex) } +end + +def grep_file(file, regex) + lines = File.open(file).grep(regex) + lines.count > 0 ? file : nil +end + +describe 'Coding style' do + describe 'Javascript' do + it 'prevents this.get("foo") pattern' do + js_files = list_js_files('app/assets/javascripts') + offenses = grep_files(js_files, /this\.get\("\w+"\)/) + + expect(offenses).to be_empty, <<~MSG + Do not use this.get("foo") accessor for single property, instead + prefer to use this.foo + + Offenses: + #{offenses.join("\n")} + MSG + end + end +end