Patrick Böker submitted his report for the Raku CI Bot grant, for the months of October and November:
In October and November most of my time was spent on finding and fixing bugs.
Several problems I encountered are bugs in third party systems. Some of those I tackled, some remain as bug reports.
Reported and fixed bugs:
- Red: Boolean checking DateTime columns fails when using Pg [#530](https://github.com/FCO/Red/issues/530) (Fix: FCO)
- Red: Checking multiple existance checks results in empty WHEN clause [#531]
(https://github.com/FCO/Red/issues/531) (Fix: FCO)
- Red: Type constraints in models are ignored on assignment [#513](https://
github.com/FCO/Red/issues/513) (Fix: FCO)
- Red: Forbid .^create on non-type-objects [#488](https://github.com/FCO/Red/issues/488) (Fix: FCO)
- Red: Enums are not supported [#487](https://github.com/FCO/Red/issues/487) (Fix: FCO)
- Red: MVM_str_hash_lvalue_fetch_nocheck called concurrently on the same hash in Red::Model [#529](https://github.com/FCO/Red/issues/529) (Fix: me)
- Red: Remove duplicate operator [#535](https://github.com/FCO/Red/pull/535) (Fix: me)
- Cro::HTTP: Do not send the ENO_OF_STREAM flag twice [#160](https://
github.com/croservices/cro-http/pull/160) (Fix: me)
Still unresolved bugs:
- MoarVM: NativeCall error [#1614](https://github.com/MoarVM/MoarVM/issues/1614) (Severity: Medium)
- Rakudo: Type check failed in binding to parameter for a named param that has not been passed [#4647](https://github.com/rakudo/rakudo/issues/4647) (Severiy: Low, PR: Kaiepi)
- Red: Unknown columns in query in concurrent setting [#537](https://github.com/FCO/Red/issues/537) (Severity: High)
- Red: Enum on Pg: invalid input syntax for type integer: \"a\" [#527](https://github.com/FCO/Red/issues/527) (Severity: High)
- Red: SELECTing enums generates broken WHERE in most cases [#495](https://github.com/FCO/Red/issues/495) (Severity: Low, workaround available)
- Red: LTA error with missing use Red:api<2> [#490](https://github.com/FCO/
Red/issues/490) (Severity: Low, only a feature request)
- Cro::HTTP: Implement support for sslkeylogfile [#162](https://github.com/
croservices/cro-http/pull/162) (Severity: Low, feature request, PR: me (also
- Cro::HTTP: Implement remote window handling [#161](https://github.com/
croservices/cro-http/pull/161) (Severity: High, PR: me)
- Test::Mock: List calls when with matching failed [#18](https://github.com/
jnthn/test-mock/pull/18) (Severity: Low, feature request, PR: me)
The above list might lead to the impression that Red is bug ridden / unusable.
It is important to understand, that Red is officially still alpha software, so
bugs are expected. I also can't emphasize enough how quickly the Red
developers, especially FCO the lead dev, responded and tackled the problems I reported.
I do hope that instead of evading bugs in third party software by utilizing
workarounds or switching the library, but instead golfing, reporting and fixing bugs, the quality of our software ecosystem will improve and future users will be able to enjoy a more reliable ecosystem.
In the CI bot I did the following:
- Added an integration test to test the entire lifecycle of a PR
- Implement App Authorization in the GitHub API lib
- Implement a minimal GraphQL API in the GitHub API lib
- Implement a configuration system to allow easy setup of a development environment
- Write a first draft of a guide on how to set up a development environment
- Rename RakuCIBot to RakudoCIBot, as the functionality is tailored to the
Rakudo stack and won't be of any use to other Raku implementations. The repository has moved respectively to https://github.com/Raku/RakudoCIBot. It might make sense to move it into the `rakudo` org, but that's a separate step.
- Introduce a logging framework and add some logging
As it stands now, when using the SQLite database driver and ignoring some
instability caused by some of the still unresolved bugs listed above, RCB now successfully polls GitHub for new PRs, starts a test run on the OBS
backend, reads out the test results and persists them. Reporting back to
GitHub is not yet working reliably.