mirror of
https://github.com/ThrowTheSwitch/CMock.git
synced 2026-09-14 14:19:58 +00:00
Support alternative header file extension support (thanks @Tuc-an)
This commit is contained in:
+4
-3
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user