// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers // // SPDX-License-Identifier: MPL-2.0 import Testing @testable import PterodactylBuild @testable import llbuild2fx struct BuildTests { @Test func testImports() async throws { let group = LLBMakeDefaultDispatchGroup() let db = LLBInMemoryCASDatabase(group: group) let functionCache = FXInMemoryFunctionCache(group: group) let executor = FXLocalExecutor() let engine = FXEngine(group: group, db: db, functionCache: functionCache, executor: executor) let client = LLBCASFSClient(db) let ctx = Context() let declTree = LLBDeclFileTree.dir( [ "src": .dir([ "bar.ext": .file(contents: Array("hello world".utf8)), "foo.ext": .file(contents: Array("import bar".utf8)), "baz.ext": .file(contents: Array("import foo".utf8)) ]) ] ) let treeID: LLBDataID = try await client.store(declTree, ctx).get() let dependencyGraph = try await engine.build(key: Keys.SourceTree.GetDependencyGraph(sourceTreeId: treeID), ctx).get() let foo = UnitName(basename: "foo") let bar = UnitName(basename: "bar") let baz = UnitName(basename: "baz") #expect( dependencyGraph.edges == [ bar: [], foo: [bar], baz: [foo] ] ) let dependenciesOfBaz = try await engine.build(key: Keys.SourceTree.GetDependencies(sourceTreeId: treeID, unitName: baz), ctx).get() #expect(dependenciesOfBaz == [foo, bar]) return } }