aboutsummaryrefslogtreecommitdiff
path: root/examples/monorepo/packages/beta
diff options
context:
space:
mode:
Diffstat (limited to 'examples/monorepo/packages/beta')
-rw-r--r--examples/monorepo/packages/beta/build.zig17
-rw-r--r--examples/monorepo/packages/beta/build.zig.zon8
-rw-r--r--examples/monorepo/packages/beta/src/lib.zig44
3 files changed, 69 insertions, 0 deletions
diff --git a/examples/monorepo/packages/beta/build.zig b/examples/monorepo/packages/beta/build.zig
new file mode 100644
index 0000000..fa4c1cd
--- /dev/null
+++ b/examples/monorepo/packages/beta/build.zig
@@ -0,0 +1,17 @@
+const std = @import("std");
+
+pub fn build(b: *std.Build) void {
+ const target = b.standardTargetOptions(.{});
+ const optimize = b.standardOptimizeOption(.{});
+
+ const lib_tests = b.addTest(.{
+ .root_module = b.createModule(.{
+ .root_source_file = b.path("src/lib.zig"),
+ .target = target,
+ .optimize = optimize,
+ }),
+ });
+ const run_tests = b.addRunArtifact(lib_tests);
+ const test_step = b.step("test", "Run beta tests");
+ test_step.dependOn(&run_tests.step);
+}
diff --git a/examples/monorepo/packages/beta/build.zig.zon b/examples/monorepo/packages/beta/build.zig.zon
new file mode 100644
index 0000000..94cccf7
--- /dev/null
+++ b/examples/monorepo/packages/beta/build.zig.zon
@@ -0,0 +1,8 @@
+.{
+ .name = .beta,
+ .version = "0.1.0",
+ .fingerprint = 0x8f910463cee85531,
+ .minimum_zig_version = "0.16.0",
+ .dependencies = .{},
+ .paths = .{ "build.zig", "build.zig.zon", "src" },
+}
diff --git a/examples/monorepo/packages/beta/src/lib.zig b/examples/monorepo/packages/beta/src/lib.zig
new file mode 100644
index 0000000..690b38c
--- /dev/null
+++ b/examples/monorepo/packages/beta/src/lib.zig
@@ -0,0 +1,44 @@
+// findNearestZigBuildDir walk-up test:
+//
+// When this file is the active editor in Nova, the "Current Zig File" clean
+// action calls findNearestZigBuildDir starting at packages/beta/src/.
+// It finds packages/beta/build.zig after one walk step and uses that
+// directory as the working directory — NOT the monorepo root build.zig.
+//
+// To verify: open this file, trigger clean, observe the task console shows
+// the beta package directory, not the monorepo root.
+const std = @import("std");
+
+/// Halve a value (integer division, truncated toward zero).
+pub fn halve(x: i32) i32 {
+ return @divTrunc(x, 2);
+}
+
+/// Negate a value.
+pub fn negate(x: i32) i32 {
+ return -x;
+}
+
+/// Absolute value.
+pub fn abs(x: i32) i32 {
+ return if (x < 0) -x else x;
+}
+
+test "beta: halve" {
+ try std.testing.expectEqual(@as(i32, 3), halve(6));
+ try std.testing.expectEqual(@as(i32, 3), halve(7)); // truncated
+ try std.testing.expectEqual(@as(i32, -2), halve(-5));
+ try std.testing.expectEqual(@as(i32, 0), halve(0));
+}
+
+test "beta: negate" {
+ try std.testing.expectEqual(@as(i32, -7), negate(7));
+ try std.testing.expectEqual(@as(i32, 7), negate(-7));
+ try std.testing.expectEqual(@as(i32, 0), negate(0));
+}
+
+test "beta: abs" {
+ try std.testing.expectEqual(@as(i32, 5), abs(5));
+ try std.testing.expectEqual(@as(i32, 5), abs(-5));
+ try std.testing.expectEqual(@as(i32, 0), abs(0));
+}