test: 🧪 adjust tests to new capabilities
This commit is contained in:
parent
f1033f460e
commit
d0d4235a40
3 changed files with 32 additions and 58 deletions
86
bin/console
86
bin/console
|
@ -9,65 +9,30 @@ require "comfpile"
|
|||
|
||||
$core = Comfpile::Core.new()
|
||||
|
||||
`mkdir /tmp/test`
|
||||
`touch /tmp/test/main.cpp`
|
||||
|
||||
`mkdir /tmp/test2/`
|
||||
`touch /tmp/test2/main.cpp`
|
||||
|
||||
$core.add_artefact_engine Comfpile::FilesourceEngine, root_path: "/tmp/test2"
|
||||
$core.add_artefact_engine Comfpile::FilesourceEngine, root_path: "/tmp/test"
|
||||
$core.add_artefact_engine Comfpile::FilesourceEngine, root_path: File.join(File.dirname(__FILE__), '../test/faux_build_dir')
|
||||
|
||||
$core.add_artefact_engine Comfpile::ParserEngine,
|
||||
file_regex: /^(.+)\.(h|c|cpp)$/,
|
||||
search_regexes: [
|
||||
{
|
||||
regex: /^#include\s*[<"](?<value>.+)[>"]/,
|
||||
key: 'include'
|
||||
},
|
||||
{
|
||||
regex: /\/\/\s*comf\.(?<key>\w+)[=:]\s*(?<value>.+)/
|
||||
}
|
||||
]
|
||||
|
||||
$core.add_artefact_engine do |engine|
|
||||
engine.add_recipe(:parsed, /^(.+)\.(h|c|cpp)$/) do |match, a|
|
||||
|
||||
a.parent_artefact :sourcefile, a.target
|
||||
|
||||
a.add_step do
|
||||
puts "Parsing file #{@target}..."
|
||||
|
||||
@linked_artefacts = []
|
||||
|
||||
File.readlines(@required_artefacts[:sourcefile][@target][:file]).each do |l|
|
||||
case l
|
||||
when /^#include\s*[<"](.+)[>"]/
|
||||
|
||||
puts "Got include for file #{$1}!"
|
||||
@linked_artefacts << craft_artefact(:parsed, $1)
|
||||
|
||||
when /\/\/+\s*require\s*[<"]((?:.+)\.(?:c|cpp))[>"]/
|
||||
puts "Got require for file #{$1}!"
|
||||
@linked_artefacts << require_artefact(:parsed, $1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
engine.add_recipe(:dependency_list, /^(.+)\.(h|c|cpp)$/) do |match, a|
|
||||
a.parent_artefact :parsed, a.target
|
||||
|
||||
a.require_artefact :dependency_analysis, a.target
|
||||
a.require_artefact :dependency_analysis_include, a.target
|
||||
|
||||
a.add_step do
|
||||
puts "Generating dependency list for #{@target}..."
|
||||
|
||||
parsed_marker = {}
|
||||
parsing_list = [@parent_artefact]
|
||||
|
||||
loop do
|
||||
break if parsing_list.empty?
|
||||
a = parsing_list.pop
|
||||
|
||||
next if a.nil?
|
||||
next unless a.stage == :parsed
|
||||
next unless a.succeeded?
|
||||
|
||||
next if parsed_marker[a.target]
|
||||
parsed_marker[a.target] = true
|
||||
|
||||
parsing_list += a.linked_artefacts
|
||||
end
|
||||
|
||||
@parameters[:dependency_list] = parsed_marker.keys
|
||||
deps_artefact = find_artefact(:dependency_analysis, @target)
|
||||
@parameters[:dependency_list] = deps_artefact.dependencies
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -87,14 +52,21 @@ $core.add_artefact_engine do |engine|
|
|||
end
|
||||
end
|
||||
|
||||
$tst = $core.craft_artefact(:dependency_list, "main.cpp");
|
||||
t_start = Time.now()
|
||||
dep_art = $core.craft_and_complete(:dependency_analysis, "main.cpp")
|
||||
t_end = Time.now()
|
||||
|
||||
50.times do
|
||||
$core.execute_step
|
||||
puts "Full dependency list is: #{dep_art.dependencies.map(&:target)} (took #{t_end - t_start})"
|
||||
puts "Includes of all source files:"
|
||||
|
||||
dep_art.dependencies.each do |art|
|
||||
next unless ['.cpp', '.c'].include? File.extname(art.target)
|
||||
|
||||
include_art = $core.craft_and_complete(:dependency_analysis_include, art.target)
|
||||
|
||||
puts "Included dependencies for #{art.target} are #{include_art.dependencies.map(&:target)}"
|
||||
end
|
||||
|
||||
puts "Dependency list is: #{$tst[:dependency_list]}"
|
||||
|
||||
# (If you use this, don't forget to add pry to your Gemfile!)
|
||||
require "pry"
|
||||
Pry.start
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
|
||||
#include "main.h"
|
||||
#include "test.h"
|
||||
#include "test.h"
|
||||
|
||||
#include "test_settings.h"
|
0
test/faux_build_dir/lib_test/test_settings.h
Normal file
0
test/faux_build_dir/lib_test/test_settings.h
Normal file
Loading…
Add table
Add a link
Reference in a new issue