Skip to content
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

feat(config-editors): Remove side effects from all config editor plugins #1317

Merged
merged 55 commits into from
Feb 5, 2019

Conversation

nicojs
Copy link
Member

@nicojs nicojs commented Jan 11, 2019

Note: #1313 Needs to be merged first

Removes side effects from registering all ConfigEditor plugins:

  • JestConfigEditor
  • MochaRunnerConfigEditor
  • TypeScriptConfigEditor

* Created `Injector` class, a readonly class that can instantiate `Injectable`s
* Updated the `PluginLoader`, so it can load plugins with the new way of working as well as provide a Bridge plugin for all "old fashion" plugin
* Started implenenting the `BroadcastReporter` and other Reporters in the new way.

Couldn't help to make some quality of life improvements:

* `StrykerOptions` now have the expected required/not required properties.
* Created "test-helpers" package so we can share test helpers between packages.
The TestInjector is a new way of creating your System Under Test (sut) objects.
You can configure what to inject and then call `TestInjector.inject(SutClass)`
Also added some unit tests for the Injector class.
* Made the context of the Injector generic.
* Made injector readonly and type safe
* Moved all injector related stuff to its own package: 'typed-inject'
* Updated TestInjector class to now use the new typed-inject
* Updated Stryker to now use the new typed-inject
* Updated Stryker-api to now use types from typed-inject
…d move implementation of functions to stryker-util
@ghost ghost assigned nicojs Jan 11, 2019
@ghost ghost added the 🔎 Needs review label Jan 11, 2019
@nicojs nicojs changed the title feat(html-reporter): Remove side effects from all config editor plugins feat(config-editors): Remove side effects from all config editor plugins Jan 16, 2019
Copy link
Member

@simondel simondel left a comment

Choose a reason for hiding this comment

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

I got one remark, could you take a look at it? I think we should make one piece of Stryker.ts clearer

.provideValue(commonTokens.pluginResolver, pluginLoader as PluginResolver);
configEditorInjector
.provideFactory(coreTokens.pluginCreatorConfigEditor, PluginCreator.createFactory(PluginKind.ConfigEditor))
.injectClass(ConfigEditorApplier).edit(this.config);
Copy link
Member

Choose a reason for hiding this comment

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

The way the config editor is used here is quite sneaky. I would prefer if this is done in a separate method so we can name this operation like we had previously.

Copy link
Member Author

Choose a reason for hiding this comment

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

I agree. I've changed it in the transpiler branch.

See https://github.com/stryker-mutator/stryker/blob/4caf63d214046cd6396521c4dee54361fb6a40dc/packages/stryker/src/Stryker.ts#L45

and https://github.com/stryker-mutator/stryker/blob/4caf63d214046cd6396521c4dee54361fb6a40dc/packages/stryker/src/config/configFactory.ts#L13-L17

If we merge it here, I'll fix it with that one. I'm planning on working on Stryker full time from tomorrow for about 2 weeks, so if you agree I'll merge them in quick succession.

@nicojs nicojs dismissed simondel’s stale review February 5, 2019 10:33

As explained, i will fix it in a later PR

@nicojs nicojs merged commit 1f61bed into master Feb 5, 2019
@ghost ghost removed the 🔎 Needs review label Feb 5, 2019
@nicojs nicojs deleted the 667-remove-side-effects-config-editors branch February 5, 2019 11:51
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.

3 participants