private void ProcessEnableCodeCoverageCommand(IExecutionContext context, Dictionary <string, string> eventProperties) { string codeCoverageTool; eventProperties.TryGetValue(EnableCodeCoverageEventProperties.CodeCoverageTool, out codeCoverageTool); if (string.IsNullOrWhiteSpace(codeCoverageTool)) { // no code coverage tool specified. Dont enable code coverage. return; } codeCoverageTool = codeCoverageTool.Trim(); string buildTool; eventProperties.TryGetValue(EnableCodeCoverageEventProperties.BuildTool, out buildTool); if (string.IsNullOrEmpty(buildTool)) { throw new ArgumentException(StringUtil.Loc("ArgumentNeeded", "BuildTool")); } buildTool = buildTool.Trim(); var codeCoverageInputs = new CodeCoverageEnablerInputs(context, buildTool, eventProperties); ICodeCoverageEnabler ccEnabler = GetCodeCoverageEnabler(buildTool, codeCoverageTool); ccEnabler.EnableCodeCoverage(context, codeCoverageInputs); }
private ICodeCoverageEnabler GetCodeCoverageEnabler(string buildTool, string codeCoverageTool) { var extensionManager = HostContext.GetService <IExtensionManager>(); ICodeCoverageEnabler codeCoverageEnabler = (extensionManager.GetExtensions <ICodeCoverageEnabler>()).FirstOrDefault( x => x.Name.Equals(codeCoverageTool + "_" + buildTool, StringComparison.OrdinalIgnoreCase)); if (codeCoverageEnabler == null) { throw new ArgumentException(StringUtil.Loc("InvalidBuildOrCoverageTool", buildTool, codeCoverageTool)); } return(codeCoverageEnabler); }