Running lcov on a GitHub Linux Runner

For Wordle GS, I’ve been trying to maintain decent unit test coverage of the core game logic. My approach has been to leverage Cpputest, gcov, & lcov both locally as well as on the Ubuntu GitHub Runner based CI builds. To simplify checking coverage on PRs, I added lcov-reporter-action to the mix. There was just one problem – the summary numbers in the comments left were clearly bogus. With overall coverage showing as NaN% (with a +/- change of NaN% to boot) and the totals for all the other metrics showing as 100% (despite the clear presence of uncovered lines), this wasn’t as usable as I’d hoped.

Continue reading

Classic Computer, Modern IDE

Years ago, I spent a week in the wilderness of Utah.  The night sky was breathtaking; the days were spent in canyons mostly untouched by humans.  It was an amazing experience that I will always be grateful for.  However, by the end of the week, I was happy to return to modern conveniences.

Programming the IIGS on the IIGS feels like experiencing those canyons in Utah and, overall, very authentic. I’ve relived my early attempts in all their glory and frustration. Knowing the convenience of modern development environments, the second part has been bothering me more this time. I am accustomed to syntax highlighting, large screens, fast compile cycles, and all the other conveniences. Thankfully, there’s a solution for this:

With those three packages installed on my Mac, I can develop for the IIGS in Xcode and test in emulation.  This was a very straightforward installation process with one exception.  I did struggle a bit on Step 5 – Install ProFUSE. After some head scratching and overthinking the problem, I realized that from GitLab, I could simply select Repository -> Tags and then filter using the term profuse and a pkg file was provided.

With everything up and running, the function I wrote for the first lesson is formatted and highlighted as I would expect:

Additionally, compile/test cycles are dramatically shortened with this setup. Overall, I feel like this is a reasonable compromise between staying 100% authentic to the original experience and having modern conveniences.


Revisiting a Past Failure

When I was fifteen, I failed to write a game for the IIGS.  In fact, I failed repeatedly to write any number of games.  I remember the rush of excitement each time I started a new one, followed by the crash of running into the limit of my abilities.  Many hours were spent sitting at that genuine faux wood veneer computer desk (with hutch) that held the machine that was alternately thrilling and frustrating.  Eventually, I moved on to programming other computers without having finished any of those game.

The IIGS, getting ready for the new attempt

Looking back, I question if I was more interested in writing a game or in being the person who had written a game.  I daydreamed about my games being listed in the Big Red Computer Club catalog and how the shareware checks would roll in.  That time could have likely been better spent learning more about programming or the IIGS itself.  At the same time, in hindsight, I was fighting some unnecessary uphill battles.  It took a while for me to realize that I’d need to learn something beyond Applesoft BASIC and then a while longer to save up money for a Pascal compiler.  Some of it was giving up on debugging and playing a little more Neuromancer (which still holds up as one of my favorite games, so I regret nothing on that front).

The monks of Pong asked for fewer years than it has taken me

Having recently unearthed my IIGS, a lot of memories and questions about programming have been slowly resurfacing.  Can I write a game for the IIGS?  How many of the challenges would be addressed by proper tools and books?  Will I instead finish playing Neuromancer?  I’m hoping to find out.