Lines Matching refs:output
74 File.open(output_file, 'w') do |output|
75 create_header(output, used_mocks, testfile_includes)
76 create_externs(output, tests, used_mocks)
77 create_mock_management(output, used_mocks)
78 create_suite_setup(output)
79 create_suite_teardown(output)
80 create_reset(output, used_mocks)
81 create_main(output, input_file, tests, used_mocks)
86 File.open(@options[:header_file], 'w') do |output|
87 create_h_file(output, @options[:header_file], tests, testfile_includes, used_mocks)
156 def create_header(output, mocks, testfile_includes = [])
157 output.puts('/* AUTOGENERATED FILE. DO NOT EDIT. */')
158 create_runtest(output, mocks)
159 output.puts("\n/*=======Automagically Detected Files To Include=====*/")
160 output.puts('#ifdef __WIN32__')
161 output.puts('#define UNITY_INCLUDE_SETUP_STUBS')
162 output.puts('#endif')
163 output.puts("#include \"#{@options[:framework]}.h\"")
164 output.puts('#include "cmock.h"') unless mocks.empty?
165 output.puts('#include <setjmp.h>')
166 output.puts('#include <stdio.h>')
168 @options[:defines].each { |d| output.puts("#define #{d}") }
171 output.puts("#include \"#{File.basename(@options[:header_file])}\"")
174 output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
177 output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
181 output.puts("#include \"#{mock.gsub('.h', '')}.h\"")
183 output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
187 output.puts('')
188 output.puts('int GlobalExpectCount;')
189 output.puts('int GlobalVerifyOrder;')
190 output.puts('char* GlobalOrderError;')
193 def create_externs(output, tests, _mocks)
194 output.puts("\n/*=======External Functions This Runner Calls=====*/")
195 output.puts("extern void #{@options[:setup_name]}(void);")
196 output.puts("extern void #{@options[:teardown_name]}(void);")
198 output.puts("extern void #{test[:test]}(#{test[:call] || 'void'});")
200 output.puts('')
203 def create_mock_management(output, mock_headers)
206 output.puts("\n/*=======Mock Management=====*/")
207 output.puts('static void CMock_Init(void)')
208 output.puts('{')
211 output.puts(' GlobalExpectCount = 0;')
212 output.puts(' GlobalVerifyOrder = 0;')
213 output.puts(' GlobalOrderError = NULL;')
219 output.puts(" #{mock_clean}_Init();")
221 output.puts("}\n")
223 output.puts('static void CMock_Verify(void)')
224 output.puts('{')
227 output.puts(" #{mock_clean}_Verify();")
229 output.puts("}\n")
231 output.puts('static void CMock_Destroy(void)')
232 output.puts('{')
235 output.puts(" #{mock_clean}_Destroy();")
237 output.puts("}\n")
240 def create_suite_setup(output)
241 output.puts("\n/*=======Suite Setup=====*/")
242 output.puts('static void suite_setup(void)')
243 output.puts('{')
246 output.puts('#if defined(UNITY_WEAK_ATTRIBUTE) || defined(UNITY_WEAK_PRAGMA)')
247 output.puts(' suiteSetUp();')
248 output.puts('#endif')
251 output.puts(@options[:suite_setup])
253 output.puts('}')
256 def create_suite_teardown(output)
257 output.puts("\n/*=======Suite Teardown=====*/")
258 output.puts('static int suite_teardown(int num_failures)')
259 output.puts('{')
262 output.puts('#if defined(UNITY_WEAK_ATTRIBUTE) || defined(UNITY_WEAK_PRAGMA)')
263 output.puts(' return suiteTearDown(num_failures);')
264 output.puts('#else')
265 output.puts(' return num_failures;')
266 output.puts('#endif')
269 output.puts(@options[:suite_teardown])
271 output.puts('}')
274 def create_runtest(output, used_mocks)
278 output.puts("\n/*=======Test Runner Used To Run Each Test Below=====*/")
279 output.puts('#define RUN_TEST_NO_ARGS') if @options[:use_param_tests]
280 output.puts("#define RUN_TEST(TestFunc, TestLineNum#{va_args1}) \\")
281 output.puts('{ \\')
282 output.puts(" Unity.CurrentTestName = #TestFunc#{va_args2.empty? ? '' : " \"(\" ##{va_args2} \")\""}; \\")
283 output.puts(' Unity.CurrentTestLineNumber = TestLineNum; \\')
284 output.puts(' if (UnityTestMatches()) { \\') if @options[:cmdline_args]
285 output.puts(' Unity.NumberOfTests++; \\')
286 output.puts(' CMock_Init(); \\') unless used_mocks.empty?
287 output.puts(' UNITY_CLR_DETAILS(); \\') unless used_mocks.empty?
288 output.puts(' if (TEST_PROTECT()) \\')
289 output.puts(' { \\')
290 output.puts(' CEXCEPTION_T e; \\') if cexception
291 output.puts(' Try { \\') if cexception
292 output.puts(" #{@options[:setup_name]}(); \\")
293 output.puts(" TestFunc(#{va_args2}); \\")
294 output.puts(' } Catch(e) { TEST_ASSERT_EQUAL_HEX32_MESSAGE(CEXCEPTION_NONE, e, "Unhandled Exception!"); } \\') if cexception
295 output.puts(' } \\')
296 output.puts(' if (TEST_PROTECT()) \\')
297 output.puts(' { \\')
298 output.puts(" #{@options[:teardown_name]}(); \\")
299 output.puts(' CMock_Verify(); \\') unless used_mocks.empty?
300 output.puts(' } \\')
301 output.puts(' CMock_Destroy(); \\') unless used_mocks.empty?
302 output.puts(' UnityConcludeTest(); \\')
303 output.puts(' } \\') if @options[:cmdline_args]
304 output.puts("}\n")
307 def create_reset(output, used_mocks)
308 output.puts("\n/*=======Test Reset Option=====*/")
309 output.puts('void resetTest(void);')
310 output.puts('void resetTest(void)')
311 output.puts('{')
312 output.puts(' CMock_Verify();') unless used_mocks.empty?
313 output.puts(' CMock_Destroy();') unless used_mocks.empty?
314 output.puts(" #{@options[:teardown_name]}();")
315 output.puts(' CMock_Init();') unless used_mocks.empty?
316 output.puts(" #{@options[:setup_name]}();")
317 output.puts('}')
320 def create_main(output, filename, tests, used_mocks)
321 output.puts("\n\n/*=======MAIN=====*/")
325 output.puts("#{@options[:main_export_decl]} int #{main_name}(int argc, char** argv);")
327 output.puts("#{@options[:main_export_decl]} int #{main_name}(int argc, char** argv)")
328 output.puts('{')
329 output.puts(' int parse_status = UnityParseOptions(argc, argv);')
330 output.puts(' if (parse_status != 0)')
331 output.puts(' {')
332 output.puts(' if (parse_status < 0)')
333 output.puts(' {')
334 output.puts(" UnityPrint(\"#{filename.gsub('.c', '')}.\");")
335 output.puts(' UNITY_PRINT_EOL();')
339 output.puts(" UnityPrint(\" #{test[:test]}(RUN_TEST_NO_ARGS)\");")
340 output.puts(' UNITY_PRINT_EOL();')
343 output.puts(" UnityPrint(\" #{test[:test]}(#{args})\");")
344 output.puts(' UNITY_PRINT_EOL();')
349 tests.each { |test| output.puts(" UnityPrint(\" #{test[:test]}\");\n UNITY_PRINT_EOL();") }
351 output.puts(' return 0;')
352 output.puts(' }')
353 output.puts(' return parse_status;')
354 output.puts(' }')
357 output.puts("#{@options[:main_export_decl]} int #{main_name}(void);")
359 output.puts("int #{main_name}(void)")
360 output.puts('{')
362 output.puts(' suite_setup();')
363 output.puts(" UnityBegin(\"#{filename.gsub(/\\/, '\\\\\\')}\");")
367 output.puts(" RUN_TEST(#{test[:test]}, #{test[:line_number]}, RUN_TEST_NO_ARGS);")
369 test[:args].each { |args| output.puts(" RUN_TEST(#{test[:test]}, #{test[:line_number]}, #{args});") }
373 tests.each { |test| output.puts(" RUN_TEST(#{test[:test]}, #{test[:line_number]});") }
375 output.puts
376 output.puts(' CMock_Guts_MemFreeFinal();') unless used_mocks.empty?
377 output.puts(" return suite_teardown(UnityEnd());")
378 output.puts('}')
381 def create_h_file(output, filename, tests, testfile_includes, used_mocks)
383 output.puts('/* AUTOGENERATED FILE. DO NOT EDIT. */')
384 output.puts("#ifndef _#{filename}")
385 output.puts("#define _#{filename}\n\n")
386 output.puts("#include \"#{@options[:framework]}.h\"")
387 output.puts('#include "cmock.h"') unless used_mocks.empty?
389 output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
392 output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
394 output.puts "\n"
397 output.puts("void #{test[:test]}(void);")
399 output.puts("void #{test[:test]}(#{test[:params]});")
402 output.puts("#endif\n\n")
430 puts ["\nusage: ruby #{__FILE__} (files) (options) input_test_file (output)",
432 ' output - this is the name of the runner file to generate',