test: 🧪 adjust tests to new capabilities

This commit is contained in:
David Bailey 2023-04-14 16:02:34 +02:00
parent f1033f460e
commit d0d4235a40
3 changed files with 32 additions and 58 deletions

View file

@ -9,65 +9,30 @@ require "comfpile"
$core = Comfpile::Core.new() $core = Comfpile::Core.new()
`mkdir /tmp/test` $core.add_artefact_engine Comfpile::FilesourceEngine, root_path: File.join(File.dirname(__FILE__), '../test/faux_build_dir')
`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::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| $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| 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 a.add_step do
puts "Generating dependency list for #{@target}..." deps_artefact = find_artefact(:dependency_analysis, @target)
@parameters[:dependency_list] = deps_artefact.dependencies
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
end end
end end
@ -87,14 +52,21 @@ $core.add_artefact_engine do |engine|
end end
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 puts "Full dependency list is: #{dep_art.dependencies.map(&:target)} (took #{t_end - t_start})"
$core.execute_step 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 end
puts "Dependency list is: #{$tst[:dependency_list]}"
# (If you use this, don't forget to add pry to your Gemfile!) # (If you use this, don't forget to add pry to your Gemfile!)
require "pry" require "pry"
Pry.start Pry.start

View file

@ -1,3 +1,5 @@
#include "main.h" #include "main.h"
#include "test.h" #include "test.h"
#include "test_settings.h"