add tests for hard coded compilers in system calls
This commit is contained in:
parent
af5cd1a1da
commit
77468fdae3
@ -99,15 +99,15 @@ module RuboCop
|
||||
problem "\"#{m.source}\" should be \"#{match[0]}\""
|
||||
end
|
||||
|
||||
# # Avoid hard-coding compilers
|
||||
# find_every_method_call_by_name(body_node, :system).each do |m|
|
||||
# param = parameters(m).first
|
||||
# if match = regex_match_group(param, %r{(/usr/bin/)?(gcc|llvm-gcc|clang)\s?})
|
||||
# problem "Use \"\#{ENV.cc}\" instead of hard-coding \"#{match[3]}\""
|
||||
# elsif match = regex_match_group(param, %r{(/usr/bin/)?((g|llvm-g|clang)\+\+)\s?})
|
||||
# problem "Use \"\#{ENV.cxx}\" instead of hard-coding \"#{match[3]}\""
|
||||
# end
|
||||
# end
|
||||
# Avoid hard-coding compilers
|
||||
find_every_method_call_by_name(body_node, :system).each do |m|
|
||||
param = parameters(m).first
|
||||
if match = regex_match_group(param, %r{(/usr/bin/)?(gcc|llvm-gcc|clang)\s?})
|
||||
problem "Use \"\#{ENV.cc}\" instead of hard-coding \"#{match[2]}\""
|
||||
elsif match = regex_match_group(param, %r{(/usr/bin/)?((g|llvm-g|clang)\+\+)\s?})
|
||||
problem "Use \"\#{ENV.cxx}\" instead of hard-coding \"#{match[2]}\""
|
||||
end
|
||||
end
|
||||
#
|
||||
# find_instance_method_call(body_node, :ENV, :[]=) do |m|
|
||||
# param = parameters(m)[1]
|
||||
|
||||
@ -859,6 +859,54 @@ describe RuboCop::Cop::FormulaAudit::Miscellaneous do
|
||||
expect_offense(expected, actual)
|
||||
end
|
||||
end
|
||||
|
||||
it "with hardcoded compiler 1 " do
|
||||
source = <<-EOS.undent
|
||||
class Foo < Formula
|
||||
desc "foo"
|
||||
url 'http://example.com/foo-1.0.tgz'
|
||||
def test
|
||||
system "/usr/bin/gcc", "foo"
|
||||
end
|
||||
end
|
||||
EOS
|
||||
|
||||
expected_offenses = [{ message: "Use \"\#{ENV.cc}\" instead of hard-coding \"gcc\"",
|
||||
severity: :convention,
|
||||
line: 5,
|
||||
column: 12,
|
||||
source: source }]
|
||||
|
||||
inspect_source(cop, source)
|
||||
|
||||
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||
expect_offense(expected, actual)
|
||||
end
|
||||
end
|
||||
|
||||
it "with hardcoded compiler 2 " do
|
||||
source = <<-EOS.undent
|
||||
class Foo < Formula
|
||||
desc "foo"
|
||||
url 'http://example.com/foo-1.0.tgz'
|
||||
def test
|
||||
system "/usr/bin/g++", "-o", "foo", "foo.cc"
|
||||
end
|
||||
end
|
||||
EOS
|
||||
|
||||
expected_offenses = [{ message: "Use \"\#{ENV.cxx}\" instead of hard-coding \"g++\"",
|
||||
severity: :convention,
|
||||
line: 5,
|
||||
column: 12,
|
||||
source: source }]
|
||||
|
||||
inspect_source(cop, source)
|
||||
|
||||
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||
expect_offense(expected, actual)
|
||||
end
|
||||
end
|
||||
end
|
||||
def expect_offense(expected, actual)
|
||||
expect(actual.message).to eq(expected[:message])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user