internal SinkManager(TaggerProvider provider, ITableDataSink sink) { _provider = provider; _sink = sink; _provider.AddSinkManager(this); }
public void SetUp() { daemonMock = new Mock <ISonarLintDaemon>(); taggerProvider = CreateTaggerProvider(); mockedJavascriptDocumentFooJs = CreateDocumentMock("foo.js"); javascriptLanguage = new[] { SonarLanguage.Javascript }; }
public void AnalysisTimeout(int envSettingsResponse, int expectedTimeout) { var envSettingsMock = new Mock <IEnvironmentSettings>(); envSettingsMock.Setup(x => x.AnalysisTimeoutInMs()).Returns(envSettingsResponse); TaggerProvider.GetAnalysisTimeoutInMilliseconds(envSettingsMock.Object).Should().Be(expectedTimeout); }
public void FilterIssueTrackersByPath_NullOrEmptyPaths_AllTrackersReturned(string[] filePaths) { var trackers = CreateMockedIssueTrackers("any", "any2"); var actual = TaggerProvider.FilterIssuesTrackersByPath(trackers, filePaths); actual.Should().BeEquivalentTo(trackers); }
public void SetUp() { mockAnalyzerController = new Mock <IAnalyzerController>(); taggerProvider = CreateTaggerProvider(); mockedJavascriptDocumentFooJs = CreateDocumentMock("foo.js"); javascriptLanguage = new[] { AnalysisLanguage.Javascript }; }
public void FilterIssueTrackersByPath_WithPaths_SingleMatch_SingleTrackerReturned() { var trackers = CreateMockedIssueTrackers("file1.txt", "c:\\aaa\\file2.cpp", "d:\\bbb\\file3.xxx"); var actual = TaggerProvider.FilterIssuesTrackersByPath(trackers, new string[] { "file1.txt" }); actual.Should().BeEquivalentTo(trackers[0]); }
public void FilterIssueTrackersByPath_WithPaths_NoMatches_EmptyListReturned() { var trackers = CreateMockedIssueTrackers("file1.txt", "c:\\aaa\\file2.cpp"); var actual = TaggerProvider.FilterIssuesTrackersByPath(trackers, new string[] { "no matches", "file1.wrongextension" }); actual.Should().BeEmpty(); }
private TaggerProvider CreateTaggerProvider() { var tableManagerProviderMock = new Mock <ITableManagerProvider>(); tableManagerProviderMock.Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var textDocFactoryServiceMock = new Mock <ITextDocumentFactoryService>(); var languageRecognizer = Mock.Of <ISonarLanguageRecognizer>(); // DTE object setup var mockProject = new Mock <Project>(); mockProject.Setup(p => p.Name).Returns("MyProject"); mockProject.Setup(p => p.FileName).Returns("MyProject.csproj"); var project = mockProject.Object; var mockProjectItem = new Mock <ProjectItem>(); mockProjectItem.Setup(s => s.ContainingProject).Returns(project); var projectItem = mockProjectItem.Object; mockSolution = new Mock <Solution>(); mockSolution.Setup(s => s.FindProjectItem(It.IsAny <string>())) .Returns(projectItem); var mockDTE = new Mock <DTE>(); mockDTE.Setup(d => d.Solution).Returns(mockSolution.Object); var mockVsSolution = new Mock <IVsSolution5>(); mockVsSolution.Setup(x => x.GetGuidOfProjectFile("MyProject.csproj")) .Returns(projectGuid); var serviceProvider = new ConfigurableServiceProvider(); serviceProvider.RegisterService(typeof(DTE), mockDTE.Object); serviceProvider.RegisterService(typeof(IVsStatusbar), Mock.Of <IVsStatusbar>()); serviceProvider.RegisterService(typeof(SVsSolution), mockVsSolution.Object); var mockAnalysisRequester = new Mock <IAnalysisRequester>(); var mockAnalysisScheduler = new Mock <IScheduler>(); mockAnalysisScheduler.Setup(x => x.Schedule(It.IsAny <string>(), It.IsAny <Action <CancellationToken> >(), It.IsAny <int>())) .Callback((string file, Action <CancellationToken> analyze, int timeout) => analyze(CancellationToken.None)); var provider = new TaggerProvider(mockSonarErrorDataSource.Object, textDocFactoryServiceMock.Object, issuesFilter.Object, mockAnalyzerController.Object, serviceProvider, languageRecognizer, mockAnalysisRequester.Object, Mock.Of <IAnalysisIssueVisualizationConverter>(), logger, mockAnalysisScheduler.Object); return(provider); }
public void SetUp() { mockAnalyzerController = new Mock <IAnalyzerController>(); issuesFilter = new Mock <IIssuesFilter>(); taggerProvider = CreateTaggerProvider(); mockedJavascriptDocumentFooJs = CreateDocumentMock("foo.js"); javascriptLanguage = new[] { AnalysisLanguage.Javascript }; testSubject = new TextBufferIssueTracker(taggerProvider.dte, taggerProvider, mockedJavascriptDocumentFooJs.Object, javascriptLanguage, new TestLogger(), issuesFilter.Object); }
private TaggerProvider CreateTaggerProvider() { var tableManagerProviderMock = new Mock <ITableManagerProvider>(); tableManagerProviderMock.Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var textDocFactoryServiceMock = new Mock <ITextDocumentFactoryService>(); var contentTypeRegistryServiceMock = new Mock <IContentTypeRegistryService>(); contentTypeRegistryServiceMock.Setup(c => c.ContentTypes).Returns(Enumerable.Empty <IContentType>()); var fileExtensionRegistryServiceMock = new Mock <IFileExtensionRegistryService>(); var languageRecognizer = new SonarLanguageRecognizer(contentTypeRegistryServiceMock.Object, fileExtensionRegistryServiceMock.Object); // DTE object setup var mockProject = new Mock <Project>(); mockProject.Setup(p => p.Name).Returns("MyProject"); var project = mockProject.Object; var mockProjectItem = new Mock <ProjectItem>(); mockProjectItem.Setup(s => s.ContainingProject).Returns(project); var projectItem = mockProjectItem.Object; var mockSolution = new Mock <Solution>(); mockSolution.Setup(s => s.FindProjectItem(It.IsAny <string>())).Returns(projectItem); var solution = mockSolution.Object; var mockDTE = new Mock <DTE>(); mockDTE.Setup(d => d.Solution).Returns(solution); var mockVsStatusBar = new Mock <Microsoft.VisualStudio.Shell.Interop.IVsStatusbar>(); var serviceProvider = new ConfigurableServiceProvider(); serviceProvider.RegisterService(typeof(DTE), mockDTE.Object); serviceProvider.RegisterService(typeof(Microsoft.VisualStudio.Shell.Interop.IVsStatusbar), mockVsStatusBar.Object); var mockAnalysisRequester = new Mock <IAnalysisRequester>(); var mockAnalysisScheduler = new Mock <IScheduler>(); mockAnalysisScheduler.Setup(x => x.Schedule(It.IsAny <string>(), It.IsAny <Action <CancellationToken> >())) .Callback((string file, Action <CancellationToken> analyze) => analyze(CancellationToken.None)); var provider = new TaggerProvider(tableManagerProviderMock.Object, textDocFactoryServiceMock.Object, issuesFilter.Object, mockAnalyzerController.Object, serviceProvider, languageRecognizer, mockAnalysisRequester.Object, new TestLogger(), mockAnalysisScheduler.Object); return(provider); }
public void SetUp() { // minimal setup to create a tagger mockSonarErrorDataSource = new Mock <ISonarErrorListDataSource>(); mockAnalyzerController = new Mock <IAnalyzerController>(); mockAnalyzerController.Setup(x => x.IsAnalysisSupported(It.IsAny <IEnumerable <AnalysisLanguage> >())).Returns(true); analyzerController = this.mockAnalyzerController.Object; var mockProject = new Mock <Project>(); mockProject.Setup(p => p.Name).Returns("MyProject"); var project = mockProject.Object; var mockProjectItem = new Mock <ProjectItem>(); mockProjectItem.Setup(s => s.ContainingProject).Returns(project); var projectItem = mockProjectItem.Object; var mockSolution = new Mock <Solution>(); mockSolution.Setup(s => s.FindProjectItem(It.IsAny <string>())).Returns(projectItem); var solution = mockSolution.Object; var mockDTE = new Mock <DTE>(); mockDTE.Setup(d => d.Solution).Returns(solution); var dte = mockDTE.Object; var mockServiceProvider = new Mock <IServiceProvider>(); mockServiceProvider.Setup(s => s.GetService(typeof(DTE))).Returns(dte); mockServiceProvider.Setup(s => s.GetService(typeof(SVsSolution))).Returns(Mock.Of <IVsSolution5>()); var serviceProvider = mockServiceProvider.Object; dummyDocumentFactoryService = new DummyTextDocumentFactoryService(); logger = new TestLogger(); mockSonarLanguageRecognizer = new Mock <ISonarLanguageRecognizer>(); var mockAnalysisRequester = new Mock <IAnalysisRequester>(); mockAnalysisScheduler = new Mock <IScheduler>(); mockAnalysisScheduler.Setup(x => x.Schedule(It.IsAny <string>(), It.IsAny <Action <CancellationToken> >(), It.IsAny <int>())) .Callback((string file, Action <CancellationToken> analyze, int timeout) => analyze(CancellationToken.None)); var issuesFilter = new Mock <IIssuesFilter>(); this.provider = new TaggerProvider(mockSonarErrorDataSource.Object, dummyDocumentFactoryService, issuesFilter.Object, analyzerController, serviceProvider, mockSonarLanguageRecognizer.Object, mockAnalysisRequester.Object, Mock.Of <IAnalysisIssueVisualizationConverter>(), logger, mockAnalysisScheduler.Object); }
public void SetUp() { mockSonarErrorDataSource = new Mock <ISonarErrorListDataSource>(); mockAnalyzerController = new Mock <IAnalyzerController>(); issuesFilter = new Mock <IIssuesFilter>(); taggerProvider = CreateTaggerProvider(); mockDocumentTextBuffer = CreateTextBufferMock(); mockedJavascriptDocumentFooJs = CreateDocumentMock("foo.js", mockDocumentTextBuffer.Object); javascriptLanguage = new[] { AnalysisLanguage.Javascript }; projectGuid = Guid.NewGuid(); testSubject = CreateTextBufferIssueTracker(); }
public void FilterIssueTrackersByPath_WithPaths_MultipleMatches_MultipleTrackersReturned() { var trackers = CreateMockedIssueTrackers("file1.txt", "c:\\aaa\\file2.cpp", "d:\\bbb\\file3.xxx"); var actual = TaggerProvider.FilterIssuesTrackersByPath(trackers, new string[] { "file1.txt", "D:\\BBB\\FILE3.xxx" // match should be case-insensitive }); actual.Should().BeEquivalentTo(trackers[0], trackers[2]); }
private TaggerProvider CreateTaggerProvider() { var tableManagerProviderMock = new Mock <ITableManagerProvider>(); tableManagerProviderMock.Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var textDocFactoryServiceMock = new Mock <ITextDocumentFactoryService>(); var settingsMock = new Mock <ISonarLintSettings>(); var contentTypeRegistryServiceMock = new Mock <IContentTypeRegistryService>(); contentTypeRegistryServiceMock.Setup(c => c.ContentTypes).Returns(Enumerable.Empty <IContentType>()); var fileExtensionRegistryServiceMock = new Mock <IFileExtensionRegistryService>(); var languageRecognizer = new SonarLanguageRecognizer(contentTypeRegistryServiceMock.Object, fileExtensionRegistryServiceMock.Object); // DTE object setup var mockProject = new Mock <Project>(); mockProject.Setup(p => p.Name).Returns("MyProject"); var project = mockProject.Object; var mockProjectItem = new Mock <ProjectItem>(); mockProjectItem.Setup(s => s.ContainingProject).Returns(project); var projectItem = mockProjectItem.Object; var mockSolution = new Mock <Solution>(); mockSolution.Setup(s => s.FindProjectItem(It.IsAny <string>())).Returns(projectItem); var solution = mockSolution.Object; var mockDTE = new Mock <DTE>(); mockDTE.Setup(d => d.Solution).Returns(solution); var dte = mockDTE.Object; var serviceProvider = new ConfigurableServiceProvider(); serviceProvider.RegisterService(typeof(DTE), mockDTE.Object); var provider = new TaggerProvider(tableManagerProviderMock.Object, textDocFactoryServiceMock.Object, daemonMock.Object, serviceProvider, settingsMock.Object, languageRecognizer, new TestLogger()); return(provider); }
private void OnDiagnosticsUpdatedOnForeground( object sender, DiagnosticsUpdatedArgs e, SourceText sourceText, ITextSnapshot editorSnapshot) { this.AssertIsForeground(); if (_disposed) { return; } // Find the appropriate async tagger for this diagnostics id, and let it know that // there were new diagnostics produced for it. var id = e.Id; ValueTuple <TaggerProvider, IAccurateTagger <TTag> > providerAndTagger; if (!_idToProviderAndTagger.TryGetValue(id, out providerAndTagger)) { // We didn't have an existing tagger for this diagnostic id. If there are no actual // diagnostics being reported, then don't bother actually doing anything. This saves // us from creating a lot of objects, and subscribing to tons of events that we don't // actually need (since we don't even have any diagnostics to show!). if (e.Diagnostics.Length == 0) { return; } // Didn't have an existing tagger for this diagnostic id. Make a new one // and cache it so we can use it in the future. var taggerProvider = new TaggerProvider(_owner); var tagger = taggerProvider.CreateTagger <TTag>(_subjectBuffer); providerAndTagger = ValueTuple.Create(taggerProvider, tagger); _idToProviderAndTagger[id] = providerAndTagger; // Register for changes from the underlying tagger. When it tells us about // changes, we'll let anyone know who is registered with us. tagger.TagsChanged += OnUnderlyingTaggerTagsChanged; } // Let the provier know that there are new diagnostics. It will then // handle all the async processing of those diagnostics. providerAndTagger.Item1.OnDiagnosticsUpdated(e, sourceText, editorSnapshot); }
public void SetUp() { // minimal setup to create a tagger this.mockDaemon = new Mock <ISonarLintDaemon>(); mockDaemon.Setup(d => d.IsRunning).Returns(true); this.daemon = mockDaemon.Object; var mockTableManagerProvider = new Mock <ITableManagerProvider>(); mockTableManagerProvider.Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var tableManagerProvider = mockTableManagerProvider.Object; var mockTextDocumentFactoryService = new Mock <ITextDocumentFactoryService>(); var textDocumentFactoryService = mockTextDocumentFactoryService.Object; var mockTextBuffer = new Mock <ITextBuffer>(); this.textBuffer = mockTextBuffer.Object; var mockTextDataModel = new Mock <ITextDataModel>(); var textDataModel = mockTextDataModel.Object; var mockTextView = new Mock <ITextView>(); mockTextView.Setup(t => t.TextBuffer).Returns(textBuffer); mockTextView.Setup(t => t.TextDataModel).Returns(textDataModel); this.textView = mockTextView.Object; this.mockTextDocument = new Mock <ITextDocument>(); mockTextDocument.Setup(d => d.FilePath).Returns(filename); mockTextDocument.Setup(d => d.Encoding).Returns(Encoding.UTF8); var textDocument = mockTextDocument.Object; mockTextDocumentFactoryService .Setup(t => t.TryGetTextDocument(It.IsAny <ITextBuffer>(), out textDocument)) .Returns(true); this.provider = new TaggerProvider(tableManagerProvider, textDocumentFactoryService, daemon); }
public void Initialize() { var mockTableManagerProvider = new Mock <ITableManagerProvider>(); mockTableManagerProvider .Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var tableManagerProvider = mockTableManagerProvider.Object; var mockTextDocumentFactoryService = new Mock <ITextDocumentFactoryService>(); var textDocumentFactoryService = mockTextDocumentFactoryService.Object; _mockTextDocument = new Mock <ITextDocument>(); // ReSharper disable once RedundantAssignment var textDocument = _mockTextDocument.Object; mockTextDocumentFactoryService .Setup(t => t.TryGetTextDocument(It.IsAny <ITextBuffer>(), out textDocument)) .Returns(true); _mockOptions = new Mock <IVisualLinterOptions>(); _mockOptions .Setup(o => o.EnableJavaScriptLanguageSupport) .Returns(true); var visualLinterOptions = _mockOptions.Object; var mockLinter = new Mock <ILinter>(); var linter = mockLinter.Object; _provider = new TaggerProvider( tableManagerProvider, textDocumentFactoryService, visualLinterOptions, linter); }
public TestableTextBufferIssueTracker(DTE dte, TaggerProvider provider, ITextDocument document, IEnumerable <AnalysisLanguage> detectedLanguages, IIssuesFilter issuesFilter, ISonarErrorListDataSource sonarErrorDataSource, IAnalysisIssueVisualizationConverter converter, IVsSolution5 vsSolution, ILogger logger) : base(dte, provider, document, detectedLanguages, issuesFilter, sonarErrorDataSource, converter, vsSolution, logger) { }
public void SetUp() { // minimal setup to create a tagger mockAnalyzerController = new Mock <IAnalyzerController>(); mockAnalyzerController.Setup(x => x.IsAnalysisSupported(It.IsAny <IEnumerable <AnalysisLanguage> >())).Returns(true); analyzerController = this.mockAnalyzerController.Object; var mockTableManagerProvider = new Mock <ITableManagerProvider>(); mockTableManagerProvider.Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var tableManagerProvider = mockTableManagerProvider.Object; var mockContentTypeRegistryService = new Mock <IContentTypeRegistryService>(); mockContentTypeRegistryService.Setup(c => c.ContentTypes).Returns(Enumerable.Empty <IContentType>()); var contentTypeRegistryService = mockContentTypeRegistryService.Object; var mockProject = new Mock <Project>(); mockProject.Setup(p => p.Name).Returns("MyProject"); var project = mockProject.Object; var mockProjectItem = new Mock <ProjectItem>(); mockProjectItem.Setup(s => s.ContainingProject).Returns(project); var projectItem = mockProjectItem.Object; var mockSolution = new Mock <Solution>(); mockSolution.Setup(s => s.FindProjectItem(It.IsAny <string>())).Returns(projectItem); var solution = mockSolution.Object; var mockDTE = new Mock <DTE>(); mockDTE.Setup(d => d.Solution).Returns(solution); var dte = mockDTE.Object; var mockServiceProvider = new Mock <IServiceProvider>(); mockServiceProvider.Setup(s => s.GetService(typeof(DTE))).Returns(dte); var serviceProvider = mockServiceProvider.Object; var mockFileExtensionRegistryService = new Mock <IFileExtensionRegistryService>(); var fileExtensionRegistryService = mockFileExtensionRegistryService.Object; var mockJsContentType = new Mock <IContentType>(); mockJsContentType.Setup(c => c.IsOfType(It.IsAny <string>())).Returns(false); mockJsContentType.Setup(c => c.IsOfType("JavaScript")).Returns(true); this.jsContentType = mockJsContentType.Object; dummyDocumentFactoryService = new DummyTextDocumentFactoryService(); mockLogger = new Mock <ILogger>(); var sonarLanguageRecognizer = new SonarLanguageRecognizer(contentTypeRegistryService, fileExtensionRegistryService); var mockAnalysisRequester = new Mock <IAnalysisRequester>(); this.provider = new TaggerProvider(tableManagerProvider, dummyDocumentFactoryService, analyzerController, serviceProvider, sonarLanguageRecognizer, mockAnalysisRequester.Object, mockLogger.Object); }
public void SetUp() { // minimal setup to create a tagger this.mockDaemon = new Mock <ISonarLintDaemon>(); mockDaemon.Setup(d => d.IsRunning).Returns(true); this.daemon = mockDaemon.Object; var mockTableManagerProvider = new Mock <ITableManagerProvider>(); mockTableManagerProvider.Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var tableManagerProvider = mockTableManagerProvider.Object; var mockTextDocumentFactoryService = new Mock <ITextDocumentFactoryService>(); var textDocumentFactoryService = mockTextDocumentFactoryService.Object; var mockContentTypeRegistryService = new Mock <IContentTypeRegistryService>(); mockContentTypeRegistryService.Setup(c => c.ContentTypes).Returns(Enumerable.Empty <IContentType>()); var contentTypeRegistryService = mockContentTypeRegistryService.Object; var mockProject = new Mock <Project>(); mockProject.Setup(p => p.Name).Returns("MyProject"); var project = mockProject.Object; var mockProjectItem = new Mock <ProjectItem>(); mockProjectItem.Setup(s => s.ContainingProject).Returns(project); var projectItem = mockProjectItem.Object; var mockSolution = new Mock <Solution>(); mockSolution.Setup(s => s.FindProjectItem(It.IsAny <string>())).Returns(projectItem); var solution = mockSolution.Object; var mockDTE = new Mock <DTE>(); mockDTE.Setup(d => d.Solution).Returns(solution); var dte = mockDTE.Object; var mockServiceProvider = new Mock <IServiceProvider>(); mockServiceProvider.Setup(s => s.GetService(typeof(DTE))).Returns(dte); var serviceProvider = mockServiceProvider.Object; var mockFileExtensionRegistryService = new Mock <IFileExtensionRegistryService>(); var fileExtensionRegistryService = mockFileExtensionRegistryService.Object; var mockJsContentType = new Mock <IContentType>(); mockJsContentType.Setup(c => c.IsOfType(It.IsAny <string>())).Returns(false); mockJsContentType.Setup(c => c.IsOfType("JavaScript")).Returns(true); this.jsContentType = mockJsContentType.Object; this.mockTextDocument = new Mock <ITextDocument>(); mockTextDocument.Setup(d => d.FilePath).Returns(filename); mockTextDocument.Setup(d => d.Encoding).Returns(Encoding.UTF8); var textDocument = mockTextDocument.Object; mockISonarLintSettings = new Mock <ISonarLintSettings>(); mockISonarLintSettings.Setup(s => s.IsActivateMoreEnabled).Returns(true); var sonarLintSettings = mockISonarLintSettings.Object; mockTextDocumentFactoryService .Setup(t => t.TryGetTextDocument(It.IsAny <ITextBuffer>(), out textDocument)) .Returns(true); mockLogger = new Mock <ILogger>(); var sonarLanguageRecognizer = new SonarLanguageRecognizer(contentTypeRegistryService, fileExtensionRegistryService); this.provider = new TaggerProvider(tableManagerProvider, textDocumentFactoryService, daemon, serviceProvider, sonarLintSettings, sonarLanguageRecognizer, mockLogger.Object); }
public void AnalysisTimeoutInMilliseconds_NoEnvironmentSettings_DefaultTimeout() { TaggerProvider.GetAnalysisTimeoutInMilliseconds().Should().Be(TaggerProvider.DefaultAnalysisTimeoutMs); }