diff --git a/Reqnroll.VisualStudio/Discovery/DiscoveryInvoker.cs b/Reqnroll.VisualStudio/Discovery/DiscoveryInvoker.cs index 9b4a9186..44bcc6db 100644 --- a/Reqnroll.VisualStudio/Discovery/DiscoveryInvoker.cs +++ b/Reqnroll.VisualStudio/Discovery/DiscoveryInvoker.cs @@ -21,9 +21,8 @@ public DiscoveryInvoker(IProjectScope projectScope, IDiscoveryResultProvider dis public int CreateProjectHash(ProjectSettings projectSettings, ConfigSource testAssemblySource) => projectSettings.GetHashCode() ^ testAssemblySource.GetHashCode(); - - public ConfigSource GetTestAssemblySource(ProjectSettings projectSettings) => - projectSettings.IsReqnrollTestProject + public ConfigSource GetTestAssemblySource(ProjectSettings projectSettings) => + projectSettings.IsReqnrollProject ? ConfigSource.TryGetConfigSource(projectSettings.OutputAssemblyPath, _fileSystem, _logger) : ConfigSource.CreateInvalid("The project is not detected to be a Reqnroll project, therefore some Reqnroll Visual Studio Extension features are disabled."); @@ -70,7 +69,7 @@ public Discovery(IDeveroomLogger logger, IDeveroomErrorListServices errorListSer public IDiscovery AndProjectIsReqnrollProject() { - if (_projectSettings.IsReqnrollTestProject) + if (_projectSettings.IsReqnrollProject) return this; _logger.LogVerbose("Non-Reqnroll test project"); diff --git a/Reqnroll.VisualStudio/Editor/Commands/FindStepDefinitionUsagesCommand.cs b/Reqnroll.VisualStudio/Editor/Commands/FindStepDefinitionUsagesCommand.cs index 588a2d90..f4cbf73f 100644 --- a/Reqnroll.VisualStudio/Editor/Commands/FindStepDefinitionUsagesCommand.cs +++ b/Reqnroll.VisualStudio/Editor/Commands/FindStepDefinitionUsagesCommand.cs @@ -53,37 +53,43 @@ public override bool PreExec(IWpfTextView textView, DeveroomEditorCommandTargetK var project = IdeScope.GetProject(textBuffer); bool bindingsNotYetLoaded = false; bool projectNotYetLoaded = project == null; - if (!projectNotYetLoaded) + var asyncContextMenu = IdeScope.Actions.ShowAsyncContextMenu(PopupHeader); + Task.Run(async () => { - Logger.LogVerbose("Find Step Definition Usages:PreExec: project loaded"); - var bindingRegistry = project.GetDiscoveryService().BindingRegistryCache; - bindingsNotYetLoaded = (bindingRegistry == null || bindingRegistry.Value == ProjectBindingRegistry.Invalid); - if (bindingsNotYetLoaded) - Logger.LogVerbose($"Find Step Definition Usages: PreExec: binding registry not available: {(bindingRegistry == null ? "null" : "invalid")}"); - } + if (!projectNotYetLoaded) + { + Logger.LogVerbose("Find Step Definition Usages:PreExec: project loaded"); + var bindingRegistry = project.GetDiscoveryService().BindingRegistryCache; + bindingsNotYetLoaded = (bindingRegistry == null || bindingRegistry.Value == ProjectBindingRegistry.Invalid); + if (bindingsNotYetLoaded) + { + Logger.LogVerbose($"Find Step Definition Usages: PreExec: binding registry not available: {(bindingRegistry == null ? "null" : "invalid")}"); + IdeScope.Actions.ShowProblem("Unable to find step definition usages: the project is not initialized yet."); + return true; + } + } - if (project == null || !project.GetProjectSettings().IsReqnrollProject || bindingsNotYetLoaded ) - { - IdeScope.Actions.ShowProblem( - "Unable to find step definition usages: the project is not detected to be a Reqnroll project or it is not initialized yet."); - return true; - } + if (project == null || !project.GetProjectSettings().IsReqnrollProject || bindingsNotYetLoaded) + { + IdeScope.Actions.ShowProblem( + "Unable to find step definition usages: the project is not detected to be a Reqnroll project."); + return true; + } - var reqnrollTestProjects = IdeScope.GetProjectsWithFeatureFiles() - .Where(p => p.GetProjectSettings().IsReqnrollTestProject) - .ToArray(); + var reqnrollTestProjects = IdeScope.GetProjectsWithFeatureFiles() + .Where(p => p.GetProjectSettings().IsReqnrollTestProject) + .ToArray(); - if (reqnrollTestProjects.Length == 0) - { - IdeScope.Actions.ShowProblem( - "Unable to find step definition usages: could not find any Reqnroll project with feature files."); - return true; - } + if (reqnrollTestProjects.Length == 0) + { + IdeScope.Actions.ShowProblem( + "Unable to find step definition usages: could not find any Reqnroll project with feature files."); + return true; + } - var asyncContextMenu = IdeScope.Actions.ShowAsyncContextMenu(PopupHeader); - Task.Run( - () => FindUsagesInProjectsAsync(reqnrollTestProjects, fileName, triggerPoint, asyncContextMenu, - asyncContextMenu.CancellationToken), asyncContextMenu.CancellationToken); + await FindUsagesInProjectsAsync(reqnrollTestProjects, fileName, triggerPoint, asyncContextMenu, asyncContextMenu.CancellationToken); + return true; + }, asyncContextMenu.CancellationToken); return true; } diff --git a/Tests/Reqnroll.VisualStudio.Tests/Discovery/DiscoveryTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Discovery/DiscoveryTests.cs index afa388f9..f74c4bb9 100644 --- a/Tests/Reqnroll.VisualStudio.Tests/Discovery/DiscoveryTests.cs +++ b/Tests/Reqnroll.VisualStudio.Tests/Discovery/DiscoveryTests.cs @@ -114,7 +114,7 @@ public void DoNotDiscoverWhenProjectIsNotReqnrollTestProject() { //arrange using var sut = ArrangeSut(); - sut.ProjectScope.StubProjectSettingsProvider.Kind = DeveroomProjectKind.ReqnrollLibProject; + sut.ProjectScope.StubProjectSettingsProvider.Kind = DeveroomProjectKind.OtherProject; DiscoveryInvoker discoveryInvoker = sut.BuildDiscoveryInvoker();