mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
bc735bbe22
- unified makefile project for the whole repos - new separate project for tests
133 lines
4.3 KiB
Ruby
133 lines
4.3 KiB
Ruby
require 'rubygems'
|
|
require 'rake' # for adding ext() method to string
|
|
|
|
class FileFinder
|
|
|
|
constructor :configurator, :file_finder_helper, :cacheinator, :file_path_utils, :file_wrapper, :yaml_wrapper
|
|
|
|
def prepare_search_sources
|
|
@all_test_source_and_header_file_collection =
|
|
@configurator.collection_all_tests +
|
|
@configurator.collection_all_source +
|
|
@configurator.collection_all_headers
|
|
end
|
|
|
|
|
|
def find_header_file(mock_file)
|
|
header = File.basename(mock_file).sub(/#{@configurator.cmock_mock_prefix}/, '').ext(@configurator.extension_header)
|
|
|
|
found_path = @file_finder_helper.find_file_in_collection(header, @configurator.collection_all_headers, :error)
|
|
|
|
return found_path
|
|
end
|
|
|
|
|
|
def find_header_input_for_mock_file(mock_file)
|
|
found_path = find_header_file(mock_file)
|
|
mock_input = found_path
|
|
|
|
if (@configurator.project_use_test_preprocessor)
|
|
mock_input = @cacheinator.diff_cached_test_file( @file_path_utils.form_preprocessed_file_filepath( found_path ) )
|
|
end
|
|
|
|
return mock_input
|
|
end
|
|
|
|
|
|
def find_source_from_test(test, complain)
|
|
test_prefix = @configurator.project_test_file_prefix
|
|
source_paths = @configurator.collection_all_source
|
|
|
|
source = File.basename(test).sub(/#{test_prefix}/, '')
|
|
|
|
# we don't blow up if a test file has no corresponding source file
|
|
return @file_finder_helper.find_file_in_collection(source, source_paths, complain)
|
|
end
|
|
|
|
|
|
def find_test_from_runner_path(runner_path)
|
|
extension_source = @configurator.extension_source
|
|
|
|
test_file = File.basename(runner_path).sub(/#{@configurator.test_runner_file_suffix}#{'\\'+extension_source}/, extension_source)
|
|
|
|
found_path = @file_finder_helper.find_file_in_collection(test_file, @configurator.collection_all_tests, :error)
|
|
|
|
return found_path
|
|
end
|
|
|
|
|
|
def find_test_input_for_runner_file(runner_path)
|
|
found_path = find_test_from_runner_path(runner_path)
|
|
runner_input = found_path
|
|
|
|
if (@configurator.project_use_test_preprocessor)
|
|
runner_input = @cacheinator.diff_cached_test_file( @file_path_utils.form_preprocessed_file_filepath( found_path ) )
|
|
end
|
|
|
|
return runner_input
|
|
end
|
|
|
|
|
|
def find_test_from_file_path(file_path)
|
|
test_file = File.basename(file_path).ext(@configurator.extension_source)
|
|
|
|
found_path = @file_finder_helper.find_file_in_collection(test_file, @configurator.collection_all_tests, :error)
|
|
|
|
return found_path
|
|
end
|
|
|
|
|
|
def find_test_or_source_or_header_file(file_path)
|
|
file = File.basename(file_path)
|
|
return @file_finder_helper.find_file_in_collection(file, @all_test_source_and_header_file_collection, :error)
|
|
end
|
|
|
|
|
|
def find_compilation_input_file(file_path, complain=:error)
|
|
found_file = nil
|
|
|
|
source_file = File.basename(file_path).ext(@configurator.extension_source)
|
|
|
|
# We only collect files that already exist when we start up.
|
|
# FileLists can produce undesired results for dynamically generated files depending on when they're accessed.
|
|
# So collect mocks and runners separately and right now.
|
|
if (source_file =~ /#{@configurator.test_runner_file_suffix}/)
|
|
found_file =
|
|
@file_finder_helper.find_file_in_collection(
|
|
source_file,
|
|
@file_wrapper.directory_listing( File.join(@configurator.project_test_runners_path, '*') ),
|
|
complain)
|
|
|
|
elsif (@configurator.project_use_mocks and (source_file =~ /#{@configurator.cmock_mock_prefix}/))
|
|
found_file =
|
|
@file_finder_helper.find_file_in_collection(
|
|
source_file,
|
|
@file_wrapper.directory_listing( File.join(@configurator.cmock_mock_path, '*') ),
|
|
complain)
|
|
|
|
else
|
|
found_file =
|
|
@file_finder_helper.find_file_in_collection(
|
|
source_file,
|
|
@configurator.collection_all_existing_compilation_input,
|
|
complain)
|
|
end
|
|
|
|
return found_file
|
|
end
|
|
|
|
|
|
def find_source_file(file_path, complain)
|
|
source_file = File.basename(file_path).ext(@configurator.extension_source)
|
|
return @file_finder_helper.find_file_in_collection(source_file, @configurator.collection_all_source, complain)
|
|
end
|
|
|
|
|
|
def find_assembly_file(file_path)
|
|
assembly_file = File.basename(file_path).ext(@configurator.extension_assembly)
|
|
return @file_finder_helper.find_file_in_collection(assembly_file, @configurator.collection_all_assembly, :error)
|
|
end
|
|
|
|
end
|
|
|