GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Add `FileSystem` abstraction for testing by mbg · Pull Request #4222 · github/codeql-action

Conversation

@mbg

@mbg mbg commented Oct 9, 2026

Copy link
Copy Markdown
Member

Mostly a few cherry-picked commits from #4221 that are not directly related to that PR and more broadly useful. The main change is the addition of the FileSystem type and a corresponding "FS" feature for ActionState that allows us to test functions which rely on the fs module more easily.

Risk assessment

For internal use only. Please select the risk level of this change:

  • Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.

Which use cases does this change impact?

Workflow types:

  • Advanced setup - Impacts users who have custom CodeQL workflows.
  • Managed - Impacts users with dynamic workflows (Default Setup, Code Quality, ...).

Products:

  • Code Scanning - The changes impact analyses when analysis-kinds: code-scanning.
  • Code Quality - The changes impact analyses when analysis-kinds: code-quality.
  • Other first-party - The changes impact other first-party analyses.
  • Third-party analyses - The changes affect the upload-sarif action.

Environments:

  • Dotcom - Impacts CodeQL workflows on github.com and/or GitHub Enterprise Cloud with Data Residency.
  • GHES - Impacts CodeQL workflows on GitHub Enterprise Server.

How did/will you validate this change?

  • Unit tests - I am depending on unit test coverage (i.e. tests in .test.ts files).
  • End-to-end tests - I am depending on PR checks (i.e. tests in pr-checks).

If something goes wrong after this change is released, what are the mitigation and rollback strategies?

  • Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix.

How will you know if something goes wrong after this change is released?

  • Telemetry - I rely on existing telemetry or have made changes to the telemetry.
    • Dashboards - I will watch relevant dashboards for issues after the release. Consider whether this requires this change to be released at a particular time rather than as part of a regular release.
    • Alerts - New or existing monitors will trip if something goes wrong with this change.

Are there any special considerations for merging or releasing this change?

  • No special considerations - This change can be merged at any time.

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Consider adding a changelog entry for this change.
  • Confirm the readme and docs have been updated if necessary.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
mbg added 5 commits October 9, 2026 19:31
@mbg
Add osRelease to BaseState
859c056
@mbg
Make getCodeQLForCmd use Env
0bd54b0
@mbg
Add fs.ts to abstract over fs
2907608
@mbg
Add FS state feature
e6f5465
@mbg
Make FS available to init
149926c
@mbg
mbg requested a review from a team as a code owner October 9, 2026 22:15
Copilot AI balanced review requested due to automatic review settings October 9, 2026 22:15
@github-actions github-actions Bot added the size/S Should be easy to review label Oct 9, 2026
Copilot started reviewing on behalf of mbg October 9, 2026 22:16
View session
Copilot AI reviewed Oct 9, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

  • Copilot's review of this pull request may be incomplete because some of the changed files are excluded by your Copilot content exclusion settings. See Excluding content from Copilot for details.

🟢 Approval recommended

The reviewable changes consistently introduce the abstractions without identified correctness issues.

0 open findings

What changed in this PR

Adds injectable filesystem and environment abstractions to improve testability.

Changes:

  • Adds FileSystem, FS action state, and OS release metadata.
  • Routes CodeQL environment access through Env.
  • Narrows read-only environment parameters.
File Description
src/​fs.ts Defines the filesystem abstraction.
src/​action-common.ts Provides filesystem and OS metadata to actions.
src/​testing-utils.ts Adds filesystem and OS defaults to test state.
src/​init-action.ts Enables filesystem state for initialization.
src/​codeql.ts Injects environment access into CodeQL operations.
src/​actions-util.ts Accepts read-only environments for temporary paths.
src/​cli/​output-cache.ts Accepts read-only environments for cache paths.
lib/​entry-points.js Generated bundle; excluded from review by policy.
Files excluded by content exclusion policy (1)
  • lib/entry-points.js

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mbg
mbg added this pull request to stack #4224 October 9, 2026 22:30
@mbg
Merge remote-tracking branch 'origin/main' into mbg/fs-abstraction
d9f462b
@mbg
mbg removed this pull request from stack #4224 October 12, 2026 11:00
@mbg
mbg added this pull request to stack #4226 October 12, 2026 11:14
henrymercer
henrymercer reviewed Oct 12, 2026
View reviewed changes

@henrymercer henrymercer left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change lets us run tests that stub fs in parallel, at the expense of requiring a wrapper object to be threaded through the program and used instead of direct APIs. However for most tests, it's convenient to use fs APIs directly with a temporary directory, and these tests can still be run in parallel with distinct temporary directories. Therefore I don't see the benefit of this outweighing the ongoing complexity of maintaining the wrapper.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mbg
mbg removed this pull request from stack #4226 October 12, 2026 11:48
@mbg
mbg marked this pull request as draft October 14, 2026 09:44

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@henrymercer henrymercer henrymercer left review comments
Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments

At least 1 approving review is required to merge this pull request.

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

size/S Should be easy to review

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@mbg @henrymercer
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.