コード例 #1
0
ファイル: TestCache.cs プロジェクト: sergeyt/karma-resharper
 object ICache.Load(IProgressIndicator progress, bool enablePersistence)
 {
     if (enablePersistence)
     {
         _persistentCache = new SimplePersistentCache <string>(_shellLocks, 1, "KarmaTest", _psiConfiguration);
         if (_persistentCache.Load(progress, _persistentIndexManager,
                                   (file, reader) => reader.ReadString(),
                                   (file, serialized) =>
         {
             lock (_lock)
             {
                 var info = new PersistentUnitTestSessionInfo(_solution, serialized);
                 foreach (var element in info.Elements)
                 {
                     _elementsInFiles.AddValue(file, element);
                 }
                 _processedFiles.Add(file);
                 _persistentCache.AddDataToSave(file, serialized);
             }
         }) != LoadResult.OK)
         {
             lock (_lock)
             {
                 _elementsInFiles.Clear();
                 _processedFiles.Clear();
             }
         }
     }
     return(null);
 }
コード例 #2
0
ファイル: TestCache.cs プロジェクト: sergeyt/karma-resharper
 public void ReanalyzeDirtyFiles()
 {
     lock (_lock)
     {
         foreach (var file in _dirtyFiles.Where(x => x.IsValid()))
         {
             using (_shellLocks.UsingReadLock())
             {
                 ICache cache = this;
                 cache.Merge(file, cache.Build(file, false));
             }
         }
         _dirtyFiles.Clear();
     }
 }
コード例 #3
0
        private List <IMetadataMethod> GetAllTestMethods(IMetadataTypeInfo type)
        {
            myTempMethods.Clear();
            myTempMethodsNames.Clear();

            var currentType = type;

            while (currentType != null)
            {
                foreach (var method in currentType.GetMethods())
                {
                    if (method.IsVirtual)
                    {
                        if (myTempMethodsNames.Contains(method.Name))
                        {
                            continue;
                        }
                        if (!method.IsNewSlot)
                        {
                            myTempMethodsNames.Add(method.Name);
                        }
                    }

                    if (IsTestMethod(method))
                    {
                        myTempMethods.Add(method);
                    }
                }

                var baseOfCurrentType = currentType.Base;
                currentType = (baseOfCurrentType != null) ? baseOfCurrentType.Type : null;
            }

            return(myTempMethods);
        }
コード例 #4
0
        public void Explore(IMetadataAssembly assembly, CancellationToken token)
        {
            try
            {
                myTempMethods      = new List <IMetadataMethod>(200);
                myTempMethodsNames = new JetHashSet <string>(200);

                foreach (var type in assembly.GetTypes())
                {
                    ExploreType(type, assembly, token);
                }
            }

            finally
            {
                if (myTempMethods != null)
                {
                    myTempMethods.Clear();
                    myTempMethods = null;
                }
                if (myTempMethodsNames != null)
                {
                    myTempMethodsNames.Clear();
                    myTempMethods = null;
                }
            }
        }
コード例 #5
0
 void ICache.SyncUpdate(bool underTransaction)
 {
     lock (lockObject)
     {
         foreach (var psiSourceFile in dirtyFiles)
         {
             registrationsMap.RemoveKey(psiSourceFile);
         }
         dirtyFiles.Clear();
     }
 }
コード例 #6
0
        public void SyncUpdate(bool underTransaction)
        {
            if (underTransaction)
            {
                return;
            }

            lock (_lockObject)
            {
                foreach (var sourceFile in _dirtyFiles.ToList())
                {
                    if (sourceFile.IsValid())
                    {
                        Merge(sourceFile, BuildData(sourceFile));
                    }
                }
                _dirtyFiles.Clear();
            }
        }
 public void Clear()
 {
     myInputElements.Clear();
 }