public void LocatePluginAssembly_ShouldResolveAssembly_RelativePluginPath(string pluginPath) { // Arrange var projectSettings = new ProjectSettings { ProjectFolder = @"C:\Projects\Project\Project.Tests" }; Environment.SetEnvironmentVariable("SAMPLEGENERATOR_PLUGIN_VERSION", @"1.0.0", EnvironmentVariableTarget.Process); var fileSystem = new VirtualFileSystem(); fileSystem.AddFiles(@"C:\Projects\Project\packages\specflow.9.9.9\tools\TechTalk.SpecFlow.Generator.dll"); fileSystem.AddFiles(@"C:\Projects\Project\packages\samplegenerator.1.0.0\lib\SampleGenerator.SpecFlowPlugin.dll"); var loader = new GeneratorPluginLocator(projectSettings, @"C:\Projects\Project\packages\specflow.9.9.9\tools", fileSystem); var pluginDescriptor = new PluginDescriptor("SampleGenerator", pluginPath, PluginType.Generator, null); // Act var path = loader.LocatePluginAssembly(pluginDescriptor); // Assert var seperator = $"{Environment.NewLine}\t"; path.Should().NotBeNull($"the path should match one of the following paths:{seperator}{String.Join($"{seperator}", fileSystem.ProbedPaths)}"); path.Should().Be(@"C:\Projects\Project\packages\samplegenerator.1.0.0\lib\SampleGenerator.SpecFlowPlugin.dll"); }
public void LocatePluginAssembly_ShouldResolveAssembly_SolutionPackagesDirectory_ThirdPartyPlugin(String packageSuffix, String relativeAssemblyPath, String assemblySuffix) { // Arrange var projectSettings = new ProjectSettings { ProjectFolder = @"C:\Projects\Project\Project.Tests" }; var fileSystem = new VirtualFileSystem(); fileSystem.AddFiles($@"C:\Projects\Project\packages\specflow.9.9.9\tools\TechTalk.SpecFlow.Generator.dll"); fileSystem.AddFiles($@"C:\Projects\Project\packages\samplegenerator.{packageSuffix}.1.0.0{relativeAssemblyPath}\SampleGenerator.{assemblySuffix}.dll"); var loader = new GeneratorPluginLocator(projectSettings, @"C:\Projects\Project\packages\specflow.9.9.9\tools", fileSystem); var pluginDescriptor = new PluginDescriptor("SampleGenerator", null, PluginType.Generator, null); // Act var path = loader.LocatePluginAssembly(pluginDescriptor); // Assert var seperator = $"{Environment.NewLine}\t"; path.Should().NotBeNull($"the path should match one of the following paths:{seperator}{String.Join($"{seperator}", fileSystem.ProbedPaths)}"); path.Should().Be($@"C:\Projects\Project\packages\samplegenerator.{packageSuffix}.1.0.0{relativeAssemblyPath}\SampleGenerator.{assemblySuffix}.dll"); }
public void LocatePluginAssembly_ShouldThrow_WhenPluginPathDoesNotExist() { // Arrange var projectSettings = new ProjectSettings { ProjectFolder = @"C:\Projects\Project\Project.Tests" }; var fileSystem = new VirtualFileSystem(); fileSystem.AddFiles(@"C:\Users\jdoe\.nuget\packages\specflow\9.9.9\tools\TechTalk.SpecFlow.Generator.dll"); var loader = new GeneratorPluginLocator(projectSettings, @"C:\Users\jdoe\.nuget\packages\specflow\9.9.9\tools", fileSystem); var pluginDescriptor = new PluginDescriptor("SampleGenerator", @"C:\Users\jdoe\.nuget\packages\samplegenerator\1.0.0\lib\", PluginType.Generator, null); // Act Action action = () => loader.LocatePluginAssembly(pluginDescriptor); // Assert action .Should().Throw <SpecFlowException>() .WithMessage("Unable to find plugin in the plugin search path: SampleGenerator. Please check http://go.specflow.org/doc-plugins for details."); }