From d0214e4e9d716d060b446ab2d2534959d20848b4 Mon Sep 17 00:00:00 2001 From: pwatt01 Date: Wed, 22 Apr 2020 15:34:01 +0930 Subject: [PATCH 1/7] add _StopIgnore() function --- lib/cmock_generator_plugin_ignore.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/cmock_generator_plugin_ignore.rb b/lib/cmock_generator_plugin_ignore.rb index 04e7701..986e6ce 100644 --- a/lib/cmock_generator_plugin_ignore.rb +++ b/lib/cmock_generator_plugin_ignore.rb @@ -30,6 +30,9 @@ class CMockGeneratorPluginIgnore "#define #{function[:name]}_IgnoreAndReturn(cmock_retval) #{function[:name]}_CMockIgnoreAndReturn(__LINE__, cmock_retval)\n" \ "void #{function[:name]}_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, #{function[:return][:str]});\n" end + #add stop ignore function. it does not matter if there are any args + "#define #{function[:name]}_StopIgnore() #{function[:name]}_CMockStopIgnore()\n" \ + "void #{function[:name]}_CMockStopIgnore(void);\n" end def mock_implementation_precheck(function) @@ -61,6 +64,11 @@ class CMockGeneratorPluginIgnore end lines << " Mock.#{function[:name]}_IgnoreBool = (char)1;\n" lines << "}\n\n" + + #add stop ignore function. it does not matter if there are any args + lines << "void #{function[:name]}_CMockStopIgnore(void)\n{\n" + lines << " Mock.#{function[:name]}_IgnoreBool = (char)0;\n" + lines << "}\n\n" end def mock_ignore(function) From b6a6bd0a11f7eeed3d009a3878eb5d4db23d40fd Mon Sep 17 00:00:00 2001 From: pwatt01 Date: Fri, 24 Apr 2020 09:24:54 +0930 Subject: [PATCH 2/7] Updated documentation --- docs/CMock_Summary.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/CMock_Summary.md b/docs/CMock_Summary.md index 7d2b5e4..f56f43f 100644 --- a/docs/CMock_Summary.md +++ b/docs/CMock_Summary.md @@ -161,6 +161,18 @@ care how many times it was called, right? * `retval func(void)` => `void func_IgnoreAndReturn(retval_to_return)` * `retval func(params)` => `void func_IgnoreAndReturn(retval_to_return)` +StopIgnore: +------- + +Maybe you want to ignore a particular function for part of a test but dont want to +ignore it later on. In that case, you want to use StopIgnore which will cancel the +previously called Ignore or IgnoreAndReturn requireing you to Expect or otherwise +handle the call to a function. + +* `void func(void)` => `void func_StopIgnore(void)` +* `void func(params)` => `void func_StopIgnore(void)` +* `retval func(void)` => `void func_StopIgnore(void)` +* `retval func(params)` => `void func_StopIgnore(void)` Ignore Arg: ------------ From 553dc94b76152045e924303c94b7b3b9689baf7c Mon Sep 17 00:00:00 2001 From: pwatt01 Date: Fri, 24 Apr 2020 12:08:50 +0930 Subject: [PATCH 3/7] Fix typo --- docs/CMock_Summary.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CMock_Summary.md b/docs/CMock_Summary.md index f56f43f..640df1b 100644 --- a/docs/CMock_Summary.md +++ b/docs/CMock_Summary.md @@ -166,7 +166,7 @@ StopIgnore: Maybe you want to ignore a particular function for part of a test but dont want to ignore it later on. In that case, you want to use StopIgnore which will cancel the -previously called Ignore or IgnoreAndReturn requireing you to Expect or otherwise +previously called Ignore or IgnoreAndReturn requiring you to Expect or otherwise handle the call to a function. * `void func(void)` => `void func_StopIgnore(void)` From 1f16f4b5a3234414632b12d68c16aecb4e80ea24 Mon Sep 17 00:00:00 2001 From: pwatt01 Date: Fri, 24 Apr 2020 14:09:02 +0930 Subject: [PATCH 4/7] Fix Ignore declaration missing, fix StopIgnore to handle returns --- lib/cmock_generator_plugin_ignore.rb | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/cmock_generator_plugin_ignore.rb b/lib/cmock_generator_plugin_ignore.rb index 986e6ce..f4e2911 100644 --- a/lib/cmock_generator_plugin_ignore.rb +++ b/lib/cmock_generator_plugin_ignore.rb @@ -24,15 +24,17 @@ class CMockGeneratorPluginIgnore def mock_function_declarations(function) if function[:return][:void?] - "#define #{function[:name]}_Ignore() #{function[:name]}_CMockIgnore()\n" \ + lines = "#define #{function[:name]}_Ignore() #{function[:name]}_CMockIgnore()\n" \ "void #{function[:name]}_CMockIgnore(void);\n" else - "#define #{function[:name]}_IgnoreAndReturn(cmock_retval) #{function[:name]}_CMockIgnoreAndReturn(__LINE__, cmock_retval)\n" \ + lines = "#define #{function[:name]}_IgnoreAndReturn(cmock_retval) #{function[:name]}_CMockIgnoreAndReturn(__LINE__, cmock_retval)\n" \ "void #{function[:name]}_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, #{function[:return][:str]});\n" end + #add stop ignore function. it does not matter if there are any args - "#define #{function[:name]}_StopIgnore() #{function[:name]}_CMockStopIgnore()\n" \ - "void #{function[:name]}_CMockStopIgnore(void);\n" + lines << "#define #{function[:name]}_StopIgnore() #{function[:name]}_CMockStopIgnore()\n" \ + "void #{function[:name]}_CMockStopIgnore(void);\n" + lines end def mock_implementation_precheck(function) @@ -67,7 +69,12 @@ class CMockGeneratorPluginIgnore #add stop ignore function. it does not matter if there are any args lines << "void #{function[:name]}_CMockStopIgnore(void)\n{\n" - lines << " Mock.#{function[:name]}_IgnoreBool = (char)0;\n" + lines << " if(Mock.#{function[:name]}_IgnoreBool) {\n" + lines << " Mock.#{function[:name]}_IgnoreBool = (char)0;\n" + unless function[:return][:void?] + lines << " Mock.#{function[:name]}_CallInstance = CMock_Guts_MemNext(Mock.#{function[:name]}_CallInstance);\n" + end + lines << " }\n" lines << "}\n\n" end From 7bfa02cd239a23ec32abc092353fcabb9467f456 Mon Sep 17 00:00:00 2001 From: pwatt01 Date: Fri, 24 Apr 2020 21:49:16 +0930 Subject: [PATCH 5/7] Fix whitespace errors, minimize unnecessary branching --- lib/cmock_generator_plugin_ignore.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/cmock_generator_plugin_ignore.rb b/lib/cmock_generator_plugin_ignore.rb index f4e2911..74fd413 100644 --- a/lib/cmock_generator_plugin_ignore.rb +++ b/lib/cmock_generator_plugin_ignore.rb @@ -24,10 +24,10 @@ class CMockGeneratorPluginIgnore def mock_function_declarations(function) if function[:return][:void?] - lines = "#define #{function[:name]}_Ignore() #{function[:name]}_CMockIgnore()\n" \ + lines = "#define #{function[:name]}_Ignore() #{function[:name]}_CMockIgnore()\n" \ "void #{function[:name]}_CMockIgnore(void);\n" else - lines = "#define #{function[:name]}_IgnoreAndReturn(cmock_retval) #{function[:name]}_CMockIgnoreAndReturn(__LINE__, cmock_retval)\n" \ + lines = "#define #{function[:name]}_IgnoreAndReturn(cmock_retval) #{function[:name]}_CMockIgnoreAndReturn(__LINE__, cmock_retval)\n" \ "void #{function[:name]}_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, #{function[:return][:str]});\n" end @@ -68,13 +68,12 @@ class CMockGeneratorPluginIgnore lines << "}\n\n" #add stop ignore function. it does not matter if there are any args - lines << "void #{function[:name]}_CMockStopIgnore(void)\n{\n" - lines << " if(Mock.#{function[:name]}_IgnoreBool) {\n" - lines << " Mock.#{function[:name]}_IgnoreBool = (char)0;\n" + lines << "void #{function[:name]}_CMockStopIgnore(void)\n {\n" unless function[:return][:void?] + lines << " if(Mock.#{function[:name]}_IgnoreBool) \n" lines << " Mock.#{function[:name]}_CallInstance = CMock_Guts_MemNext(Mock.#{function[:name]}_CallInstance);\n" end - lines << " }\n" + lines << " Mock.#{function[:name]}_IgnoreBool = (char)0;\n" lines << "}\n\n" end From 3c3dad1eb29f30cd5cd1c2b092d3d7c6d5c3cc19 Mon Sep 17 00:00:00 2001 From: pwatt01 Date: Mon, 27 Apr 2020 12:21:41 +0930 Subject: [PATCH 6/7] Remove trailing whitespace --- lib/cmock_generator_plugin_ignore.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/cmock_generator_plugin_ignore.rb b/lib/cmock_generator_plugin_ignore.rb index 74fd413..aa69104 100644 --- a/lib/cmock_generator_plugin_ignore.rb +++ b/lib/cmock_generator_plugin_ignore.rb @@ -30,10 +30,10 @@ class CMockGeneratorPluginIgnore lines = "#define #{function[:name]}_IgnoreAndReturn(cmock_retval) #{function[:name]}_CMockIgnoreAndReturn(__LINE__, cmock_retval)\n" \ "void #{function[:name]}_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, #{function[:return][:str]});\n" end - + #add stop ignore function. it does not matter if there are any args lines << "#define #{function[:name]}_StopIgnore() #{function[:name]}_CMockStopIgnore()\n" \ - "void #{function[:name]}_CMockStopIgnore(void);\n" + "void #{function[:name]}_CMockStopIgnore(void);\n"void #{function[:name]}_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, #{function[:return][:str]});\n lines end @@ -68,9 +68,9 @@ class CMockGeneratorPluginIgnore lines << "}\n\n" #add stop ignore function. it does not matter if there are any args - lines << "void #{function[:name]}_CMockStopIgnore(void)\n {\n" + lines << "void #{function[:name]}_CMockStopIgnore(void)\n{\n" unless function[:return][:void?] - lines << " if(Mock.#{function[:name]}_IgnoreBool) \n" + lines << " if(Mock.#{function[:name]}_IgnoreBool)\n" lines << " Mock.#{function[:name]}_CallInstance = CMock_Guts_MemNext(Mock.#{function[:name]}_CallInstance);\n" end lines << " Mock.#{function[:name]}_IgnoreBool = (char)0;\n" From 555b608116e178edd692455e865d8f6a5d3b1c3f Mon Sep 17 00:00:00 2001 From: pwatt01 Date: Mon, 27 Apr 2020 12:23:29 +0930 Subject: [PATCH 7/7] Remove Trailing whitespace --- docs/CMock_Summary.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/CMock_Summary.md b/docs/CMock_Summary.md index 640df1b..96e2b46 100644 --- a/docs/CMock_Summary.md +++ b/docs/CMock_Summary.md @@ -164,10 +164,10 @@ care how many times it was called, right? StopIgnore: ------- -Maybe you want to ignore a particular function for part of a test but dont want to -ignore it later on. In that case, you want to use StopIgnore which will cancel the +Maybe you want to ignore a particular function for part of a test but dont want to +ignore it later on. In that case, you want to use StopIgnore which will cancel the previously called Ignore or IgnoreAndReturn requiring you to Expect or otherwise -handle the call to a function. +handle the call to a function. * `void func(void)` => `void func_StopIgnore(void)` * `void func(params)` => `void func_StopIgnore(void)`