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()
`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

View file

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