Commit graph

634 commits

Author SHA1 Message Date
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
Chris Boesch
02a35e8a09
Merge pull request #275 from perillo/heal-only-in-test
Heal only in test
2023-05-02 21:30:29 +02:00
Dave Gauer
3fc68332d8 Added Ex 101 "for loops part 5" (Closes #271)
Also gave a shot at explaining data-oriented design, a Zig "hot
topic" ever since the red Hawaiian shirt talk(s).
2023-05-02 08:26:32 -04:00
Manlio Perillo
402f4fa665 Restore unit tests 2023-05-02 11:13:31 +02:00
Manlio Perillo
642eaf42aa test: don't run heal during configuration phase
In order to simplify the code, the heal function is called during the
configuration phase, thus resulting in the function being always called
when the build.zig file is run.

This behavior unfortunately causes a serious issue when the user fix a
broken exercise and, during the next step, the heal function tries to heal
the fixed exercise resulting in GNU patch assuming an attempt to reverse
a patch, waiting for input from the terminal.

Run the heal function from the new HealStep step, so that it is called
only during tests.

Rename the outdir constant to work_path, for consistency with build.zig.

Fixes #272
2023-05-02 11:13:25 +02:00
Chris Boesch
7fcf909c77
Merge pull request #273 from chrboesch/patch_error
cli tests removed to solve 272
2023-05-01 20:43:26 +02:00
Chris Boesch
50966adb7e comment for the issue added 2023-05-01 20:14:52 +02:00
Chris Boesch
1473ce0a1b
unit tests temporarily disabled 2023-05-01 20:07:01 +02:00
Chris Boesch
59d92e370f cli tests removed to solve 272 2023-05-01 19:54:13 +02:00
Chris Boesch
00b45457b4
Merge pull request #270 from perillo/improve-exercise-type
Improve the Exercise type
2023-05-01 18:58:07 +02:00
Manlio Perillo
d33e968f8d build: don't override the top level steps
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.
2023-05-01 18:39:54 +02:00
Manlio Perillo
405290555b build: rename Exercise.baseName to name
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.
2023-05-01 18:39:54 +02:00
Manlio Perillo
370337998e build: add the Exercise.addExecutable method
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.
2023-05-01 18:39:54 +02:00
Manlio Perillo
423cb5057e build: rename the Exercise.C field to link_libc
The name "C" does not follow the naming conventions for container
fields.
2023-05-01 18:39:54 +02:00
Manlio Perillo
0b0523014a build: reduce code duplication when setting the work path
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.
2023-05-01 18:39:54 +02:00
Manlio Perillo
b864078920 build: remove the Exercise.async field
The stage1 C++ compiler is gone forever.

Remove the custom support and documentation for the old stage1 compiler
in build.zig and README.md.
2023-05-01 18:39:54 +02:00
Manlio Perillo
40240a100e build: move exercises at the end of the file
The exercises slice takes about 460 lines, making it hard to read the
source code of build.zig.

Closes #225
2023-05-01 18:39:42 +02:00
Dave Gauer
53544f1ce5 Added Ex. 100 fourth for (as foretold in #261) 2023-04-30 21:23:54 -04:00
Dave Gauer
1c3860e236 Oops, capitalization in ex016. 2023-04-30 17:12:35 -04:00
Dave Gauer
81f6539c05 Renamed 095 to "for3" to match feature sequence
So 100 will be the next in line.
2023-04-30 17:11:37 -04:00
Dave Gauer
c5906ac4fa Updating 095 patch to match, natch! 2023-04-30 16:45:57 -04:00
Dave Gauer
c5d813d1a8 Updating wording in 'for' exercises
This is in preparation for another dive into 'for'
in an upcoming Exercise 100.

Also reformatted 095 for 65 columns and some wording.
2023-04-30 16:23:35 -04:00
Chris Boesch
55415bf68d
Merge pull request #269 from perillo/fix-windows-deadlock
Fix deadlock on Windows
2023-04-29 22:49:07 +02:00
Manlio Perillo
2f174bb0ba eowyn.sh: remove checking formatting one file at a time
This avoids unnecessary output.
Also remove the comment, since the message to stdout makes it
unnecessary.
2023-04-29 16:59:33 +02:00
Manlio Perillo
d2e2cc08f5 test: make the patch command silent
The POSIX standard says that the patch command should not use stdout,
but GNU patch writes the message:
patching file patches/healed/xxx.zig (read from exercises/xxx.zig).

Add the -s flag to suppress these messages.

Note that the heal function from test/tests.zig is called when running
`zig build -Dhealed` because it is executed in the configure phase.
2023-04-29 16:50:28 +02:00
Manlio Perillo
5431b5b224 test: fix deadlock on windows when running tests
The deadlock was caused by setting stdout behavior to ignore, when
spawning the patch command.  When the patch command writes to devnull it
causes some errors and a deadlock.

The cause of the bug is probably Zig using `\Device\Null` from `ntdll`
while git-bash uses `NUL` from `kernel32`.
2023-04-29 16:25:58 +02:00
Manlio Perillo
4e0a946edd workflows: remove the custom windows only jobs
Restore the job matrix to run on linux, macos and windows.

Remove lines with extra whitespace.

Improve the documentation of the Eowyn workflow.

Remove the single quoting of the workflow names.
2023-04-29 16:22:52 +02:00
Chris Boesch
8c856d5a2e
Update README.md 2023-04-29 12:48:22 +00:00
Chris Boesch
020cdf1e74
Merge pull request #268 from chrboesch/main
Switched back to bash on Windows
2023-04-28 16:20:54 +00:00
Chris Boesch
3dd8e63bdc
switched back to bash on windows 2023-04-28 15:41:10 +00:00
Chris Boesch
25bc7f95db
switched back to bash on windows 2023-04-28 15:40:46 +00:00
Chris Boesch
5853aeaf21
Merge pull request #267 from chrboesch/main
Split github actions into 'Windows' and 'Linux/Mac' for using PowerShell on Windows
2023-04-28 11:38:58 +00:00
Chris Boesch
eaf391a867
Split Windows with PowerShell 2023-04-28 11:29:18 +00:00
Chris Boesch
c168c5f9cd
Update ci.yml 2023-04-28 11:20:54 +00:00
Chris Boesch
993d86f2cd
Update ci.yml 2023-04-28 11:17:57 +00:00
Chris Boesch
4754e758d3
Update ci.yml 2023-04-28 11:14:43 +00:00
Chris Boesch
ec9c04f055
Update ci.yml 2023-04-28 11:10:37 +00:00
Chris Boesch
8cfe5a2858
split in windows and uses PowerShell 2023-04-28 11:03:24 +00:00
Chris Boesch
c3d68a0607
step eowyn ranamed 2023-04-26 20:01:50 +02:00
Chris Boesch
8bcd081140
fixed error time-out minutes 2023-04-26 19:47:35 +02:00
Chris Boesch
0f7b996a69
step names addes and switched to checkout v3 2023-04-26 19:40:16 +02:00
Chris Boesch
fda6f08201
step names added and switched to checkout v3 2023-04-26 19:36:58 +02:00
Chris Boesch
907c173a2f
fixed fail-fast error 2023-04-26 11:44:49 +02:00
Chris Boesch
3761b398fb
strategy error fixed 2023-04-26 11:37:31 +02:00
Chris Boesch
4ca5d96a0e
timeout error fixed 2023-04-26 11:35:19 +02:00
Chris Boesch
aea9feb2fb
Merge pull request #259 from perillo/improve-github-workflows
workflows: improve the jobs configuration
2023-04-26 09:13:53 +00:00
Chris Boesch
43651a1aa6
back to checkout@2 2023-04-26 11:13:19 +02:00
Chris Boesch
11faa218a3
back to checkout@v2 2023-04-26 11:05:21 +02:00
Manlio Perillo
537b8167ad workflows: improve the jobs configuration
Reduce the timeout to 30 minutes for all the jobs, since it is enough.

Set strategy.fail-fast to false, so that we can see the full logs.
2023-04-26 10:55:36 +02:00
Chris Boesch
f9ebe0675b
Merge pull request #254 from chrboesch/tools
Replacing Python-Tools with Zig-Tools
2023-04-25 21:46:12 +00:00