Skip to content

Add command line flag to enable experimental features #8665

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

suzannaratcliff
Copy link

@suzannaratcliff suzannaratcliff commented May 13, 2025

Add command line flag to enable experimental features

Motivation:

In order to support experimental features in Swift Testing we need a cli flag to enable them.

Modifications:

Added a command line flag called enable-experimental-testing-feature which can be used to enable specific Swift Testing experimental features.

--enable-experimental-testing-feature <FeatureName>

Result:

Users will be able to specify the enable-experimental-testing-feature flag when running tests in the CLI to enable specific experimental Swift Testing features.

@@ -130,6 +130,11 @@ struct TestEventStreamOptions: ParsableArguments {
@Option(name: .customLong("attachments-path"),
help: "Path where attachments should be written (Swift Testing only). This path must be an existing directory the current user can write to. If not specified, any attachments created during testing are discarded.")
var attachmentsPath: AbsolutePath?

/// If experimental features should be enabled..
Copy link
Contributor

Choose a reason for hiding this comment

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

nit

Suggested change
/// If experimental features should be enabled..
/// If experimental features should be enabled.

/// If experimental features should be enabled..
@Option(name: .customLong("enable-experimental-features"),
help: .private)
var enableExperimentalFeatures: Bool
Copy link
Contributor

Choose a reason for hiding this comment

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

Offline, I made a suggestion that we scope this flag more narrowly, to only apply to one feature (singular instead of plural) and accept the name of that feature as an argument. The problem with having a single, catch-all “enable all the experimental features” flag is the next time someone adds some new experimental thing, if someone was already passing the flag then they will break.

@stmontgomery stmontgomery requested a review from briancroom May 13, 2025 19:40
/// Which testing experimental features should be enabled
@Option(name: .customLong("enable-experimental-testing-feature"),
help: .private)
var enableExperimentalFeatures: String?
Copy link
Contributor

Choose a reason for hiding this comment

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

Now that this has changed to be a singular, rather than plural, setting, I think the value should be an Array of String to allow for more than one experimental testing feature flag to be passed. I don't recall how exactly you do that using ArgumentParser but I believe there's a way.

Copy link
Contributor

Choose a reason for hiding this comment

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

For example, to allow someone to pass

--enable-experimental-testing-feature FeatureA --enable-experimental-testing-feature FeatureB

Copy link
Author

Choose a reason for hiding this comment

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

I will take a look

@heckj
Copy link
Member

heckj commented May 14, 2025

When this is set to merge, we'll need to regenerate the CLI docs for swift test that we recently added. Happy to do that, since it's a bit of messy process right now. Just wanted to call it out. /cc @bripeticca

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants