コード例 #1
0
        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");
        }
コード例 #2
0
        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");
        }
コード例 #3
0
        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.");
        }