public RunViaUnityEditorStrategy(ISolution solution, IUnitTestResultManager unitTestResultManager, UnityEditorProtocol editorProtocol, NUnitTestProvider unitTestProvider, IUnitTestElementIdFactory idFactory, ISolutionSaver riderSolutionSaver, UnityRefresher unityRefresher, NotificationsModel notificationsModel, UnityHost unityHost, ILogger logger, Lifetime lifetime, PackageValidator packageValidator ) { mySolution = solution; myUnitTestResultManager = unitTestResultManager; myEditorProtocol = editorProtocol; myUnitTestProvider = unitTestProvider; myIDFactory = idFactory; myRiderSolutionSaver = riderSolutionSaver; myUnityRefresher = unityRefresher; myNotificationsModel = notificationsModel; myUnityHost = unityHost; myLogger = logger; myLifetime = lifetime; myPackageValidator = packageValidator; myElements = new WeakToWeakDictionary <UnitTestElementId, IUnitTestElement>(); myUnityProcessId = new Property <int?>(lifetime, "RunViaUnityEditorStrategy.UnityProcessId"); myUnityProcessId.ForEachValue_NotNull(lifetime, (lt, processId) => { var process = myLogger.CatchIgnore(() => Process.GetProcessById(processId.NotNull())); if (process == null) { myUnityProcessId.Value = null; return; } process.EnableRaisingEvents = true; void OnProcessExited(object sender, EventArgs a) => myUnityProcessId.Value = null; lt.Bracket(() => process.Exited += OnProcessExited, () => process.Exited -= OnProcessExited); if (process.HasExited) { myUnityProcessId.Value = null; } }); myEditorProtocol.UnityModel.ViewNotNull(lifetime, (lt, model) => { if (model.UnityProcessId.HasValue()) { myUnityProcessId.Value = model.UnityProcessId.Value; } model.UnityProcessId.FlowInto(lt, myUnityProcessId, id => id); }); }
public RunViaUnityEditorStrategy(ISolution solution, IUnitTestResultManager unitTestResultManager, UnityEditorProtocol unityEditorProtocol) { mySolution = solution; myUnitTestResultManager = unitTestResultManager; myUnityEditorProtocol = unityEditorProtocol; }
public UnityNUnitServiceProvider(ISolution solution, IPsiModules psiModules, ISymbolCache symbolCache, IUnitTestElementIdFactory idFactory, IUnitTestElementManager elementManager, NUnitTestProvider provider, IUnitTestingSettings settings, ISettingsStore settingsStore, ISettingsOptimization settingsOptimization, ISettingsCache settingsCache, UnitTestingCachingService cachingService, INUnitTestParametersProvider testParametersProvider, UnityEditorProtocol editorProtocol, RunViaUnityEditorStrategy runViaUnityEditorStrategy, UnitySolutionTracker unitySolutionTracker) : base(solution, psiModules, symbolCache, idFactory, elementManager, provider, settings, settingsStore, settingsOptimization, settingsCache, cachingService, testParametersProvider) { if (solution.GetData(ProjectModelExtensions.ProtocolSolutionKey) == null) { return; } myRdUnityModel = solution.GetProtocolSolution().GetRdUnityModel(); myEditorProtocol = editorProtocol; myUnityEditorStrategy = runViaUnityEditorStrategy; myUnitySolutionTracker = unitySolutionTracker; }
public UnityNUnitServiceProvider(ISolution solution, IPsiModules psiModules, ISymbolCache symbolCache, IUnitTestElementIdFactory idFactory, IUnitTestElementManager elementManager, NUnitTestProvider provider, ISettingsStore settingsStore, ISettingsOptimization settingsOptimization, ISettingsCache settingsCache, UnitTestingCachingService cachingService, IDotNetCoreSdkResolver dotNetCoreSdkResolver, UnityEditorProtocol unityEditorProtocol, RunViaUnityEditorStrategy runViaUnityEditorStrategy, NUnitOutOfProcessUnitTestRunStrategy nUnitOutOfProcessUnitTestRunStrategy) : base(solution, psiModules, symbolCache, idFactory, elementManager, provider, settingsStore, settingsOptimization, settingsCache, cachingService, dotNetCoreSdkResolver, nUnitOutOfProcessUnitTestRunStrategy) { myUnityEditorProtocol = unityEditorProtocol; myUnityEditorStrategy = runViaUnityEditorStrategy; }
public RunViaUnityEditorStrategy(ISolution solution, IUnitTestResultManager unitTestResultManager, UnityEditorProtocol unityEditorProtocol, NUnitTestProvider unitTestProvider, IUnitTestElementIdFactory idFactory) { mySolution = solution; myUnitTestResultManager = unitTestResultManager; myUnityEditorProtocol = unityEditorProtocol; myUnitTestProvider = unitTestProvider; myIDFactory = idFactory; myElements = new WeakToWeakDictionary <UnitTestElementId, IUnitTestElement>(); }
public UnityCodeInsightFieldUsageProvider(Lifetime lifetime, UnitySolutionTracker unitySolutionTracker, ConnectionTracker connectionTracker, UnityApi unityApi, UnityHost host, BulbMenuComponent bulbMenu, IPsiFiles files, UnityHost unityHost, UnitySceneDataLocalCache sceneDataCache, ITooltipManager tooltipManager, TextControlManager textControlManager, UnityEditorProtocol protocol) : base(unitySolutionTracker, host, bulbMenu) { myLifetime = lifetime; myConnectionTracker = connectionTracker; myUnityApi = unityApi; myFiles = files; myUnityHost = unityHost; myUnitySceneDataLocalCache = sceneDataCache; myTooltipManager = tooltipManager; myTextControlManager = textControlManager; myProtocol = protocol; }
public UnityNUnitServiceProvider(ISolution solution, IPsiModules psiModules, ISymbolCache symbolCache, IUnitTestElementIdFactory idFactory, IUnitTestElementManager elementManager, NUnitTestProvider provider, ISettingsStore settingsStore, ISettingsOptimization settingsOptimization, ISettingsCache settingsCache, UnitTestingCachingService cachingService, IDotNetCoreSdkResolver dotNetCoreSdkResolver, UnityEditorProtocol editorProtocol, RunViaUnityEditorStrategy runViaUnityEditorStrategy, NUnitOutOfProcessUnitTestRunStrategy nUnitOutOfProcessUnitTestRunStrategy) : base(solution, psiModules, symbolCache, idFactory, elementManager, provider, settingsStore, settingsOptimization, settingsCache, cachingService, dotNetCoreSdkResolver, nUnitOutOfProcessUnitTestRunStrategy) { if (solution.GetData(ProjectModelExtensions.ProtocolSolutionKey) == null) { return; } myRdUnityModel = solution.GetProtocolSolution().GetRdUnityModel(); myEditorModel = editorProtocol.UnityModel; myUnityEditorStrategy = runViaUnityEditorStrategy; }
public RunViaUnityEditorStrategy(ISolution solution, IUnitTestResultManager unitTestResultManager, UnityEditorProtocol editorProtocol, NUnitTestProvider unitTestProvider, IUnitTestElementIdFactory idFactory, ISolutionSaver riderSolutionSaver, UnityRefresher unityRefresher, NotificationsModel notificationsModel, UnityHost unityHost, ILogger logger ) { mySolution = solution; myUnitTestResultManager = unitTestResultManager; myEditorProtocol = editorProtocol; myUnitTestProvider = unitTestProvider; myIDFactory = idFactory; myRiderSolutionSaver = riderSolutionSaver; myUnityRefresher = unityRefresher; myNotificationsModel = notificationsModel; myUnityHost = unityHost; myLogger = logger; myElements = new WeakToWeakDictionary <UnitTestElementId, IUnitTestElement>(); }
public static bool IsUnityUnitTestStrategy(UnitySolutionTracker unitySolutionTracker, RdUnityModel rdUnityModel, UnityEditorProtocol editorProtocol) { if (!unitySolutionTracker.IsUnityProjectFolder.HasTrueValue()) { return(false); } // first run from gutter mark should try to run in Unity by default. https://github.com/JetBrains/resharper-unity/issues/605 return(!rdUnityModel.UnitTestPreference.HasValue() && editorProtocol.UnityModel.Value != null || (rdUnityModel.UnitTestPreference.HasValue() && rdUnityModel.UnitTestPreference.Value != UnitTestLaunchPreference.NUnit)); }
public GeneratedFileNotification(Lifetime lifetime, UnityHost unityHost, UnitySolutionTracker solutionTracker, ConnectionTracker connectionTracker, UnityEditorProtocol editorProtocol, ISolution solution, AsmDefNameCache asmDefNameCache, [CanBeNull] TextControlHost textControlHost = null, [CanBeNull] SolutionLifecycleHost solutionLifecycleHost = null, [CanBeNull] NotificationPanelHost notificationPanelHost = null) { if (solutionLifecycleHost == null) { return; } if (!solutionTracker.IsUnityGeneratedProject.Value) { return; } var fullStartupFinishedLifetimeDefinition = new LifetimeDefinition(lifetime); solutionLifecycleHost.FullStartupFinished.Advise(fullStartupFinishedLifetimeDefinition.Lifetime, _ => { textControlHost.ViewHostTextControls(lifetime, (lt, id, host) => { var projectFile = host.ToProjectFile(solution); if (projectFile == null) { return; } if (projectFile.Location.ExtensionNoDot.Equals("csproj", StringComparison.OrdinalIgnoreCase)) { connectionTracker.State.View(lt, (unityStateLifetime, state) => { var name = projectFile.Location.NameWithoutExtension; IPath path; using (ReadLockCookie.Create()) { path = asmDefNameCache.GetPathFor(name)?.TryMakeRelativeTo(solution.SolutionFilePath); } var elements = new LocalList <INotificationPanelHyperlink>(); if (path != null && state != UnityEditorState.Disconnected) { var strPath = path.Components.Join("/").RemoveStart("../"); elements.Add(new NotificationPanelCallbackHyperlink(unityStateLifetime, "Edit corresponding .asmdef in Unity", false, () => { unityHost.PerformModelAction(t => t.AllowSetForegroundWindow.Start(unityStateLifetime, Unit.Instance).Result.Advise(unityStateLifetime, __ => { editorProtocol.UnityModel.Value?.ShowFileInUnity.Fire(strPath); })); })); } notificationPanelHost.AddNotificationPanel(unityStateLifetime, host, new NotificationPanel("This file is generated by Unity. Any changes made will be lost.", "UnityGeneratedFile", elements.ToArray())); }); } }); fullStartupFinishedLifetimeDefinition.Terminate(); }); }