public void UniqueSourceFilesPushedToWorkspace() { var sourceFilesPushedToWorkspace = new HashSet <string>(StringComparers.Paths); void onSourceFileAdded(string s) => Assert.True(sourceFilesPushedToWorkspace.Add(s)); void onSourceFileRemoved(string s) => sourceFilesPushedToWorkspace.Remove(s); var project = UnconfiguredProjectFactory.Create(fullPath: @"C:\Myproject.csproj"); var context = IWorkspaceProjectContextMockFactory.CreateForSourceFiles(project, onSourceFileAdded, onSourceFileRemoved); var logger = Mock.Of <IProjectLogger>(); var handler = CreateInstance(project, context); var projectDir = Path.GetDirectoryName(project.FullPath); var added = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"C:\file1.cs", @"C:\file2.cs", @"C:\file1.cs" }, baseDirectory: projectDir, sdkDirectory: null)); var empty = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new string[] { }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: added, removed: empty, isActiveContext: true, logger: logger); AssertEx.CollectionLength(sourceFilesPushedToWorkspace, 2); Assert.Contains(@"C:\file1.cs", sourceFilesPushedToWorkspace); Assert.Contains(@"C:\file2.cs", sourceFilesPushedToWorkspace); var removed = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"C:\file1.cs", @"C:\file1.cs" }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: empty, removed: removed, isActiveContext: true, logger: logger); Assert.Single(sourceFilesPushedToWorkspace); Assert.Contains(@"C:\file2.cs", sourceFilesPushedToWorkspace); }
public void DuplicateMetadataReferencesPushedToWorkspace() { var referencesPushedToWorkspace = new HashSet <string>(StringComparers.Paths); void onReferenceAdded(string s) => referencesPushedToWorkspace.Add(s); void onReferenceRemoved(string s) => referencesPushedToWorkspace.Remove(s); var project = UnconfiguredProjectFactory.Create(fullPath: @"C:\Myproject.csproj"); var context = IWorkspaceProjectContextMockFactory.CreateForMetadataReferences(project, onReferenceAdded, onReferenceRemoved); var logger = Mock.Of <IProjectDiagnosticOutputService>(); var handler = CreateInstance(project, context); var projectDir = Path.GetDirectoryName(project.FullPath); var added = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"/reference:C:\Assembly1.dll", @"/reference:C:\Assembly2.dll", @"/reference:C:\Assembly1.dll" }, baseDirectory: projectDir, sdkDirectory: null)); var empty = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new string[] { }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: added, removed: empty, new ContextState(isActiveEditorContext: true, isActiveConfiguration: false), logger: logger); AssertEx.CollectionLength(referencesPushedToWorkspace, 2); Assert.Contains(@"C:\Assembly1.dll", referencesPushedToWorkspace); Assert.Contains(@"C:\Assembly2.dll", referencesPushedToWorkspace); var removed = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"/reference:C:\Assembly1.dll", @"/reference:C:\Assembly1.dll" }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: empty, removed: removed, new ContextState(isActiveEditorContext: true, isActiveConfiguration: false), logger: logger); Assert.Single(referencesPushedToWorkspace); Assert.Contains(@"C:\Assembly2.dll", referencesPushedToWorkspace); }
public void DuplicateMetadataReferencesPushedToWorkspace() { var referencesPushedToWorkspace = new HashSet <string>(StringComparers.Paths); Action <string> onReferenceAdded = s => referencesPushedToWorkspace.Add(s); Action <string> onReferenceRemoved = s => referencesPushedToWorkspace.Remove(s); var project = UnconfiguredProjectFactory.Create(filePath: @"C:\Myproject.csproj"); var context = IWorkspaceProjectContextFactory.CreateForMetadataReferences(project, onReferenceAdded, onReferenceRemoved); var logger = Mock.Of <IProjectLogger>(); var handler = new MetadataReferenceItemHandler(project, context); var projectDir = Path.GetDirectoryName(project.FullPath); var added = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"/reference:C:\Assembly1.dll", @"/reference:C:\Assembly2.dll", @"/reference:C:\Assembly1.dll" }, baseDirectory: projectDir, sdkDirectory: null)); var empty = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new string[] { }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: added, removed: empty, isActiveContext: true, logger: logger); Assert.Equal(2, referencesPushedToWorkspace.Count); Assert.Contains(@"C:\Assembly1.dll", referencesPushedToWorkspace); Assert.Contains(@"C:\Assembly2.dll", referencesPushedToWorkspace); var removed = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"/reference:C:\Assembly1.dll", @"/reference:C:\Assembly1.dll" }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: empty, removed: removed, isActiveContext: true, logger: logger); Assert.Equal(1, referencesPushedToWorkspace.Count); Assert.Contains(@"C:\Assembly2.dll", referencesPushedToWorkspace); }
public void UniqueSourceFilesPushedToWorkspace() { var sourceFilesPushedToWorkspace = new HashSet <string>(StringComparers.Paths); Action <string> onSourceFileAdded = s => Assert.True(sourceFilesPushedToWorkspace.Add(s)); Action <string> onSourceFileRemoved = s => sourceFilesPushedToWorkspace.Remove(s); var project = UnconfiguredProjectFactory.Create(filePath: @"C:\Myproject.csproj"); var context = IWorkspaceProjectContextFactory.CreateForSourceFiles(project, onSourceFileAdded, onSourceFileRemoved); var handler = new SourceItemHandler(project, context); var projectDir = Path.GetDirectoryName(project.FullPath); var added = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"C:\file1.cs", @"C:\file2.cs", @"C:\file1.cs" }, baseDirectory: projectDir, sdkDirectory: null)); var empty = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new string[] { }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: added, removed: empty, isActiveContext: true); Assert.Equal(2, sourceFilesPushedToWorkspace.Count); Assert.Contains(@"C:\file1.cs", sourceFilesPushedToWorkspace); Assert.Contains(@"C:\file2.cs", sourceFilesPushedToWorkspace); var removed = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"C:\file1.cs", @"C:\file1.cs" }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: empty, removed: removed, isActiveContext: true); Assert.Equal(1, sourceFilesPushedToWorkspace.Count); Assert.Contains(@"C:\file2.cs", sourceFilesPushedToWorkspace); }
public BuildOptions Parse(IEnumerable <string> arguments, string baseDirectory) { Requires.NotNull(arguments, nameof(arguments)); Requires.NotNullOrEmpty(baseDirectory, nameof(baseDirectory)); return(BuildOptions.FromCommandLineArguments( VisualBasicCommandLineParser.Default.Parse(arguments, baseDirectory, sdkDirectory: null, additionalReferenceDirectories: null))); }
public void RootedSourceFilesPushedToWorkspace() { var sourceFilesPushedToWorkspace = new HashSet <string>(StringComparers.Paths); void onSourceFileAdded(string s) => Assert.True(sourceFilesPushedToWorkspace.Add(s)); void onSourceFileRemoved(string s) => sourceFilesPushedToWorkspace.Remove(s); var project = UnconfiguredProjectFactory.Create(fullPath: @"C:\ProjectFolder\Myproject.csproj"); var context = IWorkspaceProjectContextMockFactory.CreateForSourceFiles(project, onSourceFileAdded, onSourceFileRemoved); var logger = Mock.Of <IProjectDiagnosticOutputService>(); var handler = CreateInstance(project, context); var projectDir = Path.GetDirectoryName(project.FullPath); var added = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"file1.cs", @"..\ProjectFolder\file1.cs" }, baseDirectory: projectDir, sdkDirectory: null)); var removed = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new string[] { }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: added, removed: removed, new ContextState(true, false), logger: logger); Assert.Single(sourceFilesPushedToWorkspace); Assert.Contains(@"C:\ProjectFolder\file1.cs", sourceFilesPushedToWorkspace); }
public void RootedReferencesPushedToWorkspace() { var referencesPushedToWorkspace = new HashSet <string>(StringComparers.Paths); void onReferenceAdded(string s) => referencesPushedToWorkspace.Add(s); void onReferenceRemoved(string s) => referencesPushedToWorkspace.Remove(s); var project = UnconfiguredProjectFactory.Create(filePath: @"C:\ProjectFolder\Myproject.csproj"); var context = IWorkspaceProjectContextMockFactory.CreateForMetadataReferences(project, onReferenceAdded, onReferenceRemoved); var logger = Mock.Of <IProjectLogger>(); var handler = CreateInstance(project, context); var projectDir = Path.GetDirectoryName(project.FullPath); var added = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new[] { @"/reference:Assembly1.dll", @"/reference:C:\ProjectFolder\Assembly2.dll", @"/reference:..\ProjectFolder\Assembly3.dll" }, baseDirectory: projectDir, sdkDirectory: null)); var removed = BuildOptions.FromCommandLineArguments(CSharpCommandLineParser.Default.Parse(args: new string[] { }, baseDirectory: projectDir, sdkDirectory: null)); handler.Handle(10, added: added, removed: removed, isActiveContext: true, logger: logger); AssertEx.CollectionLength(referencesPushedToWorkspace, 3); Assert.Contains(@"C:\ProjectFolder\Assembly1.dll", referencesPushedToWorkspace); Assert.Contains(@"C:\ProjectFolder\Assembly2.dll", referencesPushedToWorkspace); Assert.Contains(@"C:\ProjectFolder\Assembly3.dll", referencesPushedToWorkspace); }