Browse Source

Added new flag 'run_test' to support test steps for test exercises.
Also created a simple exercise '102_testing' to test the new flag.
After the new build system is ready, we skip the exercise in the flow to finish the actual testing exercise.

Chris Boesch 2 years ago
parent
commit
193bee7d2d
2 changed files with 19 additions and 0 deletions
  1. 9 0
      build.zig
  2. 10 0
      exercises/102_testing.zig

+ 9 - 0
build.zig

@@ -35,6 +35,10 @@ pub const Exercise = struct {
     /// We need to keep track of this, so we compile with libc
     link_libc: bool = false,
 
+    /// This exercise doesn't have a main function.
+    /// We only call the test.
+    run_test: bool = false,
+
     /// This exercise is not supported by the current Zig compiler.
     skip: bool = false,
 
@@ -1080,6 +1084,11 @@ const exercises = [_]Exercise{
         .output = "1. Wizard (Gold: 25, XP: 40)\n2. Bard (Gold: 11, XP: 17)\n3. Bard (Gold: 5, XP: 55)\n4. Warrior (Gold: 7392, XP: 21)",
     },
     .{
+        .main_file = "102_testing.zig",
+        .output = "All 1 tests passed.",
+        .run_test = true,
+    },
+    .{
         .main_file = "999_the_end.zig",
         .output = "\nThis is the end for now!\nWe hope you had fun and were able to learn a lot, so visit us again when the next exercises are available.",
     },

+ 10 - 0
exercises/102_testing.zig

@@ -0,0 +1,10 @@
+const std = @import("std");
+const testing = std.testing;
+
+fn add(a: u16, b: u16) u16 {
+    return a + b;
+}
+
+test "simple test" {
+    try testing.expect(add(41, 1) == 42);
+}