71 lines
1.8 KiB
V
71 lines
1.8 KiB
V
module tests
|
|
|
|
import os
|
|
import builder
|
|
import config
|
|
|
|
fn test_preview_build_graph_orders_dependencies() {
|
|
tmp := new_temp_dir('lana_graph')
|
|
defer {
|
|
os.rmdir_all(tmp) or {}
|
|
}
|
|
|
|
src_dir := os.join_path(tmp, 'src')
|
|
lib_dir := os.join_path(src_dir, 'lib')
|
|
tool_dir := os.join_path(src_dir, 'tools')
|
|
os.mkdir_all(lib_dir) or { panic(err) }
|
|
os.mkdir_all(tool_dir) or { panic(err) }
|
|
|
|
core_src := os.join_path(lib_dir, 'core.cpp')
|
|
tool_src := os.join_path(tool_dir, 'demo.cpp')
|
|
os.write_file(core_src, '// core stub\n') or { panic(err) }
|
|
os.write_file(tool_src, '// tool stub\n') or { panic(err) }
|
|
|
|
mut cfg := config.BuildConfig{
|
|
project_name: 'demo'
|
|
src_dir: src_dir
|
|
build_dir: os.join_path(tmp, 'build')
|
|
bin_dir: os.join_path(tmp, 'bin')
|
|
toolchain: 'gcc'
|
|
compiler: 'g++'
|
|
debug: true
|
|
shared_libs: [
|
|
config.SharedLibConfig{
|
|
name: 'core'
|
|
sources: [core_src]
|
|
}
|
|
]
|
|
tools: [
|
|
config.ToolConfig{
|
|
name: 'demo'
|
|
sources: [tool_src]
|
|
libraries: ['core']
|
|
}
|
|
]
|
|
}
|
|
|
|
summary := builder.preview_build_graph(&cfg) or { panic(err) }
|
|
|
|
assert summary.nodes.len == 2
|
|
assert summary.unresolved.len == 0
|
|
|
|
mut shared_found := false
|
|
mut tool_found := false
|
|
for node in summary.nodes {
|
|
if node.id == 'shared:core' {
|
|
shared_found = true
|
|
assert node.dependencies.len == 0
|
|
}
|
|
if node.id == 'tool:demo' {
|
|
tool_found = true
|
|
assert node.dependencies.contains('shared:core')
|
|
}
|
|
}
|
|
|
|
assert shared_found
|
|
assert tool_found
|
|
assert summary.order.len == 2
|
|
assert summary.order[0] == 'shared:core'
|
|
assert summary.order[1] == 'tool:demo'
|
|
}
|