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.
When running `zig build -Dn=n`, the install and uninstall steps where
overridden in order to improve the description.
In recent version of Zig this is no longer allowed.
The name "baseName" is confusing, since it refers to the UNIX basename
command, and not to the basename function in some programming languages
including Zig.
Use the std.fs.path.stem function to remove the file extension, instead
of slicing.
Remove the use of the assertion, since it is no longer necessary.
Instead, add a check to ensure that the exercise must be a Zig source
file in the validate_exercises function.
Update the validate_exercises function to check the last exercise, too.
Currently addExecutable is called 3 times, unnecessarily making the code
more complex.
The method takes as argument the path to the exercises directory.
Additionally, use the new std.Build.ExecutableOptions.link_libc field.
The new field was added in ziglang/zig@adc9b77d5f on 2023-04-13.
Update the required Zig compiler version.
Note that I added the **current** zig version to the changelog, since
the reason for the change is known only to the person updating the
version.
Currently, the code for defining the path to the exercises directory is
duplicate 4 times.
Add the constants `healed_path` and `work_path`, and use work_path
instead of the duplicated if expression. Update ZiglingStep to take
`work_path` instead of `use_healed` as argument.
Reduce code length by using `join` instead of `std.fs.path.join` and
replace the use of a slice with a tuple.
Additionally, in case of an error from the `join` function, use @panic
instead of unreachable.
Document why the special branch, when the exercises are healed by the
eowyn script, has been disabled.
Currently, ZiglingStep prints the raw exercise output. This is not a
problem when executing `zig build` from the shell, but in a unit test it
is necessary to know when the exercise output ends.
Document that Exercise.output should not have trailing whitespace.
Ensure this is true by adding a check in the validate_exercises
function.
Remove trailing whitespace in exercises 68 and 99.
Simplify the output validation in ZiglingStep.makeInternal.
Checking that the length of the actual and expected output is the same
is not necessary, since trailing whitespace has been removed. Simply do
an exact comparison.
Print the trimmed exercise output, instead of the raw output.
This will ensure that the exercise output always ends with only one LF
character.
Fix some small coding style issues.
In same cases, the progress messages from the compiler are intermixed
with the messages printed by ZiglingStep.
This intermixing appears in two cases:
- when printing, e.g., the message "Checking 0_arrays2.zig..."
- when printing the compiler errors
Closes#230