This is necessary since, when trimLines returns `std.mem.Allocator.Error`,
no error message will be displayed to the user.
An alternative is to use `std.Build.Step.fail`, but using @panic("OOM")
is simpler and consistent with existing code.
Have all error messages handled in a single place (printError), by using
the `std.Build.Step.fail` method. Ensure that the first letter in the
error message is lower case and remove coloring, since it is done in the
`ZiglingStep.printError` method.
Additionally, in the `ZiglingStep.check_test` method, remove trailing
whitespace from stderr.
Remove the `ZiglingStep.eval` method and the src/ipc.zig source code.
Use `Step.evalZigProcess`, instead. This greatly simplifies the code.
Print the error messages and error bundle in `ZiglingStep.make`, both in
case of error and success.
Additionally, remove the `ZiglingStep.is_testing` field, since it is no
longer necessary.
Following the implementation in `std.Build.Step.Compile, add the Kind
type to differentiate between a normal executable and a test executable
running zig tests. Replace `Exercise.run_test` field with `kind`.
Compile the exercise in both the exe and test cases, reducing code
duplication.
Add the `check_output` and `check_test` methods in ZiglingStep, in order
to differentiate the code checking a normal executable and a test
executable.
Update the tests to correctly check both the exe and test cases. Remove
the temporary code added in commit 832772c.
Add the Mode enum, so that ZiglingStep can detect if it was called in
normal mode or in named mode.
Update the help method to print the correct message based on the current
build mode.
Remove the following steps, since they are rarely (if never) used and
only increase the complexity of the `build.zig` file:
- install step (zig build -Dn=n install)
- test step (zig build -Dn=n test)
- start step (zig build -Dn=n start)
The only remaining step is the default zigling step (zig build -Dn=n),
where the user can choose the exercise to solve.
Update the tests. Additionally, update CheckNamedStep and CheckStep so
that they can share the same functions.
Closes#299
Removing the install step will simplify the current code.
Copying the exercise executable to the zig-out directory can be done in
`ZiglingStep.
Closes#298
The special eowyn mode was added in order to improve the performance of
the Eowyn Github workflow.
Remove it, since it adds unnecessary complexity to the `build.zig` file.
Closes#297
Commit dbd42bb (Cleaning up zig build output) broke the unit test.
Always use exit code 2, instead of 0. This is the exit code used by the
build runner to notify the compiler to not report any further
diagnostics.
Move the Ziglings logo from the `build` function scope to the global
scope, and make it public so that tests.zig can use it to find the
number of lines to skip, instead of using an hard coded value.
Fixes#295
Some functions and custom build steps incorrectly used a normal comment.
Use a doc-comment instead.
Additionally, use a present tense verb to describe the action of a
function or custom build step.
Update the code in `zig build install` and `zig build -Dn=n install`, so
that exercises that must be skipped are not installed, since it will
cause an error. Ensure that a skip message is printed.
The command fails because the path to the exercises directory was
incorrectly set to "exercises" instead of `work_path`.
The bug was introduced in commit b56bb7b
(build: enable full parallelism when -Dhealed is set).
Remove the comment about not using multi-object loop, since it is
confusing.
* Only show actual Zig compiler errors, not build internals to
confused and dismay.
* Remove advanced usage instructions not needed in normal
operation.
Update the output and hint fields in the `exercises` slice to use a
multiline string literal when the string have multiple lines or use the
`"` character. This will greatly improve readability.
Additionally, remove the trailing whitespace on each line and check it
in the validate_exercises function.
Update the output comparison logic in ZiglingStep, since the current
code assumes that the string has only one line.
Update test/tests.zig to use the new `CheckNamedStep` in test case 1,
since RunStep.StdIo.Check is no longer able to correctly check the
output.
Fixes#283
This is necessary in the unit tests, to ensure each test case use a
different exercises directory.
Update test/tests.zig to use the new healed-path option, ensuring that
each temp directory is removed.
In test case 3, 4 and 5, move case_step as the first step in the
dependency chain. This will improve the build summary tree.
In test case 5, remove the dependency to heal_step, since it is not
necessary.
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.
- Use an anonymous struct when initializing std.Build.Step.
- Rename the builder parameter in the create method to b
- Avoid lines too long
Additionally:
- In the run method, rename output to raw_output in order to make the
next variable names shorter.
- In the compile method, rename zig_file to path.
The code in ZiglingStep copied the error handling used in std.Build in
the past.
Use @panic("OOM") when the error is caused by the allocator failing to
allocate memory.
When handling the error from the eval method, some possible errors are
ignored. The make method will only print the exercise hint and the
help message.
Print the unexpected error message, in the else prong.
Note that FileNotFound can also be considered unexpected.
Rename the doCompile method to compile and add the run method.
The two methods are now called from the make method.
Add the help method, since the error handling of compile and run methods
are now separate.
Remove the obsolete comment for the compile method.