Support alternative header file extension support (thanks @Tuc-an)

This commit is contained in:
mvandervoord
2020-03-18 15:08:21 -04:00
parent ae677d6481
commit 8885be7e55
5 changed files with 32 additions and 20 deletions
+4 -3
View File
@@ -41,13 +41,14 @@ class CMock
private ###############################
def generate_mock(src)
name = File.basename(src, '.h')
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)))
@cm_generator.create_mock(name, @cm_parser.parse(name, File.read(src)), ext)
end
def generate_skeleton(src)
name = File.basename(src, '.h')
name = File.basename(src, '.*')
puts "Creating skeleton for #{name}..." unless @silent
@cm_generator.create_skeleton(name, @cm_parser.parse(name, File.read(src)))
end
+9 -8
View File
@@ -6,7 +6,7 @@
class CMockGenerator
attr_accessor :config, :file_writer, :module_name, :clean_mock_name, :mock_name, :utils, :plugins, :weak, :ordered
attr_accessor :config, :file_writer, :module_name, :module_ext, :clean_mock_name, :mock_name, :utils, :plugins, :weak, :ordered
def initialize(config, file_writer, utils, plugins)
@file_writer = file_writer
@@ -46,8 +46,9 @@ class CMockGenerator
end
def create_mock(module_name, parsed_stuff)
def create_mock(module_name, parsed_stuff, module_ext = 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)
create_mock_subdir()
@@ -68,12 +69,12 @@ class CMockGenerator
def create_mock_header_file(parsed_stuff)
if @include_inline == :include
@file_writer.create_file(@module_name + ".h", @subdir) do |file, filename|
@file_writer.create_file(@module_name + (@module_ext || '.h'), @subdir) do |file, filename|
file << parsed_stuff[:normalized_source]
end
end
@file_writer.create_file(@mock_name + ".h", @subdir) do |file, filename|
@file_writer.create_file(@mock_name + (@module_ext || '.h'), @subdir) do |file, filename|
create_mock_header_header(file, filename)
create_mock_header_service_call_declarations(file)
create_typedefs(file, parsed_stuff[:typedefs])
@@ -102,8 +103,8 @@ class CMockGenerator
def create_skeleton_source_file(parsed_stuff)
filename = "#{@config.mock_path}/#{@subdir+'/' if @subdir}#{module_name}.c"
existing = File.exists?(filename) ? File.read(filename) : ""
@file_writer.append_file(@module_name + ".c", @subdir) do |file, filename|
create_source_header_section(file, filename, []) if existing.empty?
@file_writer.append_file(@module_name + ".c", @subdir) do |file, fullname|
create_source_header_section(file, fullname, []) if existing.empty?
parsed_stuff[:functions].each do |function|
create_function_skeleton(file, function, existing)
end
@@ -112,7 +113,7 @@ class CMockGenerator
def create_mock_header_header(file, filename)
define_name = @clean_mock_name.upcase
orig_filename = (@subdir ? @subdir + "/" : "") + @module_name + ".h"
orig_filename = (@subdir ? @subdir + "/" : "") + @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"
@@ -161,7 +162,7 @@ class CMockGenerator
end
def create_source_header_section(file, filename, functions)
header_file = (@subdir ? @subdir + '/' : '') + filename.gsub(".c",".h")
header_file = (@subdir ? @subdir + '/' : '') + 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"