mirror of
https://github.com/ThrowTheSwitch/CMock.git
synced 2026-06-06 05:25:29 +00:00
Cleaned up constants.
This commit is contained in:
+49
-49
@@ -1,41 +1,41 @@
|
||||
require 'fileutils'
|
||||
abs_root = FileUtils.pwd
|
||||
cmock_dir = File.expand_path(ENV.fetch('CMOCK_DIR', File.join(abs_root, '..', '..')))
|
||||
require "#{cmock_dir}/lib/cmock"
|
||||
unity_dir = File.join(cmock_dir, 'vendor', 'unity')
|
||||
require "#{unity_dir}/auto/generate_test_runner"
|
||||
ABS_ROOT = FileUtils.pwd
|
||||
CMOCK_DIR = File.expand_path(ENV.fetch('CMOCK_DIR', File.join(ABS_ROOT, '..', '..')))
|
||||
require "#{CMOCK_DIR}/lib/cmock"
|
||||
UNITY_DIR = File.join(CMOCK_DIR, 'vendor', 'unity')
|
||||
require "#{UNITY_DIR}/auto/generate_test_runner"
|
||||
|
||||
src_dir = ENV.fetch('SRC_DIR', './src')
|
||||
test_dir = ENV.fetch('TEST_DIR', './test')
|
||||
unity_src = File.join(unity_dir, 'src')
|
||||
cmock_src = File.join(cmock_dir, 'src')
|
||||
build_dir = ENV.fetch('BUILD_DIR', './build')
|
||||
test_build_dir = ENV.fetch('TEST_BUILD_DIR', File.join(build_dir, 'test'))
|
||||
obj_dir = File.join(test_build_dir, 'obj')
|
||||
unity_obj = File.join(obj_dir, 'unity.o')
|
||||
cmock_obj = File.join(obj_dir, 'cmock.o')
|
||||
runners_dir = File.join(test_build_dir, 'runners')
|
||||
mocks_dir = File.join(test_build_dir, 'mocks')
|
||||
test_bin_dir = test_build_dir
|
||||
mock_prefix = ENV.fetch('TEST_MOCK_PREFIX', 'mock_')
|
||||
test_makefile = ENV.fetch('TEST_MAKEFILE', File.join(test_build_dir, 'MakefileTestSupport'))
|
||||
MOCK_MATCHER = /#{mock_prefix}[A-Za-z_][A-Za-z0-9_\-\.]+/
|
||||
SRC_DIR = ENV.fetch('SRC_DIR', './src')
|
||||
TEST_DIR = ENV.fetch('TEST_DIR', './test')
|
||||
UNITY_SRC = File.join(UNITY_DIR, 'src')
|
||||
CMOCK_SRC = File.join(CMOCK_DIR, 'src')
|
||||
BUILD_DIR = ENV.fetch('BUILD_DIR', './build')
|
||||
TEST_BUILD_DIR = ENV.fetch('TEST_BUILD_DIR', File.join(BUILD_DIR, 'test'))
|
||||
OBJ_DIR = File.join(TEST_BUILD_DIR, 'obj')
|
||||
UNITY_OBJ = File.join(OBJ_DIR, 'unity.o')
|
||||
CMOCK_OBJ = File.join(OBJ_DIR, 'cmock.o')
|
||||
RUNNERS_DIR = File.join(TEST_BUILD_DIR, 'runners')
|
||||
MOCKS_DIR = File.join(TEST_BUILD_DIR, 'mocks')
|
||||
TEST_BIN_DIR = TEST_BUILD_DIR
|
||||
MOCK_PREFIX = ENV.fetch('TEST_MOCK_PREFIX', 'mock_')
|
||||
TEST_MAKEFILE = ENV.fetch('TEST_MAKEFILE', File.join(TEST_BUILD_DIR, 'MakefileTestSupport'))
|
||||
MOCK_MATCHER = /#{MOCK_PREFIX}[A-Za-z_][A-Za-z0-9_\-\.]+/
|
||||
|
||||
[test_build_dir, obj_dir, runners_dir, mocks_dir, test_bin_dir].each do |dir|
|
||||
[TEST_BUILD_DIR, OBJ_DIR, RUNNERS_DIR, MOCKS_DIR, TEST_BIN_DIR].each do |dir|
|
||||
FileUtils.mkdir_p dir
|
||||
end
|
||||
|
||||
all_headers_to_mock = []
|
||||
|
||||
File.open(test_makefile, "w") do |mkfile|
|
||||
File.open(TEST_MAKEFILE, "w") do |mkfile|
|
||||
|
||||
# Define make variables
|
||||
mkfile.puts "CC ?= gcc"
|
||||
mkfile.puts "BUILD_DIR ?= ./build"
|
||||
mkfile.puts "SRC_DIR ?= ./src"
|
||||
mkfile.puts "TEST_DIR ?= ./test"
|
||||
mkfile.puts "CMOCK_DIR ?= #{cmock_dir}"
|
||||
mkfile.puts "UNITY_DIR ?= #{unity_dir}"
|
||||
mkfile.puts "CMOCK_DIR ?= #{CMOCK_DIR}"
|
||||
mkfile.puts "UNITY_DIR ?= #{UNITY_DIR}"
|
||||
mkfile.puts "TEST_BUILD_DIR ?= ${BUILD_DIR}/test"
|
||||
mkfile.puts "TEST_MAKEFILE = ${TEST_BUILD_DIR}/MakefileTestSupport"
|
||||
mkfile.puts "OBJ ?= ${BUILD_DIR}/obj"
|
||||
@@ -43,34 +43,34 @@ File.open(test_makefile, "w") do |mkfile|
|
||||
mkfile.puts ""
|
||||
|
||||
# Build Unity
|
||||
mkfile.puts "#{unity_obj}: #{unity_src}/unity.c"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{unity_src}"
|
||||
mkfile.puts "#{UNITY_OBJ}: #{UNITY_SRC}/unity.c"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{UNITY_SRC}"
|
||||
mkfile.puts ""
|
||||
|
||||
# Build CMock
|
||||
mkfile.puts "#{cmock_obj}: #{cmock_src}/cmock.c"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{unity_src} -I #{cmock_src}"
|
||||
mkfile.puts "#{CMOCK_OBJ}: #{CMOCK_SRC}/cmock.c"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{UNITY_SRC} -I #{CMOCK_SRC}"
|
||||
mkfile.puts ""
|
||||
|
||||
test_sources = Dir["#{test_dir}/**/test_*.c"]
|
||||
test_sources = Dir["#{TEST_DIR}/**/test_*.c"]
|
||||
test_targets = []
|
||||
generator = UnityTestRunnerGenerator.new
|
||||
all_headers = Dir["#{src_dir}/**/*.h"]
|
||||
all_headers = Dir["#{SRC_DIR}/**/*.h"]
|
||||
|
||||
test_sources.each do |test|
|
||||
module_name = File.basename(test, '.c')
|
||||
src_module_name = module_name.sub(/^test_/, '')
|
||||
test_obj = File.join(obj_dir, "#{module_name}.o")
|
||||
runner_source = File.join(runners_dir, "runner_#{module_name}.c")
|
||||
runner_obj = File.join(obj_dir, "runner_#{module_name}.o")
|
||||
test_bin = File.join(test_bin_dir, module_name)
|
||||
test_results = File.join(test_bin_dir, module_name + '.result')
|
||||
test_obj = File.join(OBJ_DIR, "#{module_name}.o")
|
||||
runner_source = File.join(RUNNERS_DIR, "runner_#{module_name}.c")
|
||||
runner_obj = File.join(OBJ_DIR, "runner_#{module_name}.o")
|
||||
test_bin = File.join(TEST_BIN_DIR, module_name)
|
||||
test_results = File.join(TEST_BIN_DIR, module_name + '.result')
|
||||
|
||||
# Build main project modules, with TEST defined
|
||||
module_src = File.join(src_dir, "#{src_module_name}.c")
|
||||
module_obj = File.join(obj_dir, "#{src_module_name}.o")
|
||||
module_src = File.join(SRC_DIR, "#{src_module_name}.c")
|
||||
module_obj = File.join(OBJ_DIR, "#{src_module_name}.o")
|
||||
mkfile.puts "#{module_obj}: #{module_src}"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -DTEST -I #{src_dir}"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -DTEST -I #{SRC_DIR}"
|
||||
mkfile.puts ""
|
||||
|
||||
# Create runners
|
||||
@@ -80,7 +80,7 @@ File.open(test_makefile, "w") do |mkfile|
|
||||
|
||||
# Build runner
|
||||
mkfile.puts "#{runner_obj}: #{runner_source}"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{src_dir} -I #{mocks_dir} -I #{unity_src} -I #{cmock_src}"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{SRC_DIR} -I #{MOCKS_DIR} -I #{UNITY_SRC} -I #{CMOCK_SRC}"
|
||||
mkfile.puts ""
|
||||
|
||||
# Collect mocks to generate
|
||||
@@ -91,7 +91,7 @@ File.open(test_makefile, "w") do |mkfile|
|
||||
system_mocks = cfg[:includes][:system].select{|name| name =~ MOCK_MATCHER}
|
||||
raise "Mocking of system headers is not yet supported!" if !system_mocks.empty?
|
||||
local_mocks = cfg[:includes][:local].select{|name| name =~ MOCK_MATCHER}
|
||||
module_names_to_mock = local_mocks.map{|name| "#{name.sub(/#{mock_prefix}/,'')}.h"}
|
||||
module_names_to_mock = local_mocks.map{|name| "#{name.sub(/#{MOCK_PREFIX}/,'')}.h"}
|
||||
headers_to_mock = []
|
||||
module_names_to_mock.each do |name|
|
||||
header_to_mock = nil
|
||||
@@ -106,18 +106,18 @@ File.open(test_makefile, "w") do |mkfile|
|
||||
end
|
||||
all_headers_to_mock += headers_to_mock
|
||||
mock_objs = headers_to_mock.map do |hdr|
|
||||
mock_name = mock_prefix + File.basename(hdr, '.h')
|
||||
File.join(mocks_dir, mock_name + '.o')
|
||||
mock_name = MOCK_PREFIX + File.basename(hdr, '.h')
|
||||
File.join(MOCKS_DIR, mock_name + '.o')
|
||||
end
|
||||
all_headers_to_mock.uniq!
|
||||
|
||||
# Build test suite
|
||||
mkfile.puts "#{test_obj}: #{test} #{module_obj} #{mock_objs.join(' ')}"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{src_dir} -I #{unity_src} -I #{cmock_src} -I #{mocks_dir}"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{SRC_DIR} -I #{UNITY_SRC} -I #{CMOCK_SRC} -I #{MOCKS_DIR}"
|
||||
mkfile.puts ""
|
||||
|
||||
# Build test suite executable
|
||||
test_objs = "#{test_obj} #{runner_obj} #{module_obj} #{mock_objs.join(' ')} #{unity_obj} #{cmock_obj}"
|
||||
test_objs = "#{test_obj} #{runner_obj} #{module_obj} #{mock_objs.join(' ')} #{UNITY_OBJ} #{CMOCK_OBJ}"
|
||||
mkfile.puts "#{test_bin}: #{test_objs}"
|
||||
mkfile.puts "\t${CC} -o $@ #{test_objs}"
|
||||
mkfile.puts ""
|
||||
@@ -132,17 +132,17 @@ File.open(test_makefile, "w") do |mkfile|
|
||||
|
||||
# Generate and build mocks
|
||||
all_headers_to_mock.each do |hdr|
|
||||
mock_name = mock_prefix + File.basename(hdr, '.h')
|
||||
mock_header = File.join(mocks_dir, mock_name + '.h')
|
||||
mock_src = File.join(mocks_dir, mock_name + '.c')
|
||||
mock_obj = File.join(mocks_dir, mock_name + '.o')
|
||||
mock_name = MOCK_PREFIX + File.basename(hdr, '.h')
|
||||
mock_header = File.join(MOCKS_DIR, mock_name + '.h')
|
||||
mock_src = File.join(MOCKS_DIR, mock_name + '.c')
|
||||
mock_obj = File.join(MOCKS_DIR, mock_name + '.o')
|
||||
|
||||
mkfile.puts "#{mock_src}: #{hdr}"
|
||||
mkfile.puts "\t@CMOCK_DIR=${CMOCK_DIR} ruby ${CMOCK_DIR}/scripts/create_mock.rb #{hdr}"
|
||||
mkfile.puts ""
|
||||
|
||||
mkfile.puts "#{mock_obj}: #{mock_src} #{mock_header}"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{mocks_dir} -I #{src_dir} -I #{unity_src} -I #{cmock_src}"
|
||||
mkfile.puts "\t${CC} -o $@ -c $< -I #{MOCKS_DIR} -I #{SRC_DIR} -I #{UNITY_SRC} -I #{CMOCK_SRC}"
|
||||
mkfile.puts ""
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user