Beispiel #1
0
        public NuGetPackageReference GetSpecFlowPackage(IEnumerable <NuGetPackageReference> packageReferences)
        {
            NuGetPackageReference knownSpecFlowPackage  = null;
            NuGetPackageReference knownExtensionPackage = null;
            string knownExtensionSpecFlowVersion        = null;

            foreach (var packageReference in packageReferences)
            {
                if (packageReference.PackageName == SpecFlowPackageName)
                {
                    return(packageReference);
                }

                if (packageReference.InstallPath == null)
                {
                    continue;
                }

                if (knownSpecFlowPackage == null && KnownSpecFlowPackages.Contains(packageReference.PackageName))
                {
                    knownSpecFlowPackage = packageReference;
                }

                if (knownExtensionPackage == null)
                {
                    var match = KnownSpecFlowExtensions.Select(e => e.Match(packageReference.PackageName)).FirstOrDefault(m => m.Success);
                    if (match != null)
                    {
                        knownExtensionPackage         = packageReference;
                        knownExtensionSpecFlowVersion = match.Groups["sfver"].Value.Replace("-", ".");
                    }
                }
            }

            if (knownSpecFlowPackage != null)
            {
                var specFlowInstallPath = ReplacePackageNamePart(knownSpecFlowPackage.InstallPath, knownSpecFlowPackage.PackageName, SpecFlowPackageName);
                if (specFlowInstallPath != knownSpecFlowPackage.InstallPath && _fileSystem.Directory.Exists(specFlowInstallPath))
                {
                    return(new NuGetPackageReference(SpecFlowPackageName, knownSpecFlowPackage.Version, specFlowInstallPath));
                }
            }

            if (knownExtensionPackage != null)
            {
                while (knownExtensionSpecFlowVersion.Count(c => c == '.') < 2)
                {
                    knownExtensionSpecFlowVersion += ".0";
                }
                var specFlowInstallPath = ReplacePackageNamePart(knownExtensionPackage.InstallPath, knownExtensionPackage.PackageName, SpecFlowPackageName);
                specFlowInstallPath = ReplacePackageVersionPart(specFlowInstallPath, knownExtensionPackage.Version.ToString(), knownExtensionSpecFlowVersion);
                if (specFlowInstallPath != knownExtensionPackage.InstallPath && _fileSystem.Directory.Exists(specFlowInstallPath))
                {
                    return(new NuGetPackageReference(SpecFlowPackageName, new NuGetVersion(knownExtensionSpecFlowVersion), specFlowInstallPath));
                }
            }

            return(null);
        }
Beispiel #2
0
 protected bool Equals(NuGetPackageReference other)
 {
     return(string.Equals(PackageName, other.PackageName) && Equals(Version, other.Version) && string.Equals(InstallPath, other.InstallPath));
 }