diff --git a/lib/cmock_generator.rb b/lib/cmock_generator.rb index b47fdc9..bfb9127 100644 --- a/lib/cmock_generator.rb +++ b/lib/cmock_generator.rb @@ -62,7 +62,12 @@ class CMockGenerator file << "/* AUTOGENERATED FILE. DO NOT EDIT. */\n" file << "#ifndef _#{define_name}\n" file << "#define _#{define_name}\n\n" - file << "#include \"#{orig_filename}\"\n\n" + config_includes = @config.includes + config_includes.each {|inc| file << "#include \"#{inc}\"\n"} if (!config_includes.nil?) + file << "#include \"#{orig_filename}\"\n" + plugin_includes = @plugins.run(:include_files) + file << plugin_includes if (!plugin_includes.empty?) + file << "\n" end def create_typedefs(file, typedefs) @@ -89,9 +94,6 @@ class CMockGenerator file << "#include \n" file << "#include \"#{@framework}.h\"\n" file << "#include \"cmock.h\"\n" - file << @plugins.run(:include_files) - includes = @config.includes - includes.each {|inc| file << "#include \"#{inc}\"\n"} if (!includes.nil?) file << "#include \"#{header_file}\"\n\n" end diff --git a/lib/cmock_plugin_manager.rb b/lib/cmock_plugin_manager.rb index 3b37ac5..3a3d2c2 100644 --- a/lib/cmock_plugin_manager.rb +++ b/lib/cmock_plugin_manager.rb @@ -20,7 +20,7 @@ class CMockPluginManager end @plugins << eval("#{object_name}.new(config, utils)") rescue - raise "Unable to load plugin '#{plugin_name}'" + raise "ERROR: CMock unable to load plugin '#{plugin_name}'" end end @plugins.sort! {|a,b| a.priority <=> b.priority } diff --git a/test/unit/cmock_generator_main_test.rb b/test/unit/cmock_generator_main_test.rb index 8d8150d..1c50fb1 100644 --- a/test/unit/cmock_generator_main_test.rb +++ b/test/unit/cmock_generator_main_test.rb @@ -67,7 +67,7 @@ class CMockGeneratorTest < Test::Unit::TestCase assert_equal(@plugins, @cmock_generator.plugins) end - should "create the top of a header file" do + should "create the top of a header file with optional include files from config and include file from plugin" do @config.expect.mock_prefix.returns("Mock") orig_filename = "PoutPoutFish.h" define_name = "MOCKPOUTPOUTFISH_H" @@ -76,8 +76,60 @@ class CMockGeneratorTest < Test::Unit::TestCase expected = [ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n", "#ifndef _#{define_name}\n", "#define _#{define_name}\n\n", - "#include \"#{orig_filename}\"\n\n", + "#include \"ConfigRequiredHeader1.h\"\n", + "#include \"ConfigRequiredHeader2.h\"\n", + "#include \"#{orig_filename}\"\n", + "#include \"PluginRequiredHeader.h\"\n", + "\n" ] + + @config.expect.includes.returns(["ConfigRequiredHeader1.h","ConfigRequiredHeader2.h"]) + @plugins.expect.run(:include_files).returns("#include \"PluginRequiredHeader.h\"\n") + + @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h") + + assert_equal(expected, output) + end + + should "create the top of a header file with optional include files from config" do + @config.expect.mock_prefix.returns("Mock") + orig_filename = "PoutPoutFish.h" + define_name = "MOCKPOUTPOUTFISH_H" + mock_name = "MockPoutPoutFish" + output = [] + expected = [ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n", + "#ifndef _#{define_name}\n", + "#define _#{define_name}\n\n", + "#include \"ConfigRequiredHeader1.h\"\n", + "#include \"ConfigRequiredHeader2.h\"\n", + "#include \"#{orig_filename}\"\n", + "\n" + ] + + @config.expect.includes.returns(["ConfigRequiredHeader1.h","ConfigRequiredHeader2.h"]) + @plugins.expect.run(:include_files).returns('') + + @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h") + + assert_equal(expected, output) + end + + should "create the top of a header file with include file from plugin" do + @config.expect.mock_prefix.returns("Mock") + orig_filename = "PoutPoutFish.h" + define_name = "MOCKPOUTPOUTFISH_H" + mock_name = "MockPoutPoutFish" + output = [] + expected = [ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n", + "#ifndef _#{define_name}\n", + "#define _#{define_name}\n\n", + "#include \"#{orig_filename}\"\n", + "#include \"PluginRequiredHeader.h\"\n", + "\n" + ] + + @config.expect.includes.returns(nil) + @plugins.expect.run(:include_files).returns("#include \"PluginRequiredHeader.h\"\n") @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h") @@ -133,13 +185,8 @@ class CMockGeneratorTest < Test::Unit::TestCase "#include \n", "#include \"unity.h\"\n", "#include \"cmock.h\"\n", - "#include \"PluginRequiredHeader.h\"\n", - "#include \"ConfigRequiredHeader1.h\"\n", - "#include \"ConfigRequiredHeader2.h\"\n", "#include \"MockPoutPoutFish.h\"\n\n" ] - @plugins.expect.run(:include_files).returns("#include \"PluginRequiredHeader.h\"\n") - @config.expect.includes.returns(["ConfigRequiredHeader1.h","ConfigRequiredHeader2.h"]) @cmock_generator.create_source_header_section(output, "MockPoutPoutFish.c")