Skip to content
Snippets Groups Projects
Commit 77468fda authored by Gautham Goli's avatar Gautham Goli
Browse files

add tests for hard coded compilers in system calls

parent af5cd1a1
No related branches found
No related tags found
No related merge requests found
......@@ -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])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment