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()
|
$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
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
|
||||||
#include "main.h"
|
#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