Beispiel #1
0
        private bool DetectFromRuntimeReference(GeneratorInfo generatorInfo)
        {
            var specFlowRef = VsxHelper.GetReference(project, "TechTalk.SpecFlow");

            if (specFlowRef == null)
            {
                return(false);
            }

            var specFlowRefPath = specFlowRef.Path;

            if (string.IsNullOrWhiteSpace(specFlowRefPath))
            {
                return(false);
            }

            string runtimeFolder = Path.GetDirectoryName(specFlowRefPath);

            if (runtimeFolder == null)
            {
                return(false);
            }

            tracer.Trace("Runtime found at " + runtimeFolder, "VsGeneratorInfoProvider");

            return(probingPaths.Select(probingPath => Path.GetFullPath(Path.Combine(runtimeFolder, probingPath)))
                   .Any(probingPath => DetectFromFolder(generatorInfo, probingPath)));
        }
        private ITestRunnerGateway GetCurrentTestRunnerGateway(Project project)
        {
            if (VsxHelper.GetReference(project, "TechTalk.SpecRun") != null)
            {
                return(container.Resolve <ITestRunnerGateway>(TestRunnerTool.SpecRun.ToString()));
            }

            var reSharperAssembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => a.GetName().Name == "JetBrains.ReSharper.UnitTestFramework");

            if (reSharperAssembly != null)
            {
                if (reSharperAssembly.GetName().Version.Major <= 5)
                {
                    return(container.Resolve <ITestRunnerGateway>(TestRunnerTool.ReSharper5.ToString()));
                }

                return(container.Resolve <ITestRunnerGateway>(TestRunnerTool.ReSharper.ToString()));
            }

            if (ideIntegration == IdeIntegration.Install.IdeIntegration.VisualStudio2012)
            {
                return(container.Resolve <ITestRunnerGateway>(TestRunnerTool.VisualStudio2012.ToString()));
            }

            if (VsxHelper.GetReference(project, "Microsoft.VisualStudio.QualityTools.UnitTestFramework") != null)
            {
                return(container.Resolve <ITestRunnerGateway>(TestRunnerTool.VisualStudio2010MsTest.ToString()));
            }

            MessageBox.Show(
                "Could not find matching test runner. Please specify the test runner tool in 'Tools / Options / SpecFlow'",
                "SpecFlow", MessageBoxButton.OK, MessageBoxImage.Error);

            return(null);
        }
        public BindingAssemblyInfo(string assemblyName, Project mainProject)
        {
            AssemblyName = assemblyName;
            Project      = VsxHelper.FindProjectByAssemblyName(mainProject.DTE, AssemblyShortName);

            if (Project != null && VsProjectScope.GetTargetLanguage(Project) == ProgrammingLanguage.FSharp) //HACK: we force the f# libs to be used as assembly reference
            {
                Project = null;
            }

            if (Project == null)
            {
                Reference = VsxHelper.GetReference(mainProject, assemblyName);
            }
        }
        private bool DetectDirectGeneratorReference(GeneratorInfo generatorInfo)
        {
            var specFlowGeneratorRef = VsxHelper.GetReference(project, generatorAssemblyName);

            if (specFlowGeneratorRef == null)
            {
                return(false);
            }

            tracer.Trace("Direct generator reference found", "VsGeneratorInfoProvider");
            generatorInfo.GeneratorAssemblyVersion = new Version(specFlowGeneratorRef.Version);
            generatorInfo.GeneratorFolder          = Path.GetDirectoryName(specFlowGeneratorRef.Path);

            return(true);
        }
        private string FindConsolePath(Project project)
        {
            var specRunRef = VsxHelper.GetReference(project, "TechTalk.SpecRun");

            if (specRunRef == null)
            {
                return(null);
            }

            if (specRunRef.Path == null)
            {
                return(null);
            }

            string runtimeFolder = Path.GetDirectoryName(specRunRef.Path);

            if (runtimeFolder == null)
            {
                return(null);
            }

            string fromRuntimePackage = probingPaths.Select(probingPath => Path.GetFullPath(Path.Combine(runtimeFolder, probingPath)))
                                        .Select(GetConsolePath).FirstOrDefault(cp => cp != null);

            if (fromRuntimePackage != null)
            {
                return(fromRuntimePackage);
            }

            string nuGetPackagesFolder = Path.GetFullPath(Path.Combine(runtimeFolder, @"..\..\.."));

            if (!Directory.Exists(nuGetPackagesFolder))
            {
                return(null);
            }
            var latestRunnerPackage = Directory.GetDirectories(nuGetPackagesFolder, "SpecRun.Runner.*").OrderByDescending(d => d)
                                      .Select(s => GetConsolePath(s + @"\tools")).FirstOrDefault(cp => cp != null);

            return(latestRunnerPackage);
        }
Beispiel #6
0
        private string FindConsolePath(Project project)
        {
            var specRunRef = VsxHelper.GetReference(project, "TechTalk.SpecRun");

            if (specRunRef == null)
            {
                return(null);
            }

            if (specRunRef.Path == null)
            {
                return(null);
            }

            string runtimeFolder = Path.GetDirectoryName(specRunRef.Path);

            if (runtimeFolder == null)
            {
                return(null);
            }

            return(probingPaths.Select(probingPath => Path.GetFullPath(Path.Combine(runtimeFolder, probingPath)))
                   .Select(GetConsolePath).FirstOrDefault(cp => cp != null));
        }
 private bool IsInSpecFlowProject(Project project)
 {
     return(VsxHelper.GetReference(project, "TechTalk.SpecFlow") != null);
 }
Beispiel #8
0
 public static bool IsSpecRunProject(Project project)
 {
     return(VsxHelper.GetReference(project, "TechTalk.SpecRun") != null ||
            VsxHelper.GetReference(project, "SpecFlow.Plus.Runner") != null);
 }