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);
            });
        }
示例#2
0
        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,
                                         FrontendBackendHost frontendBackendHost,
                                         BackendUnityHost backendUnityHost,
                                         RunViaUnityEditorStrategy runViaUnityEditorStrategy,
                                         UnitySolutionTracker unitySolutionTracker)
            : base(solution, psiModules, symbolCache, idFactory, elementManager, provider, settings, settingsStore,
                   settingsOptimization, settingsCache, cachingService, testParametersProvider)
        {
            // Only in tests
            if (!frontendBackendHost.IsAvailable)
            {
                return;
            }

            myFrontendBackendModel = frontendBackendHost.Model.NotNull("frontendBackendHost.Model != null");
            myBackendUnityHost     = backendUnityHost;
            myUnityEditorStrategy  = runViaUnityEditorStrategy;
            myUnitySolutionTracker = unitySolutionTracker;
        }
示例#3
0
        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 static UnitTestElementId CreateId(IUnitTestElementIdFactory elementIdFactory, IUnitTestProvider provider, BehaviorElement behaviorElement, string fieldName)
        {
            var result = new[] { behaviorElement.Id, fieldName };
            var id     = result.Where(s => !string.IsNullOrEmpty(s)).AggregateString(".");

            return(elementIdFactory.Create(provider, behaviorElement.GetProject(), id));
        }
示例#5
0
 public UnityTestsExploration(UnitTestAttributeCache unitTestAttributeCache, IProject project,
                              IUnitTestElementsObserver observer, IUnitTestElementIdFactory unitTestElementIdFactory,
                              UnityTestProvider unityTestProvider, IUnitTestElementManager unitTestElementManager, UnityNUnitServiceProvider serviceProvider)
 {
     myUnitTestAttributeCache = unitTestAttributeCache;
     myProject           = project;
     myUnitTestCollector = observer;
     myElementFactory    = new UnityTestElementFactory(unitTestElementIdFactory, unityTestProvider, unitTestElementManager, serviceProvider);
 }
        public RunViaUnityEditorStrategy(ISolution solution,
                                         IUnitTestResultManager unitTestResultManager,
                                         BackendUnityHost backendUnityHost,
                                         NUnitTestProvider unitTestProvider,
                                         IUnitTestElementIdFactory idFactory,
                                         ISolutionSaver riderSolutionSaver,
                                         UnityRefresher unityRefresher,
                                         NotificationsModel notificationsModel,
                                         FrontendBackendHost frontendBackendHost,
                                         ILogger logger,
                                         Lifetime lifetime,
                                         PackageValidator packageValidator,
                                         JetBrains.Application.ActivityTrackingNew.UsageStatistics usageStatistics)
        {
            mySolution = solution;
            myUnitTestResultManager = unitTestResultManager;
            myBackendUnityHost      = backendUnityHost;
            myUnitTestProvider      = unitTestProvider;
            myIDFactory             = idFactory;
            myRiderSolutionSaver    = riderSolutionSaver;
            myUnityRefresher        = unityRefresher;
            myNotificationsModel    = notificationsModel;
            myFrontendBackendHost   = frontendBackendHost;
            myLogger           = logger;
            myLifetime         = lifetime;
            myPackageValidator = packageValidator;
            myUsageStatistics  = usageStatistics;

            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;
                }
            });

            myBackendUnityHost.BackendUnityModel.ViewNotNull(lifetime, (lt, model) =>
            {
                // This will set the current value, if it exists
                model.UnityApplicationData.FlowInto(lt, myUnityProcessId, data => data.UnityProcessId);
            });
        }
示例#7
0
 public UnityTestElementFactory(IUnitTestElementIdFactory unitTestElementIdFactory,
                                UnityTestProvider unityTestProvider,
                                IUnitTestElementManager elementManager, UnityNUnitServiceProvider serviceProvider)
 {
     myUnitTestElementIdFactory = unitTestElementIdFactory;
     myElementManager           = elementManager;
     myServiceProvider          = serviceProvider;
     myElements         = new WeakToWeakDictionary <UnitTestElementId, IUnitTestElement>();
     myUnitTestProvider = unityTestProvider;
 }
 public BehaviorSpecificationFactory(MSpecUnitTestProvider provider,
                                     IUnitTestElementManager manager,
                                     UnitTestingCachingService cachingService,
                                     IUnitTestElementIdFactory elementIdFactory)
 {
     this._elementIdFactory = elementIdFactory;
     this._provider         = provider;
     _manager        = manager;
     _cachingService = cachingService;
 }
示例#9
0
 public ServiceProvider(
     BurplessTestProvider provider,
     ISolution solution,
     IUnitTestElementIdFactory elementIdFactory,
     OutOfProcessTestRunStrategy defaultRunStrategy)
 {
     _provider           = provider;
     _solution           = solution;
     _elementIdFactory   = elementIdFactory;
     _defaultRunStrategy = defaultRunStrategy;
 }
示例#10
0
 public TestElementFactory(ITestProvider testProvider, IUnitTestElementManager unitTestElementManager, IUnitTestElementIdFactory unitTestElementIdFactory)
 {
     _testProvider             = testProvider;
     _unitTestElementManager   = unitTestElementManager;
     _unitTestElementIdFactory = unitTestElementIdFactory;
     _factoryMethods           = new Dictionary <string, Func <ITestEntity, IUnitTestElement> >
     {
         { typeof(ClassTestElement).FullName, GetOrCreateClassTestElementRecursively },
         { typeof(ChildTestElement).FullName, GetOrCreateChildTest }
     };
 }
示例#11
0
 // ReSharper disable once SuggestBaseTypeForParameter
 public XunitServiceProvider(XunitTestProvider provider,
                             IUnitTestElementManager elementManager,
                             IUnitTestElementIdFactory elementIdFactory,
                             IUnitTestElementCategoryFactory categoryFactory,
                             UnitTestingCachingService cachingService)
 {
     this.elementIdFactory = elementIdFactory;
     CachingService        = cachingService;
     ElementManager        = elementManager;
     CategoryFactory       = categoryFactory;
     Provider = provider;
 }
 // ReSharper disable once SuggestBaseTypeForParameter
 public XunitServiceProvider(XunitTestProvider provider,
                             IUnitTestElementManager elementManager,
                             IUnitTestElementIdFactory elementIdFactory,
                             IUnitTestElementCategoryFactory categoryFactory,
                             UnitTestingCachingService cachingService)
 {
     this.elementIdFactory = elementIdFactory;
     CachingService = cachingService;
     ElementManager = elementManager;
     CategoryFactory = categoryFactory;
     Provider = provider;
 }
示例#13
0
 public ContextSpecificationFactory(MSpecUnitTestProvider provider,
                                    IUnitTestElementManager manager,
                                    IUnitTestElementIdFactory elementIdFactory,
                                    UnitTestingCachingService cachingService,
                                    ElementCache cache)
 {
     this._manager          = manager;
     this._elementIdFactory = elementIdFactory;
     this._cachingService   = cachingService;
     this._provider         = provider;
     this._cache            = cache;
 }
 public BehaviorSpecificationFactory(MSpecUnitTestProvider provider,
                                     IUnitTestElementManager manager,
                                     IPsi psiModuleManager,
                                     ICache cacheManager,
                                     IUnitTestElementIdFactory elementIdFactory)
 {
     this._manager = manager;
     this._psiModuleManager = psiModuleManager;
     this._cacheManager = cacheManager;
     this._elementIdFactory = elementIdFactory;
     this._provider = provider;
 }
 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;
 }
示例#16
0
        public static UnitTestElementId CreateId(IUnitTestElementIdFactory elementIdFactory, IUnitTestProvider provider, IProject project, string subject, string typeName, IEnumerable <string> tags)
        {
            string tagsAsString = null;

            if (tags != null)
            {
                tagsAsString = tags.AggregateString("", "|", (builder, tag) => builder.Append(tag));
            }
            var result = new[] { subject, typeName, tagsAsString };
            var id     = result.Where(s => !string.IsNullOrEmpty(s)).AggregateString(".");

            return(elementIdFactory.Create(provider, project, id));
        }
示例#17
0
 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 ContextSpecificationFactory(MSpecUnitTestProvider provider,
                                    IUnitTestElementManager manager,
                                    IUnitTestElementIdFactory elementIdFactory,
                                    IPsi psiModuleManager,
                                    ICache cacheManager,
                                    ElementCache cache)
 {
     this._manager = manager;
     this._elementIdFactory = elementIdFactory;
     this._psiModuleManager = psiModuleManager;
     this._cacheManager = cacheManager;
     this._provider = provider;
     this._cache = cache;
 }
 public UnityTestsSourceExplorer([NotNull] ISolution solution, [NotNull] UnityTestProvider provider, ClrLanguagesKnown clrLanguagesKnown,
                                 [NotNull] AssemblyToAssemblyReferencesResolveManager resolveManager, IUnitTestElementIdFactory idFactory,
                                 [NotNull] ResolveContextManager resolveContextManager, [NotNull] ILogger logger,
                                 UnitTestAttributeCache unitTestAttributeCache, IUnitTestElementIdFactory unitTestElementIdFactory, IUnitTestElementManager unitTestElementManager, UnityNUnitServiceProvider serviceProvider)
     : base(solution, provider, resolveManager, resolveContextManager, logger)
 {
     myClrLanguagesKnown        = clrLanguagesKnown;
     myIdFactory                = idFactory;
     myLogger                   = logger;
     myUnitTestAttributeCache   = unitTestAttributeCache;
     myUnitTestElementIdFactory = unitTestElementIdFactory;
     myUnityTestProvider        = provider;
     myUnitTestElementManager   = unitTestElementManager;
     myServiceProvider          = serviceProvider;
 }
示例#20
0
 public TestElementFactory(
 ITestProvider testProvider,
 IUnitTestElementManager unitTestElementManager,
 IUnitTestElementIdFactory unitTestElementIdFactory,
 IUnitTestElementCategoryFactory unitTestElementCategoryFactory)
 {
     _testProvider = testProvider;
       _unitTestElementManager = unitTestElementManager;
       _unitTestElementIdFactory = unitTestElementIdFactory;
       _unitTestElementCategoryFactory = unitTestElementCategoryFactory;
       _factoryMethods = new Dictionary<string, Func<ITestEntity, IUnitTestElement>>
                 {
                     { typeof (ClassTestElement).FullName, GetOrCreateClassTestElementRecursively },
                     { typeof (ChildTestElement).FullName, GetOrCreateChildTest }
                 };
 }
示例#21
0
        public MspecServiceProvider(
            MspecTestProvider provider,
            ISolution solution,
            UnitTestingCachingService cachingService,
            Lifetime lifetime,
            IUnitTestElementManager elementManager,
            IUnitTestElementIdFactory elementIdFactory,
            IUnitTestElementCategoryFactory categoryFactory,
            IDotNetCoreSdkResolver dotNetCoreSdkResolver)
        {
            _provider              = provider;
            _solution              = solution;
            _elementIdFactory      = elementIdFactory;
            _dotNetCoreSdkResolver = dotNetCoreSdkResolver;
            CategoryFactory        = categoryFactory;
            CachingService         = cachingService;
            ElementManager         = elementManager;

            AddElementHandler(lifetime);
        }
示例#22
0
        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 UnitTestElementId CreateId(IUnitTestElementIdFactory elementIdFactory, IUnitTestProvider provider, BehaviorElement behaviorElement, string fieldName)
 {
     var result = new[] { behaviorElement.Id, fieldName };
     var id = result.Where(s => !string.IsNullOrEmpty(s)).AggregateString(".");
     return elementIdFactory.Create(provider, new PersistentProjectId(behaviorElement.GetProject()), id);
 }
示例#25
0
 public TestIdentity(ITestProvider provider, IProject project, IIdentity wrappedIdentity, IUnitTestElementIdFactory unitTestElementIdFactory)
     : this(provider, wrappedIdentity)
 {
     _elementId = unitTestElementIdFactory.Create(_provider, new PersistentProjectId(project), Absolute);
 }
示例#26
0
 public TestIdentity(ITestProvider provider, IProject project, IIdentity wrappedIdentity, IUnitTestElementIdFactory unitTestElementIdFactory)
     : this(provider, wrappedIdentity)
 {
     _elementId = unitTestElementIdFactory.Create(_provider, new PersistentProjectId(project), Absolute);
 }