1
0
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:
Hannes Bachl 2020-09-01 10:17:54 +02:00
parent afa294982e
commit 22a7228bbc
2 changed files with 24 additions and 11 deletions

@ -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"