Skip to content

Isolate 3rd party libraries used internally by Busted from test environments#654

Merged
alerque merged 6 commits into
lunarmodules:masterfrom
alerque:isolate-requires
Nov 29, 2024
Merged

Isolate 3rd party libraries used internally by Busted from test environments#654
alerque merged 6 commits into
lunarmodules:masterfrom
alerque:isolate-requires

Conversation

@alerque

@alerque alerque commented Dec 2, 2020

Copy link
Copy Markdown
Member

Fixes #643

Before anything else, this fixes what seems to be an unrelated bug in the loaded table state isolation. The current package loaded state table save/restore functions were only working in one direction. The packages in the current package.loaded are restored to the state they were in at the save point, but anything that was in the save point but is no longer in the current package list (i.e. in the event of unloading a package, switching to a different version of the same package, or switching to a different isolation environment) would be left in because the keys from the save point are not iterated, only the keys from the current state.

After that, this (currently) takes the approach described in my comment here, only isolating 3rd party libraries loaded by Busted for it's own use, not Busted itself.

@alerque alerque marked this pull request as ready for review August 25, 2022 10:14
@alerque alerque requested a review from Tieske August 25, 2022 10:15
@alerque alerque merged commit a144124 into lunarmodules:master Nov 29, 2024
@alerque alerque deleted the isolate-requires branch January 7, 2026 10:47
alerque added a commit to alerque/busted that referenced this pull request Jan 7, 2026
…e/isolate-requires"

This reverts commit a144124, reversing
changes made to 94d0081.

Reverted because the isolation is incomplete. Some penlight functions
load other modules *at use*, meaning the `package.loaded` table is
getting filled up with Penlight things even if we load some of them with
the table out of the way. I went down the rabbit whole a ways and
isollated hundreds of require functions though the code base, but it
will be hard to accomplish this without introducing other bugs.

With Lua 5.5 support being urgent to release, I'm reverting this so the
approach isn't even changed until we decide how to really handle it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Busted's test isolation leaks previously loaded modules into test scope

1 participant