aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/build.zig
AgeCommit message (Collapse)Author
2023-05-19build: use `std.Build.Step.fail` to report errorsManlio Perillo
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.
2023-05-19build: remove `ZiglingStep.eval`Manlio Perillo
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.
2023-05-15Refactor testing supportManlio Perillo
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.
2023-05-15Added testing exercise.Chris Boesch
2023-05-14build: remove extra comment for named modeManlio Perillo
It was added in commit 879eeb6 (Execution of test exercises added.).
2023-05-14build: remove the install and uninstall stepsManlio Perillo
They are no longer used.
2023-05-14build: improve the help message in ZiglingStepManlio Perillo
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.
2023-05-14build: remove unused declarationsManlio Perillo
Remove the `Exercise.addExecutable` method and the `SkipStep` struct, since they are no longer used.
2023-05-14build: show the logo in named modeManlio Perillo
When running `zig build -Dn=n`, ensure that the logo is printed. Update the tests. Closes #214
2023-05-14build: simplify the named build modeManlio Perillo
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
2023-05-14build: remove the install step in the normal build modeManlio Perillo
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
2023-05-14build: remove the special eowyn build modeManlio Perillo
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
2023-05-13Execution of test exercises added.Chris Boesch
2023-05-13Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-09Restore unit testsManlio Perillo
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
2023-05-09build: make literal paths portableManlio Perillo
Use fs.path.sep_str instead of a slash, in literal paths.
2023-05-09build: improve code formattingManlio Perillo
Avoid too long lines or too many line breaks.
2023-05-09build: add the dumpArgs functionManlio Perillo
Use it in Zigling.compile, in order to reduce code duplication.
2023-05-09build: fix doc-commentsManlio Perillo
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.
2023-05-09build: use the blank identifier in the parameter listManlio Perillo
Instead of marking a parameter as unused inside the function body.
2023-05-09build: use self when using @fieldParentPtrManlio Perillo
Update PrintStep and SkipStep to use the `self` variable when getting the parent pointer from Step. This convention is used in `std.Build`.
2023-05-09build: don't install skipped exercisesManlio Perillo
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.
2023-05-09build: fix `zig build -Dhealed install`Manlio Perillo
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.
2023-05-09Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-08Cleaning up zig build outputDave Gauer
* Only show actual Zig compiler errors, not build internals to confused and dismay. * Remove advanced usage instructions not needed in normal operation.
2023-05-06Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-06Merge branch 'main' into improve_instructionChris Boesch
2023-05-06Improve instructions.Chris Boesch
2023-05-06Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-06build: improve Exercise.addExecutableManlio Perillo
Replace the file_path variable with path.
2023-05-06build: use multiline string literals when necessaryManlio Perillo
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
2023-05-06Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-06build: remove assertion in `Exercise.key`Manlio Perillo
Use `orelse unreachable` instead, in order to simplify the code. Fix doc-comments in the Exercise type.
2023-05-06build: make `Exercise.hint` optionalManlio Perillo
Use an optional type, instead of an empty string, since it is more idiomatic.
2023-05-05build: add the healed-path optionManlio Perillo
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.
2023-05-03Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-03Added new flag 'run_test' to support test steps for test exercises.Chris Boesch
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.
2023-05-03build: improve coding style in ZiglingStepManlio Perillo
- 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.
2023-05-03build: use @panic("OOM") instead of unreachableManlio Perillo
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.
2023-05-03build: improve the exercise output checkManlio Perillo
Make the error message consistent with the one in std.Build.RunStep, using the "=" character instead of "-" and correctly aligning the text.
2023-05-03build: don't use @This() in ZiglingStepManlio Perillo
Use ZiglingStep, instead. This is consistent with the coding style in std.Build.
2023-05-03build: remove ZiglingStep.builder fieldManlio Perillo
It is not necessary, since the builder is available in self.step.owner.
2023-05-03build: use Child.exec in ZiglingStep.runManlio Perillo
Update the run method to use Child.exec, instead of Child.spawn followed by Child.wait. This simplifies the code.
2023-05-03build: fix incorrect error handling in ZiglingStep.compileManlio Perillo
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.
2023-05-03build: remove the ZiglingStep.makeInternal methodManlio Perillo
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.
2023-05-02Merge pull request #275 from perillo/heal-only-in-testChris Boesch
Heal only in test
2023-05-02Added Ex 101 "for loops part 5" (Closes #271)Dave Gauer
Also gave a shot at explaining data-oriented design, a Zig "hot topic" ever since the red Hawaiian shirt talk(s).
2023-05-02Restore unit testsManlio Perillo
2023-05-01comment for the issue addedChris Boesch
2023-05-01cli tests removed to solve 272Chris Boesch