test_generate_test_runner.rb 4.0 KB
Newer Older
1 2 3 4
# ==========================================
#   CMock Project - Automatic Mock Generation for C
#   Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
#   [Released under MIT License. Please refer to license.txt for details]
5
# ==========================================
6

7
require '../auto/generate_test_runner.rb'
8

9 10
TEST_FILE = 'testdata/testsample.c'
TEST_MOCK = 'testdata/mocksample.c'
11
OUT_FILE  = 'build/testsample_'
12
EXP_FILE  = 'expectdata/testsample_'
13

14
$generate_test_runner_failures = 0
15

16 17 18 19 20 21 22 23
def verify_output_equal(subtest)
  expected = File.read(EXP_FILE + subtest + '.c').gsub(/\r\n/,"\n")
  actual   = File.read(OUT_FILE + subtest + '.c').gsub(/\r\n/,"\n")
  if (expected != actual)
    report("    #{subtest}:FAIL")
    $generate_test_runner_failures += 1
  else
    report("    #{subtest}:PASS")
24
  end
25 26 27 28 29 30 31 32 33 34
end

should "GenerateARunnerByCreatingRunnerWithOptions" do
  sets = { 'def'  => nil,
           'new1' => { :plugins => [:cexception], :includes => ['one.h', 'two.h'], :enforce_strict_ordering => true },
           'new2' => { :plugins => [:ignore], :suite_setup => "a_custom_setup();", :suite_teardown => "a_custom_teardown();" }
  }

  sets.each_pair do |subtest, options|
    UnityTestRunnerGenerator.new(options).run(TEST_FILE, OUT_FILE + subtest + '.c')
35
    verify_output_equal(subtest)
36
    UnityTestRunnerGenerator.new(options).run(TEST_MOCK, OUT_FILE + 'mock_' + subtest + '.c')
37 38
    verify_output_equal('mock_' + subtest)
  end
39 40
end

41 42 43 44 45 46 47 48 49 50 51 52 53 54
should "GenerateARunnerAlongWithAHeaderIfSpecified" do
  sets = { 'head1' => { :header_file => "#{OUT_FILE}head1.h" } }
  sets.each_pair do |subtest, options|
    UnityTestRunnerGenerator.new(options).run(TEST_FILE, OUT_FILE + subtest + '.c')
    verify_output_equal(subtest)
  end

  sets = { 'head1' => { :header_file => "#{OUT_FILE}mock_head1.h" } }
  sets.each_pair do |subtest, options|
    UnityTestRunnerGenerator.new(options).run(TEST_MOCK, OUT_FILE + 'mock_' + subtest + '.c')
    verify_output_equal('mock_' + subtest)
  end
end

55 56 57 58 59 60 61
should "GenerateARunnerByRunningRunnerWithOptions" do
  sets = { 'run1' => { :plugins => [:cexception], :includes => ['one.h', 'two.h'], :enforce_strict_ordering => true },
           'run2' => { :plugins => [:ignore], :suite_setup => "a_custom_setup();", :suite_teardown => "a_custom_teardown();" }
  }

  sets.each_pair do |subtest, options|
    UnityTestRunnerGenerator.new.run(TEST_FILE, OUT_FILE + subtest + '.c', options)
62
    verify_output_equal(subtest)
63
    UnityTestRunnerGenerator.new.run(TEST_MOCK, OUT_FILE + 'mock_' + subtest + '.c', options)
64 65
    verify_output_equal('mock_' + subtest)
  end
66 67 68 69
end

should "GenerateARunnerByPullingYamlOptions" do
  subtest = 'yaml'
70
  cmdstr = "ruby ../auto/generate_test_runner.rb testdata/sample.yml \"#{TEST_FILE}\" \"#{OUT_FILE + subtest + '.c'}\""
71 72 73
  `#{cmdstr}`
  verify_output_equal(subtest)

74
  cmdstr = "ruby ../auto/generate_test_runner.rb testdata/sample.yml \"#{TEST_MOCK}\" \"#{OUT_FILE + 'mock_' + subtest + '.c'}\""
75 76 77 78 79 80
  `#{cmdstr}`
  verify_output_equal('mock_' + subtest)
end

should "GenerateARunnerByPullingCommandlineOptions" do
  subtest = 'cmd'
81
  cmdstr = "ruby ../auto/generate_test_runner.rb -cexception \"#{TEST_FILE}\" \"#{OUT_FILE + subtest + '.c'}\""
82 83 84
  `#{cmdstr}`
  verify_output_equal(subtest)

85
  cmdstr = "ruby ../auto/generate_test_runner.rb -cexception \"#{TEST_MOCK}\" \"#{OUT_FILE + 'mock_' + subtest + '.c'}\""
86 87 88 89 90 91 92 93 94 95 96 97 98
  `#{cmdstr}`
  verify_output_equal('mock_' + subtest)
end

should "GenerateARunnerThatUsesParameterizedTests" do
  sets = { 'param'  => { :plugins => [:ignore], :use_param_tests => true }
  }

  sets.each_pair do |subtest, options|
    UnityTestRunnerGenerator.new(options).run(TEST_FILE, OUT_FILE + subtest + '.c')
    verify_output_equal(subtest)
    UnityTestRunnerGenerator.new(options).run(TEST_MOCK, OUT_FILE + 'mock_' + subtest + '.c')
    verify_output_equal('mock_' + subtest)
99
  end
100
end
101 102

raise "There were #{$generate_test_runner_failures.to_s} failures while testing generate_test_runner.rb" if ($generate_test_runner_failures > 0)