Esempio n. 1
0
        public async Task If_an_existing_file_is_deleted_then_the_workspace_does_not_include_the_file()
        {
            var package = Create.EmptyWorkspace();
            var build   = await Create.NewPackage(package.Name, package.Directory, Create.ConsoleConfiguration, true) as ICreateWorkspaceForRun;

            var ws = await build.CreateRoslynWorkspaceForRunAsync(new TimeBudget(30.Seconds()));

            var existingFile = Path.Combine(package.Directory.FullName, "Program.cs");

            ws.CurrentSolution.Projects.First().Documents.Select(d => d.FilePath).Should().Contain(filePath => filePath == existingFile);

            File.Delete(existingFile);
            await Task.Delay(1000);

            ws = await build.CreateRoslynWorkspaceForRunAsync(new TimeBudget(30.Seconds()));

            ws.CurrentSolution.Projects.First().Documents.Select(d => d.FilePath).Should().NotContain(filePath => filePath == existingFile);
        }
Esempio n. 2
0
        public async Task Run_succeeds_with_spaces_in_project_path()
        {
            var package = Create.EmptyWorkspace("a space");
            var build   = await Create.NewPackage(package.Name, package.Directory, Create.ConsoleConfiguration);

            var server    = GetCodeRunner();
            var workspace = new Workspace(
                workspaceType: build.Name,
                files: new[] { new File("Program.cs", SourceCodeProvider.ConsoleProgramSingleRegion) },
                buffers: new[] { new Buffer("Program.cs@alpha", @"Console.WriteLine(""something"");", 0) });


            var result = await server.Run(new WorkspaceRequest(workspace));

            result.Should().BeEquivalentTo(new
            {
                Succeeded = true,
                Output    = new[] { "something", "" },
                Exception = (string)null, // we already display the error in Output
            }, config => config.ExcludingMissingMembers());
        }
Esempio n. 3
0
        public async Task If_the_project_file_is_changed_then_the_workspace_reflects_the_changes()
        {
            var package = Create.EmptyWorkspace();
            var build   = await Create.NewPackage(package.Name, package.Directory, Create.ConsoleConfiguration) as ICreateWorkspaceForRun;

            var ws = await build.CreateRoslynWorkspaceForRunAsync(new TimeBudget(30.Seconds()));

            var references = ws.CurrentSolution.Projects.First().MetadataReferences;

            references.Should().NotContain(reference =>
                                           reference.Display.Contains("Microsoft.CodeAnalysis.CSharp.dll") &&
                                           reference.Display.Contains("2.8.2"));

            await new Dotnet(package.Directory).AddPackage("Microsoft.CodeAnalysis", "2.8.2");

            ws = await package.CreateRoslynWorkspaceForRunAsync(new TimeBudget(30.Seconds()));

            references = ws.CurrentSolution.Projects.First().MetadataReferences;
            references.Should().Contain(reference =>
                                        reference.Display.Contains("Microsoft.CodeAnalysis.CSharp.dll") &&
                                        reference.Display.Contains("2.8.2"));
        }