mirror of
https://github.com/ThrowTheSwitch/CMock
synced 2025-05-16 01:39:33 -04:00
add optional folder argument to create_mock()
This commit is contained in:
parent
afa294982e
commit
22a7228bbc
@ -25,9 +25,9 @@ class CMock
|
||||
@silent = (cm_config.verbosity < 2)
|
||||
end
|
||||
|
||||
def setup_mocks(files)
|
||||
def setup_mocks(files, folder = nil)
|
||||
[files].flatten.each do |src|
|
||||
generate_mock src
|
||||
generate_mock(src, folder)
|
||||
end
|
||||
end
|
||||
|
||||
@ -39,11 +39,11 @@ class CMock
|
||||
|
||||
private ###############################
|
||||
|
||||
def generate_mock(src)
|
||||
def generate_mock(src, folder)
|
||||
name = File.basename(src, '.*')
|
||||
ext = File.extname(src)
|
||||
puts "Creating mock for #{name}..." unless @silent
|
||||
@cm_generator.create_mock(name, @cm_parser.parse(name, File.read(src)), ext)
|
||||
@cm_generator.create_mock(name, @cm_parser.parse(name, File.read(src)), ext, folder)
|
||||
end
|
||||
|
||||
def generate_skeleton(src)
|
||||
|
@ -21,6 +21,7 @@ class CMockGenerator
|
||||
@fail_on_unexpected_calls = @config.fail_on_unexpected_calls
|
||||
|
||||
@subdir = @config.subdir
|
||||
@folder = nil
|
||||
|
||||
@includes_h_pre_orig_header = (@config.includes || @config.includes_h_pre_orig_header || []).map { |h| h =~ /</ ? h : "\"#{h}\"" }
|
||||
@includes_h_post_orig_header = (@config.includes_h_post_orig_header || []).map { |h| h =~ /</ ? h : "\"#{h}\"" }
|
||||
@ -44,12 +45,24 @@ class CMockGenerator
|
||||
end
|
||||
end
|
||||
|
||||
def create_mock(module_name, parsed_stuff, module_ext = nil)
|
||||
def create_mock(module_name, parsed_stuff, module_ext = nil, folder = nil)
|
||||
@module_name = module_name
|
||||
@module_ext = module_ext || '.h'
|
||||
@mock_name = @prefix + @module_name + @suffix
|
||||
@clean_mock_name = TypeSanitizer.sanitize_c_identifier(@mock_name)
|
||||
|
||||
@folder = if folder && @subdir
|
||||
File.join(@subdir, folder)
|
||||
elsif @subdir
|
||||
@subdir
|
||||
else
|
||||
folder
|
||||
end
|
||||
# adds a trailing slash to the folder output
|
||||
@folder = File.join(@folder, '') if @folder
|
||||
|
||||
create_mock_subdir
|
||||
|
||||
create_mock_header_file(parsed_stuff)
|
||||
create_mock_source_file(parsed_stuff)
|
||||
end
|
||||
@ -62,7 +75,7 @@ class CMockGenerator
|
||||
private if $ThisIsOnlyATest.nil? ##############################
|
||||
|
||||
def create_mock_subdir
|
||||
@file_writer.create_subdir(@subdir)
|
||||
@file_writer.create_subdir(@folder)
|
||||
end
|
||||
|
||||
def create_using_statement(file, function)
|
||||
@ -71,12 +84,12 @@ class CMockGenerator
|
||||
|
||||
def create_mock_header_file(parsed_stuff)
|
||||
if @include_inline == :include
|
||||
@file_writer.create_file(@module_name + (@module_ext || '.h'), @subdir) do |file, _filename|
|
||||
@file_writer.create_file(@module_name + (@module_ext || '.h'), @folder) do |file, _filename|
|
||||
file << parsed_stuff[:normalized_source]
|
||||
end
|
||||
end
|
||||
|
||||
@file_writer.create_file(@mock_name + (@module_ext || '.h'), @subdir) do |file, filename|
|
||||
@file_writer.create_file(@mock_name + (@module_ext || '.h'), @folder) do |file, filename|
|
||||
create_mock_header_header(file, filename)
|
||||
create_mock_header_service_call_declarations(file)
|
||||
create_typedefs(file, parsed_stuff[:typedefs])
|
||||
@ -89,7 +102,7 @@ class CMockGenerator
|
||||
end
|
||||
|
||||
def create_mock_source_file(parsed_stuff)
|
||||
@file_writer.create_file(@mock_name + '.c', @subdir) do |file, filename|
|
||||
@file_writer.create_file(@mock_name + '.c', @folder) do |file, filename|
|
||||
create_source_header_section(file, filename, parsed_stuff[:functions])
|
||||
create_instance_structure(file, parsed_stuff[:functions])
|
||||
create_extern_declarations(file)
|
||||
@ -116,7 +129,7 @@ class CMockGenerator
|
||||
|
||||
def create_mock_header_header(file, _filename)
|
||||
define_name = @clean_mock_name.upcase
|
||||
orig_filename = (@subdir ? @subdir + '/' : '') + @module_name + (@module_ext || '.h')
|
||||
orig_filename = (@folder || '') + @module_name + (@module_ext || '.h')
|
||||
file << "/* AUTOGENERATED FILE. DO NOT EDIT. */\n"
|
||||
file << "#ifndef _#{define_name}_H\n"
|
||||
file << "#define _#{define_name}_H\n\n"
|
||||
@ -165,7 +178,7 @@ class CMockGenerator
|
||||
end
|
||||
|
||||
def create_source_header_section(file, filename, functions)
|
||||
header_file = (@subdir ? @subdir + '/' : '') + filename.gsub('.c', (@module_ext || '.h'))
|
||||
header_file = (@folder || '') + filename.gsub('.c', (@module_ext || '.h'))
|
||||
file << "/* AUTOGENERATED FILE. DO NOT EDIT. */\n" unless functions.empty?
|
||||
file << "#include <string.h>\n"
|
||||
file << "#include <stdlib.h>\n"
|
||||
|
Loading…
x
Reference in New Issue
Block a user