#How can I run a zig tests which rely on code from a parent directory

1 messages · Page 1 of 1 (latest)

native bone
#

I am able to build my project no issues, but when attempting to run the tests it throws error: import of file outside module path how am I suppose to run the tests which rely on code in a parent directory?

error: import of file outside module path: '../token/token.zig'
const token = @import("../token/token.zig");```
native bone
#

@coral cove from my understanding, these files should be visible to each other, the application builds with out issue, it's just when I attempt to run the tests on just lexer.zig

│   build.zig
│   build.zig.zon
│
├───src
│   │   main.zig
│   │
│   ├───lexer
│   │       lexer.zig
│   │
│   └───token
│           token.zig
coral cove
#

how does your build.zig look like?

#

oh wait, you are using zig test that's why it does not work

#

you need to setup your tests in build.zig

native bone
#

The build.zig, is pretty bog standard


pub fn build(b: *std.Build) void {
    const target = b.standardTargetOptions(.{});

    const optimize = b.standardOptimizeOption(.{});

    const exe = b.addExecutable(.{
        .name = "MonkeyInterpreterZig",
        .root_source_file = b.path("src/main.zig"),
        .target = target,
        .optimize = optimize,
    });

    b.installArtifact(exe);

    const run_cmd = b.addRunArtifact(exe);

    run_cmd.step.dependOn(b.getInstallStep());
    if (b.args) |args| {
        run_cmd.addArgs(args);
    }

    const run_step = b.step("run", "Run the app");
    run_step.dependOn(&run_cmd.step);

    const exe_unit_tests = b.addTest(.{
        .root_source_file = b.path("src/main.zig"),
        .target = target,
        .optimize = optimize,
    });


    const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests);

    const test_step = b.step("test", "Run unit tests");
    test_step.dependOn(&run_exe_unit_tests.step);
}```
coral cove