Add tests for fileUtils call in system

This commit is contained in:
Gautham Goli 2017-08-14 01:09:06 +05:30
parent a73c29fef2
commit 7dfe09ccae
2 changed files with 29 additions and 7 deletions

View File

@ -263,13 +263,14 @@ module RuboCop
problem "Dir([\"#{string_content(path)}\"]) is unnecessary; just use \"#{match[0]}\""
end
#
# fileUtils_methods= FileUtils.singleton_methods(false).map { |m| Regexp.escape(m) }.join "|"
# find_method_with_args(body_node, :system, /fileUtils_methods/) do |m|
# method = string_content(@offensive_node)
# problem "Use the `#{method}` Ruby method instead of `#{m.source}`"
# end
#
fileUtils_methods= Regexp.new(FileUtils.singleton_methods(false).map { |m| Regexp.escape(m) }.join "|")
find_every_method_call_by_name(body_node, :system).each do |m|
param = parameters(m).first
next unless match = regex_match_group(param, fileUtils_methods)
problem "Use the `#{match}` Ruby method instead of `#{m.source}`"
end
# if find_method_def(@processed_source.ast)
# problem "Define method #{method_name(@offensive_node)} in the class body, not at the top-level"
# end

View File

@ -571,6 +571,27 @@ describe RuboCop::Cop::FormulaAudit::Miscellaneous do
inspect_source(cop, source)
expected_offenses.zip(cop.offenses).each do |expected, actual|
expect_offense(expected, actual)
end
end
it "with system call to fileUtils Method" do
source = <<-EOS.undent
class Foo < Formula
desc "foo"
url 'http://example.com/foo-1.0.tgz'
system "mkdir", "foo"
end
EOS
expected_offenses = [{ message: "Use the `mkdir` Ruby method instead of `system \"mkdir\", \"foo\"`",
severity: :convention,
line: 4,
column: 10,
source: source }]
inspect_source(cop, source)
expected_offenses.zip(cop.offenses).each do |expected, actual|
expect_offense(expected, actual)
end