move ceedling tests to test/unit-test
This commit is contained in:
92
test/unit-test/vendor/ceedling/plugins/subprojects/lib/subprojects.rb
vendored
Normal file
92
test/unit-test/vendor/ceedling/plugins/subprojects/lib/subprojects.rb
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
require 'ceedling/plugin'
|
||||
require 'ceedling/constants'
|
||||
|
||||
SUBPROJECTS_ROOT_NAME = 'subprojects'
|
||||
SUBPROJECTS_TASK_ROOT = SUBPROJECTS_ROOT_NAME + ':'
|
||||
SUBPROJECTS_SYM = SUBPROJECTS_ROOT_NAME.to_sym
|
||||
|
||||
class Subprojects < Plugin
|
||||
|
||||
def setup
|
||||
@plugin_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
||||
|
||||
# Add to the test paths
|
||||
SUBPROJECTS_PATHS.each do |subproj|
|
||||
subproj[:source].each do |path|
|
||||
COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR << path
|
||||
end
|
||||
subproj[:include].each do |path|
|
||||
COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR << path
|
||||
end
|
||||
end
|
||||
|
||||
# Gather information about the subprojects
|
||||
@subprojects = {}
|
||||
@subproject_lookup_by_path = {}
|
||||
SUBPROJECTS_PATHS.each do |subproj|
|
||||
@subprojects[ subproj[:name] ] = subproj.clone
|
||||
@subprojects[ subproj[:name] ][:c] = []
|
||||
@subprojects[ subproj[:name] ][:asm] = []
|
||||
subproj[:source].each do |path|
|
||||
search_path = "#{path[-1].match(/\\|\//) ? path : "#{path}/"}*#{EXTENSION_SOURCE}"
|
||||
@subprojects[ subproj[:name] ][:c] += Dir[search_path]
|
||||
if (EXTENSION_ASSEMBLY && !EXTENSION_ASSEMBLY.empty?)
|
||||
search_path = "#{path[-1].match(/\\|\//) ? path : "#{path}/"}*#{EXTENSION_ASSEMBLY}"
|
||||
@subprojects[ subproj[:name] ][:asm] += Dir[search_path]
|
||||
end
|
||||
end
|
||||
@subproject_lookup_by_path[ subproj[:build_root] ] = subproj[:name]
|
||||
end
|
||||
end
|
||||
|
||||
def find_my_project( c_file, file_type = :c )
|
||||
@subprojects.each_pair do |subprojname, subproj|
|
||||
return subprojname if (subproj[file_type].include?(c_file))
|
||||
end
|
||||
end
|
||||
|
||||
def find_my_paths( c_file, file_type = :c )
|
||||
@subprojects.each_pair do |subprojname, subproj|
|
||||
return (subproj[:source] + (subproj[:include] || [])) if (subproj[file_type].include?(c_file))
|
||||
end
|
||||
return []
|
||||
end
|
||||
|
||||
def find_my_defines( c_file, file_type = :c )
|
||||
@subprojects.each_pair do |subprojname, subproj|
|
||||
return (subproj[:defines] || []) if (subproj[file_type].include?(c_file))
|
||||
end
|
||||
return []
|
||||
end
|
||||
|
||||
def list_all_object_files_for_subproject( lib_name )
|
||||
subproj = File.basename(lib_name, EXTENSION_SUBPROJECTS)
|
||||
objpath = "#{@subprojects[subproj][:build_root]}/out/c"
|
||||
bbb = @subprojects[subproj][:c].map{|f| "#{objpath}/#{File.basename(f,EXTENSION_SOURCE)}#{EXTENSION_OBJECT}" }
|
||||
bbb
|
||||
end
|
||||
|
||||
def find_library_source_file_for_object( obj_name )
|
||||
cname = "#{File.basename(obj_name, EXTENSION_OBJECT)}#{EXTENSION_SOURCE}"
|
||||
dname = File.dirname(obj_name)[0..-7]
|
||||
pname = @subproject_lookup_by_path[dname]
|
||||
return @ceedling[:file_finder].find_file_from_list(cname, @subprojects[pname][:c], :error)
|
||||
end
|
||||
|
||||
def find_library_assembly_file_for_object( obj_name )
|
||||
cname = "#{File.basename(obj_name, EXTENSION_OBJECT)}#{EXTENSION_ASEMBLY}"
|
||||
dname = File.dirname(obj_name)[0..-7]
|
||||
pname = @subproject_lookup_by_path[dname]
|
||||
return @ceedling[:file_finder].find_file_from_list(cname, @subprojects[pname][:asm], :error)
|
||||
end
|
||||
|
||||
def replace_constant(constant, new_value)
|
||||
Object.send(:remove_const, constant.to_sym) if (Object.const_defined? constant)
|
||||
Object.const_set(constant, new_value)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# end blocks always executed following rake run
|
||||
END {
|
||||
}
|
||||
Reference in New Issue
Block a user