Commit graph

206 commits

Author SHA1 Message Date
Chris Boesch
aaad6ccd93 Changed error text to bold. 2023-05-30 21:45:33 +02:00
Chris Boesch
05cb7f53d9
Merge pull request #308 from perillo/refactor-zigling-step-more
Refactor ZiglingStep more
2023-05-30 20:20:53 +02:00
pseudoc
25513a186a
change std.debug.TTY to std.io.tty
Zig commit:     0f6fa3f20b3b28958921bd63a9a9d96468455e9c

std: Move std.debug.{TTY.Config,detectTTYConfig} to std.io.tty

Also get rid of the TTY wrapper struct, which was exlusively used as a
namespace - this is done by the tty.zig root struct now.

detectTTYConfig has been renamed to just detectConfig, which is enough
given the new namespace. Additionally, a doc comment had been added.
2023-05-25 18:04:36 +08:00
Manlio Perillo
98b658c38f build: use the old color style
In the `Zigling.printError` method, use a bold red color for the "error:"
string and a dim red color for the error message.

In the `Zigling.check_output` method, use the old color style.
2023-05-22 11:49:46 +02:00
Manlio Perillo
beec735378 build: in ZiglingStep.check_output panic in case of OOM
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.
2023-05-20 07:25:53 +02:00
Manlio Perillo
8c887d1d36 build: use std.Build.Step.fail to report errors
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-19 19:27:44 +02:00
Manlio Perillo
066b6c3749 build: remove ZiglingStep.eval
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-19 19:27:33 +02:00
Manlio Perillo
c67ff9de9b Refactor testing support
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-15 15:36:31 +02:00
Chris Boesch
832772cd83 Added testing exercise. 2023-05-15 00:06:15 +02:00
Manlio Perillo
31723adc56 build: remove extra comment for named mode
It was added in commit 879eeb6 (Execution of test exercises added.).
2023-05-14 17:27:14 +02:00
Manlio Perillo
9466d269d4 build: remove the install and uninstall steps
They are no longer used.
2023-05-14 17:22:03 +02:00
Manlio Perillo
7c4bb9c647 build: improve the help message in ZiglingStep
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-14 17:22:03 +02:00
Manlio Perillo
d78b51ce3c build: remove unused declarations
Remove the `Exercise.addExecutable` method and the `SkipStep` struct, since
they are no longer used.
2023-05-14 17:22:03 +02:00
Manlio Perillo
f2c4d168a0 build: show the logo in named mode
When running `zig build -Dn=n`, ensure that the logo is printed.

Update the tests.

Closes #214
2023-05-14 17:22:03 +02:00
Manlio Perillo
5bb9def802 build: simplify the named 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
2023-05-14 17:22:03 +02:00
Manlio Perillo
7bd0a10bc0 build: remove the install step in the normal build mode
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-14 17:21:59 +02:00
Manlio Perillo
a64d4d5fe1 build: remove the special eowyn build mode
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-14 17:20:47 +02:00
Chris Boesch
879eeb64dd Execution of test exercises added. 2023-05-13 21:42:48 +02:00
Chris Boesch
f1e6bd5a8e
Merge branch 'ratfactor:main' into testing 2023-05-13 19:30:33 +02:00
Manlio Perillo
6d7a4bbe2b Restore unit tests
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-09 17:28:41 +02:00
Manlio Perillo
ac3c2b565b build: make literal paths portable
Use fs.path.sep_str instead of a slash, in literal paths.
2023-05-09 11:11:11 +02:00
Manlio Perillo
7b9d3ec3df build: improve code formatting
Avoid too long lines or too many line breaks.
2023-05-09 11:11:11 +02:00
Manlio Perillo
6f2ffbbdbc build: add the dumpArgs function
Use it in Zigling.compile, in order to reduce code duplication.
2023-05-09 11:11:03 +02:00
Manlio Perillo
daac879aae build: fix doc-comments
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-09 11:07:22 +02:00
Manlio Perillo
7cd439b889 build: use the blank identifier in the parameter list
Instead of marking a parameter as unused inside the function body.
2023-05-09 11:07:22 +02:00
Manlio Perillo
9c3ea769dc build: use self when using @fieldParentPtr
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-09 11:07:22 +02:00
Manlio Perillo
1ed58a1128 build: don't install skipped exercises
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-09 11:07:22 +02:00
Manlio Perillo
fb5b04f374 build: fix zig build -Dhealed install
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-09 11:07:22 +02:00
Chris Boesch
307757a765
Merge branch 'ratfactor:main' into testing 2023-05-09 10:02:03 +02:00
Dave Gauer
dbd42bb648 Cleaning up zig build output
* Only show actual Zig compiler errors, not build internals to
  confused and dismay.

* Remove advanced usage instructions not needed in normal
  operation.
2023-05-08 09:20:27 -04:00
Chris Boesch
0b84c8ae05
Merge branch 'ratfactor:main' into testing 2023-05-06 20:53:28 +02:00
Chris Boesch
1dc2d1db04
Merge branch 'main' into improve_instruction 2023-05-06 20:22:20 +02:00
Chris Boesch
6a29b92c60 Improve instructions. 2023-05-06 20:14:30 +02:00
Chris Boesch
5b232abd8c
Merge branch 'ratfactor:main' into testing 2023-05-06 19:15:49 +02:00
Manlio Perillo
8335f88001 build: improve Exercise.addExecutable
Replace the file_path variable with path.
2023-05-06 18:18:08 +02:00
Manlio Perillo
1a2a1e6f2a build: use multiline string literals when necessary
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-06 18:12:04 +02:00
Chris Boesch
f83f0c74db
Merge branch 'ratfactor:main' into testing 2023-05-06 15:29:22 +02:00
Manlio Perillo
0ac9a00dfa build: remove assertion in Exercise.key
Use `orelse unreachable` instead, in order to simplify the code.

Fix doc-comments in the Exercise type.
2023-05-06 12:02:21 +02:00
Manlio Perillo
4001168d2b build: make Exercise.hint optional
Use an optional type, instead of an empty string, since it is more
idiomatic.
2023-05-06 11:50:42 +02:00
Manlio Perillo
f14f4e95a4 build: add the healed-path option
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-05 16:22:50 +02:00
Chris Boesch
67bdbf74b5
Merge branch 'ratfactor:main' into testing 2023-05-03 22:17:56 +02:00
Chris Boesch
497df878a7 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.
2023-05-03 18:17:21 +02:00
Manlio Perillo
a7078c9780 build: improve coding style in ZiglingStep
- 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-03 18:13:55 +02:00
Manlio Perillo
a7677f1cd1 build: use @panic("OOM") instead of unreachable
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-03 18:13:55 +02:00
Manlio Perillo
f32acaf0e4 build: improve the exercise output check
Make the error message consistent with the one in std.Build.RunStep,
using the "=" character instead of "-" and correctly aligning the text.
2023-05-03 18:13:55 +02:00
Manlio Perillo
c2ab3fc191 build: don't use @This() in ZiglingStep
Use ZiglingStep, instead.

This is consistent with the coding style in std.Build.
2023-05-03 18:13:55 +02:00
Manlio Perillo
8af1c01c81 build: remove ZiglingStep.builder field
It is not necessary, since the builder is available in self.step.owner.
2023-05-03 18:13:55 +02:00
Manlio Perillo
7b1e1182fe build: use Child.exec in ZiglingStep.run
Update the run method to use Child.exec, instead of Child.spawn followed
by Child.wait.
This simplifies the code.
2023-05-03 18:13:55 +02:00
Manlio Perillo
3e7320a832 build: fix incorrect error handling in ZiglingStep.compile
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-03 18:13:55 +02:00
Manlio Perillo
68c468df73 build: remove the ZiglingStep.makeInternal method
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-03 18:13:55 +02:00