Exemplo n.º 1
0
        protected OmniSharpTestHost CreateEmptyOmniSharpHost()
        {
            var host = OmniSharpTestHost.Create(path: null, testOutput: this.TestOutput);

            host.AddFilesToWorkspace();
            return(host);
        }
Exemplo n.º 2
0
        public static OmniSharpTestHost Create(
            string path = null,
            ITestOutputHelper testOutput = null,
            IEnumerable <KeyValuePair <string, string> > configurationData = null,
            DotNetCliVersion dotNetCliVersion = DotNetCliVersion.Current,
            IEnumerable <ExportDescriptorProvider> additionalExports = null)
        {
            var environment      = new OmniSharpEnvironment(path, logLevel: LogLevel.Trace);
            var loggerFactory    = new LoggerFactory().AddXunit(testOutput);
            var logger           = loggerFactory.CreateLogger <OmniSharpTestHost>();
            var sharedTextWriter = new TestSharedTextWriter(testOutput);

            var dotNetCliService = CreateTestDotNetCliService(dotNetCliVersion, loggerFactory);

            var info = dotNetCliService.GetInfo();

            logger.LogInformation($"Using .NET CLI: {info.Version}");

            var builder = new Microsoft.Extensions.Configuration.ConfigurationBuilder();

            builder.AddInMemoryCollection(configurationData);

            // We need to set the "UseLegacySdkResolver" for tests because
            // MSBuild's SDK resolver will not be able to locate the .NET Core SDKs
            // that we install locally in the ".dotnet" and ".dotnet-legacy" directories.
            // This property will cause the MSBuild project loader to set the
            // MSBuildSDKsPath environment variable to the correct path "Sdks" folder
            // within the appropriate .NET Core SDK.
            var msbuildProperties = new Dictionary <string, string>()
            {
                [$"MSBuild:{nameof(MSBuildOptions.UseLegacySdkResolver)}"] = "true",
                [$"MSBuild:{nameof(MSBuildOptions.MSBuildSDKsPath)}"]      = Path.Combine(info.BasePath, "Sdks")
            };

            builder.AddInMemoryCollection(msbuildProperties);

            var configuration = builder.Build();

            var serviceProvider = new TestServiceProvider(environment, loggerFactory, sharedTextWriter, configuration, NullEventEmitter.Instance, dotNetCliService);

            var compositionHost = new CompositionHostBuilder(serviceProvider, s_lazyAssemblies.Value, additionalExports)
                                  .Build();

            var workspace = compositionHost.GetExport <OmniSharpWorkspace>();

            WorkspaceInitializer.Initialize(serviceProvider, compositionHost, configuration, logger);

            var host = new OmniSharpTestHost(serviceProvider, loggerFactory, workspace, compositionHost);

            // Force workspace to be updated
            var service = host.GetWorkspaceInformationService();

            service.Handle(new WorkspaceInformationRequest()).Wait();

            return(host);
        }
        public static async Task <QuickFixResponse> RequestCodeCheckAsync(this OmniSharpTestHost host, string filePath = null)
        {
            var service = host.GetCodeCheckService();

            var request = filePath == null ? new CodeCheckRequest() : new CodeCheckRequest {
                FileName = filePath
            };

            return(await service.Handle(request));
        }
        public static OmniSharpTestHost Create(string path = null, ITestOutputHelper testOutput = null, IEnumerable <KeyValuePair <string, string> > configurationData = null, DotNetCliVersion dotNetCliVersion = DotNetCliVersion.Current)
        {
            var dotNetPath = Path.Combine(
                TestAssets.Instance.RootFolder,
                GetDotNetCliFolderName(dotNetCliVersion),
                "dotnet");

            if (!File.Exists(dotNetPath))
            {
                dotNetPath = Path.ChangeExtension(dotNetPath, ".exe");
            }

            if (!File.Exists(dotNetPath))
            {
                throw new InvalidOperationException($"Local .NET CLI path does not exist. Did you run build.(ps1|sh) from the command line?");
            }

            var builder = new Microsoft.Extensions.Configuration.ConfigurationBuilder();

            builder.AddInMemoryCollection(configurationData);
            var configuration = builder.Build();

            var environment      = new OmniSharpEnvironment(path, logLevel: LogLevel.Trace);
            var loggerFactory    = new LoggerFactory().AddXunit(testOutput);
            var sharedTextWriter = new TestSharedTextWriter(testOutput);

            var serviceProvider = new TestServiceProvider(environment, loggerFactory, sharedTextWriter, configuration);

            var compositionHost = new CompositionHostBuilder(serviceProvider, environment, NullEventEmitter.Instance)
                                  .WithAssemblies(s_lazyAssemblies.Value)
                                  .Build();

            var workspace = compositionHost.GetExport <OmniSharpWorkspace>();
            var logger    = loggerFactory.CreateLogger <OmniSharpTestHost>();

            var dotNetCli = compositionHost.GetExport <DotNetCliService>();

            dotNetCli.SetDotNetPath(dotNetPath);
            var version = dotNetCli.GetVersion();

            logger.LogInformation($"Using .NET CLI: {version}");

            var oldMSBuildSdksPath = SetMSBuildSdksPath(dotNetCli);

            WorkspaceInitializer.Initialize(serviceProvider, compositionHost, configuration, logger);

            var host = new OmniSharpTestHost(serviceProvider, loggerFactory, workspace, compositionHost, oldMSBuildSdksPath);

            // Force workspace to be updated
            var service = host.GetWorkspaceInformationService();

            service.Handle(new WorkspaceInformationRequest()).Wait();

            return(host);
        }
        protected OmniSharpTestHost CreateOmniSharpHost(TestFile[] testFiles, IEnumerable <KeyValuePair <string, string> > configurationData)
        {
            var host = OmniSharpTestHost.Create(path: null, testOutput: this.TestOutput, configurationData: configurationData);

            if (testFiles.Length > 0)
            {
                host.AddFilesToWorkspace(testFiles);
            }

            return(host);
        }
        protected OmniSharpTestHost CreateOmniSharpHost(TestFile[] testFiles, IConfiguration configurationData = null)
        {
            var host = OmniSharpTestHost.Create(path: null, testOutput: this.TestOutput, configurationData: configurationData);

            if (testFiles.Length > 0)
            {
                host.AddFilesToWorkspace(testFiles);
            }

            return(host);
        }
        protected AbstractTestFixture(ITestOutputHelper output, SharedOmniSharpHostFixture sharedOmniSharpHostFixture)
        {
            TestOutput    = output;
            LoggerFactory = new LoggerFactory()
                            .AddXunit(output);

            if (sharedOmniSharpHostFixture.OmniSharpTestHost == null)
            {
                sharedOmniSharpHostFixture.OmniSharpTestHost = CreateSharedOmniSharpTestHost();
            }
            else
            {
                sharedOmniSharpHostFixture.OmniSharpTestHost.ClearWorkspace();
            }

            SharedOmniSharpTestHost = sharedOmniSharpHostFixture.OmniSharpTestHost;
        }
        public static async Task <OmniSharpTestHost> RestoreProject(this OmniSharpTestHost host, ITestProject testProject)
        {
            await host.GetExport <IDotNetCliService>().RestoreAsync(testProject.Directory);

            var assetPath = Path.Combine(testProject.Directory, "obj");

            var filesChangeRequests = Directory.GetFiles(assetPath)
                                      .Select(file => new FilesChangedRequest()
            {
                FileName   = file,
                ChangeType = FileChangeType.Create
            });

            await host.GetFilesChangedService().Handle(filesChangeRequests);

            return(host);
        }
Exemplo n.º 9
0
        public static OmniSharpTestHost Create(
            IServiceProvider serviceProvider,
            IEnumerable <ExportDescriptorProvider> additionalExports = null)
        {
            var compositionHost = new CompositionHostBuilder(serviceProvider, s_lazyAssemblies.Value, additionalExports)
                                  .Build();

            WorkspaceInitializer.Initialize(serviceProvider, compositionHost);

            var host = new OmniSharpTestHost(serviceProvider, compositionHost);

            // Force workspace to be updated
            var service = host.GetWorkspaceInformationService();

            service.Handle(new WorkspaceInformationRequest()).Wait();

            return(host);
        }
Exemplo n.º 10
0
        public static OmniSharpTestHost Create(
            IServiceProvider serviceProvider,
            IEnumerable <ExportDescriptorProvider> additionalExports = null,
            [CallerMemberName] string callerName = "")
        {
            var environment     = serviceProvider.GetRequiredService <IOmniSharpEnvironment>();
            var compositionHost = new CompositionHostBuilder(serviceProvider, s_lazyAssemblies.Value, additionalExports)
                                  .Build(environment.TargetDirectory);

            WorkspaceInitializer.Initialize(serviceProvider, compositionHost);

            var host = new OmniSharpTestHost(serviceProvider, compositionHost, callerName);

            // Force workspace to be updated
            var service = host.GetWorkspaceInformationService();

            service.Handle(new WorkspaceInformationRequest()).Wait();

            return(host);
        }
Exemplo n.º 11
0
 public void Dispose()
 {
     OmniSharpTestHost?.Dispose();
 }
 protected OmniSharpTestHost CreateOmniSharpHost(
     string path = null,
     IEnumerable <KeyValuePair <string, string> > configurationData = null,
     DotNetCliVersion dotNetCliVersion = DotNetCliVersion.Current,
     IEnumerable <ExportDescriptorProvider> additionalExports = null)
 => OmniSharpTestHost.Create(path, this.TestOutput, configurationData, dotNetCliVersion, additionalExports);
Exemplo n.º 13
0
 protected OmniSharpTestHost CreateOmniSharpHost(string path = null, IEnumerable <KeyValuePair <string, string> > configurationData = null, DotNetCliVersion dotNetCliVersion = DotNetCliVersion.Current) =>
 OmniSharpTestHost.Create(path, this.TestOutput, configurationData, dotNetCliVersion);
Exemplo n.º 14
0
        public static async Task <MSBuildWorkspaceInfo> RequestMSBuildWorkspaceInfoAsync(this OmniSharpTestHost host)
        {
            var service = host.GetWorkspaceInformationService();

            var request = new WorkspaceInformationRequest
            {
                ExcludeSourceFiles = false
            };

            var response = await service.Handle(request);

            if (!response.ContainsKey("MsBuild"))
            {
                return(null);
            }

            return((MSBuildWorkspaceInfo)response["MsBuild"]);
        }
Exemplo n.º 15
0
 public static OnFilesChangedService GetFilesChangedService(this OmniSharpTestHost host)
 => host.GetRequestHandler <OnFilesChangedService>(OmniSharpEndpoints.FilesChanged);
Exemplo n.º 16
0
 public static WorkspaceInformationService GetWorkspaceInformationService(this OmniSharpTestHost host)
 => host.GetRequestHandler <WorkspaceInformationService>(OmniSharpEndpoints.WorkspaceInformation, "Projects");
Exemplo n.º 17
0
 public static CodeCheckService GetCodeCheckService(this OmniSharpTestHost host)
 => host.GetRequestHandler <CodeCheckService>(OmniSharpEndpoints.CodeCheck);
 protected TRequestHandler GetRequestHandler(OmniSharpTestHost host, string languageName = LanguageNames.CSharp)
 {
     return(host.GetRequestHandler <TRequestHandler>(EndpointName, languageName));
 }
 protected TRequestHandler GetRequestHandler(OmniSharpTestHost host)
 {
     return(host.GetRequestHandler <TRequestHandler>(EndpointName));
 }
Exemplo n.º 20
0
 protected OmniSharpTestHost CreateOmniSharpHost(string path = null, IEnumerable <KeyValuePair <string, string> > configurationData = null, bool useLegacyDotNetCli = false) =>
 OmniSharpTestHost.Create(path, this.TestOutput, configurationData, useLegacyDotNetCli);