Skip to content

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.

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

4 participants