770 Commits (11a120521d3716c7b5833ada4de1c20ad25fbe85)
 

Author SHA1 Message Date
Manlio Perillo 4b58de26d3 eowyn: always quote variables
Quote all the variables, even though we know that it is safe.

Fix coding style.
1 year ago
Chris Boesch cffbbff8bd replaced check-exercises.pu with check-exercises.zig 1 year ago
Chris Boesch 752efd891d Merge pull request #250 from perillo/improve-test-coverage-2
Improve test coverage
1 year ago
Chris Boesch 64d90c3397 timeout to 60 minutes 1 year ago
Manlio Perillo 4f690b074a test: add a test for `zig build -Dn=1`
Add a test for `zig build -Dn=1` in order to test that a broken exercise
will print an hint.
1 year ago
Manlio Perillo 5b2e842157 test: change the order of `zig build` options
In test case 1 and 2, move the -Dhealed option before the -Dn option,
for consistency.

Fix a typo in cmd.setName in test case 1 and 2.

Remove a confusing comment in test case 1.
1 year ago
Manlio Perillo 131772edd7 test: add test for `zig build` and `zig build -Dn=1 start`
Add tests for `zig build` and `zig build -Dn=1 start`, in order to test
that the all the exercises are processed in the correct order.
1 year ago
Manlio Perillo 3dd7cdcb3b build: make exercise output more reliable
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.
1 year ago
Manlio Perillo cec0aa51db test: fix incorrect cleanup code
The current cleanup code is incorrect, since it may delete the healed
directory while one test case is running.

The solution is to make each test case isolate, with its own setup and
teardown.  Unfortunately it is currently not possible, since each test
case modify the same directory.

Disable the cleanup step, until a better solution is found.
1 year ago
Manlio Perillo 108c145bdd test: refactorize the code
Currently, if there is an error when creating the patches/healed
directory, the error message will be printed on stderr, but the build
runner will report the test as being successful.

Add the fail function and the FailStep, so that the error will be
correctly handled by the build runner.

Remove the PatchStep, and instead add the heal function so that all the
exercises are healed before starting the tests.

The heal function executes at the configuration phase, but the possible
error is handled by the build runner.
1 year ago
Dave Gauer 2775d21ed0 Another README coverage list edit
I still had C interop under stdlib, which it isn't.
1 year ago
Dave Gauer 960da57e68 Tweaked README coverage list 1 year ago
Dave Gauer 346e6b00cd Updated README and CONTRIBUTING to reflect reality 1 year ago
Dave Gauer 42c430a0c0 Ex 099 format instructions to 65 columns, wording, examples 1 year ago
Chris Boesch 99891b53fb Update 099_formatting.zig
typo fixed
1 year ago
Chris Boesch 4435cebe7a Merge pull request #247 from chrboesch/formatting
added first formatting exercise
1 year ago
Chris Boesch d6d30934db added first formatting exercise 1 year ago
Chris Boesch 2ed24ab3cf Merge pull request #234 from perillo/improve-ci
Improve CI
1 year ago
Manlio Perillo c7697a4282 Ensure the patches are up-to-date and consistent
Add the update-patches.py tool.

Update all the patches, so that the files are up-to-date and use the
same patch file format.
1 year ago
Manlio Perillo 7d7be0482c eowyn: run `zig fmt --check` before `zig build`
Update the eowyn.sh script to check the healed exercises formatting,
before running `zig build`.
1 year ago
Manlio Perillo 6b17a18893 Ensure the exercises use the canonical format
Add the check-exercises.py tool in the new tools directory.  It is used
to check that the exercises are correctly formatted, printing on stderr
the invalid ones and the diff in the unified format.

Update the exercises that don't use the canonical zig fmt format.

Update some patches that cause the generated zig file to be incorrectly
formatted.
1 year ago
Manlio Perillo b59bef29b9 ci: add a CI workflow
Add a new github workflow named CI.

Add a job named compat, checking that and old Zig compiler will not fail
with a compiler error, but instead will print an useful error message.
1 year ago
Chris Boesch b84217161c Merge pull request #246 from perillo/build-restore-compatibility-2
build: restore compatibility with old Zig compilers
1 year ago
Manlio Perillo 30db9d105a build: avoid intermixed messages on the same line
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
1 year ago
Manlio Perillo c6e055dd83 build: don't print errors in ZiglingStep.eval
Move the code for printing compiler errors and messages to the new
ZiglingStep.printErrors method.

Call printErrors in the Zigling.doCompile method, both in the normal and
error flow.

When handling an error from the Zig IPC, add the case when the compiler
was unable to return the executable path.

Before using the IPC, the error was
  "The following command exited with error code 1"
now it is
  "The following command failed to communicate the compilation result"
1 year ago
Manlio Perillo b39c7e61ef build: restore compatibility support again
Commit e214c44 (build: update ZiglingStep to the new API) broke again
the compatibility support for old compilers, due to the use of the
multi-object for loop syntax.

Move the Zig IPC support code to src/ipc.zig.

Use the while statement, instead of the for statement.
1 year ago
Chris Boesch 9ff7f5ee69 Merge pull request #238 from perillo/update-zigling-step
Update ZiglingStep
1 year ago
Manlio Perillo e3c5cb2175 build: update ZiglingStep to the new API
Update the code to the breaking change in ziglang
commit c96cb98ad (CLI: remove --enable-cache option).

Replace the --enable-cache option with the --listen=- option and use the
Zig IPC to get the path to the executable.

Closes #236
1 year ago
Manlio Perillo e91c7a24f2 build: disable special case for `zig build -Dhealed`
The special case was added because it was used by the Eowyn github
workflow.

As a side effect, however, it prevents testing the normal case used by
users.

Disable it, until a better solution is found.
1 year ago
Chris Boesch 540042576e Update README.md 1 year ago
Chris Boesch 3b3f802cc8 Merge pull request #237 from chrboesch/main
added cname
1 year ago
Chris Boesch 4b941892e1 Update CNAME 1 year ago
Chris Boesch b7812b684f Update CNAME 1 year ago
Chris Boesch 10f0aa2100 Create CNAME 1 year ago
Chris Boesch 850ec0c164 Update README.md
url fixed
1 year ago
Chris Boesch bf013df4bf Merge pull request #235 from perillo/update-to-version-0.11.0-dev.2560
Update the code to the new zig version
1 year ago
Manlio Perillo bc98057d66 Update the code to the new zig version
Update the code to the breaking change in ziglang commit
60eabc0ec (std.Build.CompileStep: remove run() and install())

Update the zig version in the README.md file.
1 year ago
Chris Boesch 3121ebff30 Update 096_memory_allocation.zig
formatting
1 year ago
Chris Boesch 8eaf472959 Update 097_bit_manipulation.zig
formatting
1 year ago
Chris Boesch ea330749ca Update 098_bit_manipulation2.zig
formatting
1 year ago
Chris Boesch ecde85f5d5 Update README.md
set check for 'bit manipulation'
1 year ago
Chris Boesch ffd3de2d01 Merge pull request #233 from chrboesch/bit_manipulation
added the second exercise for bit manipulation
1 year ago
Chris Boesch 9f48d84ac8 added the second exercise for bit manipulation 1 year ago
Chris Boesch 35765f9299 Merge pull request #232 from chrboesch/bit_manipulation
Bit manipulation
1 year ago
Chris Boesch 299418c314 added first exercise for bit manipulation 1 year ago
Chris Boesch 3c19500827 added first exercise for bit manipulation 1 year ago
Chris Boesch 1ccc86edd6 Merge pull request #224 from perillo/improve-build-more
build: enable full parallelism when -Dhealed is set
1 year ago
Manlio Perillo 47876e6371 build: make PrintStep thread safe
Update PrintStep to always printing to stderr, using std.debug.print, so
that the message is written atomically.

Note that currently it is not an issue, since PrintStep prints the
message before everything else.
1 year ago
Manlio Perillo 1ee8aabcf3 build: simplify the code when solving all the exercises
Initialize the first step in the chain to the header_step, instead of
making the code more complex handling the first step as a special case
in the for loop.
1 year ago
Manlio Perillo be782af7a3 build: restore compatibility support
Commit 0d56ba3 (build: restore the exercise chain) broke the
compatibility support for old compilers, due to the use of the
multi-object for loop syntax.

Use the normal for loop syntax; the change still keep the code readable.

Use the variable `n`, instead of `i`, when referring to the exercise
number; this will improve the readability.

Closes #227
1 year ago