public async Task TestPowerShellAutocompleteResourceForPackageVersions(string SourceUrl) { SourceRepository repo = GetSourceRepository(SourceUrl); PSAutoCompleteResource resource = await repo.GetResource <PSAutoCompleteResource>(); //Check if we are able to obtain a resource Assert.True(resource != null); // Check if non zero version count is returned. *TODOS : Use a standard test packages whose version count will be fixed IEnumerable <NuGetVersion> versions = await resource.VersionStartsWith("Nuget.core", "1", true, CancellationToken.None); Assert.True(versions.Count() == 13); }
public async Task TestPowerShellAutocompleteResourceForPackageIds(string SourceUrl) { SourceRepository repo = GetSourceRepository(SourceUrl); PSAutoCompleteResource resource = await repo.GetResource <PSAutoCompleteResource>(); //Check if we are able to obtain a resource Assert.True(resource != null); IEnumerable <string> searchResults = await resource.IdStartsWith("Elmah", true, CancellationToken.None); // Check if non empty search result is returned. Assert.True(searchResults.Count() > 0); //Make sure that the results starts with the given prefix. Assert.True(searchResults.All(p => p.StartsWith("Elmah", StringComparison.OrdinalIgnoreCase))); }
/// <summary> /// Get IPowerShellPackage from the remote package source /// </summary> /// <param name="autoCompleteResource"></param> /// <param name="id"></param> /// <returns></returns> private IPowerShellPackage GetIPowerShellPackageFromRemoteSource(PSAutoCompleteResource autoCompleteResource, string id) { IEnumerable <NuGetVersion> versions = Enumerable.Empty <NuGetVersion>(); try { Task <IEnumerable <NuGetVersion> > versionTask = autoCompleteResource.VersionStartsWith(id, Version, IncludePrerelease.IsPresent, CancellationToken.None); versions = versionTask.Result; } catch (Exception) { } IPowerShellPackage package = new PowerShellPackage(); package.Id = id; if (AllVersions.IsPresent) { if (versions != null && versions.Any()) { package.Versions = versions.OrderByDescending(v => v); LegacyNuGet.SemanticVersion sVersion; LegacyNuGet.SemanticVersion.TryParse(package.Versions.FirstOrDefault().ToNormalizedString(), out sVersion); package.Version = sVersion; } } else { NuGetVersion nVersion = null; if (versions != null && versions.Any()) { nVersion = versions.OrderByDescending(v => v).FirstOrDefault(); } if (nVersion != null) { package.Versions = new List <NuGetVersion>() { nVersion }; LegacyNuGet.SemanticVersion sVersion; LegacyNuGet.SemanticVersion.TryParse(nVersion.ToNormalizedString(), out sVersion); package.Version = sVersion; } } return(package); }
protected override void ProcessRecordCore() { Preprocess(); PSAutoCompleteResource autoCompleteResource = ActiveSourceRepository.GetResource <PSAutoCompleteResource>(); IEnumerable <string> packageIds = Enumerable.Empty <string>(); try { Task <IEnumerable <string> > task = autoCompleteResource.IdStartsWith(Id, IncludePrerelease.IsPresent, CancellationToken.None); packageIds = task.Result; } catch (Exception) { } if (!ExactMatch.IsPresent) { List <IPowerShellPackage> packages = new List <IPowerShellPackage>(); foreach (string id in packageIds) { IPowerShellPackage package = GetIPowerShellPackageFromRemoteSource(autoCompleteResource, id); if (package.Versions != null && package.Versions.Any()) { packages.Add(package); } } WriteObject(packages, enumerateCollection: true); } else { if (packageIds.Any()) { string packageId = packageIds.Where(p => string.Equals(p, Id, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (!string.IsNullOrEmpty(packageId)) { IPowerShellPackage package = GetIPowerShellPackageFromRemoteSource(autoCompleteResource, packageId); if (package.Versions != null && package.Versions.Any()) { WriteObject(package); } } } } }