For the last few months I’ve been running Gentoo as my main operating system, and for a system that gives seemingly infinite user choice with very little to limit what you can do, including giving you the ability to create your own local package repo, for the most part it gets out of the way and just works1.
However, in my infinite quest to give myself extra work to do I decided to test out a portage2 feature and run tests against all packages installed on my system.
For a while it seemed fine with packages compiling successfully and testing correctly. The ones that didn’t either had known bugs in the Gentoo bugzilla or were caused by my configuration3. But either way all was right in the world, or at least partly right. I soon ran into some problems.
The first major issue was that enabling testing for every package meant some circular dependencies formed, since especially with python packages many test frameworks depended on themselves to do their own testing. Fixing these issues was easy though as all I needed was to install the package with testing turned off temporarily.
The more pressing issue was that to test everything meant pulling in many, many, many packages. In fact of 2288 packages, 554 were removed when I disabled the test feature. Meaning the only reason they were installed was to test the packages that I actually needed for the packages I wanted4

This all came to a head when June rolled around, as it was time for the default Gentoo python implementation to change, this necessitated the re-installation of a lot of packages, and suddenly my usual run the update and have a rest routine was no more. As before when I first enabled testing there were packages that couldn’t simply be installed whether due to circular dependencies or due to slot conflicts5. And, while I could slowly and manually resolve all these issues I had enough of needing to do this just to have tests.
As such I decided that it just wasn’t worth the effort, so I pulled test out of my enabled Portage features and let started the long slow process of recompiling everything without any tests enabled. This, as mentioned earlier, also allowed me to drop 554 packages from my system, and made the python upgrade as simple as running it. While I doubt I will ever enable testing globally on this machine again, it did give me some insight into how to wrangle Portage to work with more exotic configurations.
So, I’m effectively back where I was with my packages just being installed, and not tested. But did I even really need those tests.
Well, the answer to that is probably not. Since I run my system with majority stable packages they should already have been tested before being made stable, so me testing them is mostly unneeded. In fact for some packages the tests were only really useful for the library developers and not end users. And it just adds time and complexity to any Portage operations that I’m performing.