From 552dc183f03f8ca7b691928c5c3740d2f5e48a54 Mon Sep 17 00:00:00 2001 From: Peter Leitzen <pleitzen@gitlab.com> Date: Thu, 1 Feb 2024 17:54:33 +0100 Subject: [PATCH] CI: Check Ruby syntax for rake and rackup files --- .gitlab/ci/rules.gitlab-ci.yml | 2 ++ .../lib/tooling/check_ruby_syntax_spec.rb | 26 +++++++++++++++---- tooling/lib/tooling/check_ruby_syntax.rb | 5 ++-- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 40433995b2581..fd3597f144235 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -333,7 +333,9 @@ - "**/Dangerfile" - "**/Gemfile" - "**/Guardfile" + - "**/*.rake" - "**/*.rb" + - "**/*.ru" # Backend patterns + .ci-patterns .backend-patterns: &backend-patterns diff --git a/spec/tooling/lib/tooling/check_ruby_syntax_spec.rb b/spec/tooling/lib/tooling/check_ruby_syntax_spec.rb index cc1bc8e622302..9f80f5b905b66 100644 --- a/spec/tooling/lib/tooling/check_ruby_syntax_spec.rb +++ b/spec/tooling/lib/tooling/check_ruby_syntax_spec.rb @@ -26,14 +26,30 @@ it { is_expected.to eq([]) } end - context "with files ending with .rb" do + context "with files ending with Ruby extensions" do + let(:ruby_files) do + %w[ + ruby_file.rb + rspec.html.haml_spec.rb + task.rake + config.ru + ] + end + + let(:non_ruby_files) do + %w[ + a.txt + a.erb + ] + end + before do - FileUtils.touch("foo.rb") - FileUtils.touch("bar.rb") - FileUtils.touch("baz.erb") + (ruby_files + non_ruby_files).each do |file| + FileUtils.touch(file) + end end - it { is_expected.to contain_exactly("foo.rb", "bar.rb") } + it { is_expected.to match_array(ruby_files) } end context "with special Ruby files" do diff --git a/tooling/lib/tooling/check_ruby_syntax.rb b/tooling/lib/tooling/check_ruby_syntax.rb index f769ca0199138..6941a10c0163b 100644 --- a/tooling/lib/tooling/check_ruby_syntax.rb +++ b/tooling/lib/tooling/check_ruby_syntax.rb @@ -7,7 +7,8 @@ module Tooling # # It does not check for compile time warnings yet. See https://gitlab.com/-/snippets/1929968 class CheckRubySyntax - VALID_RUBYFILES = %w[Rakefile Dangerfile Gemfile Guardfile].to_set.freeze + VALID_RUBY_FILES = %w[Rakefile Dangerfile Gemfile Guardfile].to_set.freeze + VALID_RUBY_EXTENSIONS = %w[.rb .rake .ru].freeze attr_reader :files @@ -18,7 +19,7 @@ def initialize(files) def ruby_files @ruby_files ||= @files.select do |file| - file.end_with?(".rb") || VALID_RUBYFILES.include?(File.basename(file)) + file.end_with?(*VALID_RUBY_EXTENSIONS) || VALID_RUBY_FILES.include?(File.basename(file)) end end -- GitLab