Working with an old codebase today, I moved a method from one file to another. CI was happy.

Then I realised the method didn't have any automated tests, so I wrote one. It turns out its entire (new) file didn't have any, so my change would improve test coverage. Nice.

But it didn't. CI complained that test coverage had dropped. Wait, what? All I did was move some code and add a unit test.

Then I realised that the coverage analysis tool was only counting files that actually contained any tested code. By adding a test to part of a previously-untested file, that file became part of the scored codebase. Uh-oh.

Looked deeper. Turns out the code coverage tool was also counting the test files themselves as being part of the code-under-test.

Fixed all of the above. Code coverage score dropped by about 40%. 😱

Now I've got more work to do.

Happy Friday. Check what your coverage tool is inspecting, folks.

#note #testing #programming #threeRings #ruby

Via: 🔗 https://danq.me/2026/06/05/40pc-coverage-drop/

The improvement to code quality that drops the coverage metric 40%!

Working with an old codebase today, I moved a method from one file to another. CI was happy. Then I realised the method didn't have any automated tests, so I wrote one. It turns out its entire (new) file didn't have any, so my change would improve test coverage. Nice. But it didn't. CI complained that test coverage had dropped. Wait, what? All I did was <em>move</em> some code and <em>add</em> a unit test. Then I realised that the coverage analysis tool was only counting files that actually contained any tested code. By adding a test to part of a previously-untested file, that file became part of the scored codebase. Uh-oh. Looked deeper. Turns out the code coverage tool was <em>also</em> counting <em>the test files themselves</em> as being part of the code-under-test. Fixed all of the above. Code coverage score dropped by about 40%. 😱 Now I've got more work to do. Happy Friday. Check what your coverage tool is inspecting, folks.

Dan Q

Working with an old codebase today, I moved a method from one file to another. CI was happy.Then I realised the method didn’t have any automated tests, so I wrote one. It turns out its entire (new) file didn’t have any, so my change would improve test coverage. Nice.But it didn’t. CI complained that test […]
Read more: https://danq.me/2026/06/05/40pc-coverage-drop/

# #programming #ruby #testing #threeRings

The improvement to code quality that drops the coverage metric 40%!

Working with an old codebase today, I moved a method from one file to another. CI was happy. Then I realised the method didn't have any automated tests, so I wrote one. It turns out its entire (new) file didn't have any, so my change would improve test coverage. Nice. But it didn't. CI complained that test coverage had dropped. Wait, what? All I did was <em>move</em> some code and <em>add</em> a unit test. Then I realised that the coverage analysis tool was only counting files that actually contained any tested code. By adding a test to part of a previously-untested file, that file became part of the scored codebase. Uh-oh. Looked deeper. Turns out the code coverage tool was <em>also</em> counting <em>the test files themselves</em> as being part of the code-under-test. Fixed all of the above. Code coverage score dropped by about 40%. 😱 Now I've got more work to do. Happy Friday. Check what your coverage tool is inspecting, folks.

Dan Q

JTA wrote a LinkedIn post about Three Rings, its remote-first culture, doing things in person, and crisis management, and it's brilliant.
Read more: https://danq.me/2026/05/28/bringing-three-rings-volunteers-together-doing-remote-first-in-person-and-what-to-eat-in-a-crisis/

#repost #nightline #telecommuting #teleworking #threeRings #volunteering

Bringing Three Rings volunteers together: doing remote-first in person, and what to eat in a crisis

JTA wrote a LinkedIn post about Three Rings, its remote-first culture, doing things in person, and crisis management, and it's brilliant.

Dan Q

In his Unsung blog, Marcin Wichary's shared the concept of a 'reverse molly guard', which is awesome. I didn't actually know the originating term 'molly guard' until I saw it, though, although I've definitely seen (and implemented) then before. Hey: d'ya wanna hear about a molly guard I added to Three Rings the other year?
Read more: https://danq.me/2026/04/23/molly-guard-in-reverse/

#repost #threeRings #userInterface

Molly guard in reverse

In his Unsung blog, Marcin Wichary's shared the concept of a 'reverse molly guard', which is awesome. I didn't actually know the originating term 'molly guard' until I saw it, though, although I've definitely seen (and implemented) then before. Hey: d'ya wanna hear about a molly guard I added to Three Rings the other year?

Dan Q

Yesterday saw the penultimate "meal together" of the #threeRings development team at this week's #volunteering / #hackathon retreat, so I decided to take a #cooking shifts to have a go with the big wood-fired brick #pizzaOven in the garden!

It went... pretty damn well! #Pizza is the best.

🔗 https://danq.me/wood-fired

This year's 3Camp venue had a wood-fired pizza oven, so I signed-up for a shift of cooking for my fellow volunteers and thoroughly enjoyed making and baking a monumental amount of dough.
Read more: https://danq.me/2026/04/02/wood-fired/

#article #cookery #cooking #devcamp #pizza #threeRings #volunteering

Wood-Fired

This year's 3Camp venue had a wood-fired pizza oven, so I signed-up for a shift of cooking for my fellow volunteers and thoroughly enjoyed making and baking a monumental amount of dough.

Dan Q

There was no mixing bowl in the house large enough to make enough pizza dough to feed all of the Three Rings volunteers present at this year's 3Camp, so I just had to pour out all the ingredients onto the surface and work from there.
Read more: https://danq.me/2026/04/01/28647/

#note #bread #cooking #food #pizza #threeRings #volunteering

There was no mixing bowl in the house large enough to make enough pizza dough to feed all of the Three Rings volunteers present at this year's 3Camp, so I just had to pour out all the ingredients onto the surface and work from there.

#note #threeRings #volunteering #pizza #cooking #bread #food

Via: 🔗 https://danq.me/2026/04/01/28647/

I'm volunteering at the building right next door to this bridge, this week, working on software that helps charities... among them, Samaritans! So finding this thematic cache was a must-do for the younger geokid and I on our lunch break today. A quick and easy find thanks to the clear telegraphing in the description, aided by our direction of approach. It's a wonderful large bridge, and we got to watch a train zoom along the tracks beneath us as we crossed.
Read more: https://danq.me/2026/03/31/dan-q-found-gcartjb-stop-look-er-listen/

#checkin #cacheLog #children #geocaching #samaritans #threeRings #volunteering

Dan Q found GCARTJB Stop, Look… er… Listen?

I'm volunteering at the building right next door to this bridge, this week, working on software that helps charities... among them, Samaritans! So finding this thematic cache was a must-do for the younger geokid and I on our lunch break today. A quick and easy find thanks to the clear telegraphing in the description, aided by our direction of approach. It's a wonderful large bridge, and we got to watch a train zoom along the tracks beneath us as we crossed.

Dan Q

Some days, developing Three Rings is about being hunched over a keyboard alone in the middle of the night, swearing at Rubygem incompatibilities.But just ocassionally it’s about getting together in beautiful places with some of the most dedicated geeks I know… to swear about Rubygem incompatibilities.Either way, a walk in the garden can lead to […]
Read more: https://danq.me/2026/03/30/28634/

#note #programming #ruby #threeRings #volunteering