Commit bbb7fbcd authored by Douwe Maan's avatar Douwe Maan

Merge branch 'jej-lint-scripts-and-config' into 'master'

Syntax linting for init scripts

Closes #27787

See merge request !9054
parents 980ffa20 62ae61ed
......@@ -243,6 +243,7 @@ rubocop:
rake haml_lint: *exec
rake scss_lint: *exec
rake config_lint: *exec
rake brakeman: *exec
rake flay: *exec
license_finder: *exec
......
module ConfigLint
def self.run(files)
failures = files.reject do |file|
yield(file)
end
if failures.present?
puts failures
exit failures.count
end
end
end
desc "Checks syntax for shell scripts and nginx config files in 'lib/support/'"
task :config_lint do
shell_scripts = [
'lib/support/init.d/gitlab',
'lib/support/init.d/gitlab.default.example',
'lib/support/deploy/deploy.sh'
]
ConfigLint.run(shell_scripts) do |file|
Kernel.system('bash', '-n', file)
end
end
require 'rake_helper'
Rake.application.rake_require 'tasks/config_lint'
describe ConfigLint do
let(:files){ ['lib/support/fake.sh'] }
it 'errors out if any bash scripts have errors' do
expect { ConfigLint.run(files){ system('exit 1') } }.to raise_error(SystemExit)
end
it 'passes if all scripts are fine' do
expect { ConfigLint.run(files){ system('exit 0') } }.not_to raise_error
end
end
describe 'config_lint rake task' do
before(:each) do
# Prevent `system` from actually being called
allow(Kernel).to receive(:system).and_return(true)
end
it 'runs lint on shell scripts' do
expect(Kernel).to receive(:system).with('bash', '-n', 'lib/support/init.d/gitlab')
run_rake_task('config_lint')
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment