public async Task Install_parses_source_option() { var console = new TestConsole(); var expectedPackageSource = Path.GetDirectoryName(typeof(PackCommand).Assembly.Location); await _parser.InvokeAsync($"install --add-source {expectedPackageSource} the-package", console); _installOptions.PackageName.Should().Be("the-package"); _installPackageSource.ToString().Should().Be(expectedPackageSource); }
public PackageSelectorViewModel() { Packages = new ObservableCollection <PackageDefinitionViewModel>(); PackageSources = new ObservableCollection <Uri>(); InitializePackageSources(); PropertyChanged += (sender, args) => { if (args.PropertyName == "SearchTerm") { var searchTerm = SearchTerm.ToLowerInvariant(); if (searchTerm.Length < 3) { return; } SearchesInProgress++; Task.Factory.StartNew(() => { var repository = PackageRepositoryFactory.Default.CreateRepository(PackageSource.ToString()); return(repository.Search(searchTerm, true) .Where(p => p.Id.ToLower().StartsWith(searchTerm)) .OrderBy(p => p.Id) .ThenByDescending(p => p.Version) .ToList() .Select(p => { var id = p.Id; var version = p.Version.ToString(); return new PackageDefinitionViewModel(id, version); }) .ToList()); }).ContinueWith(r => { if (r.IsFaulted) { var exception = r.Exception.InnerExceptions.FirstOrDefault(); if (exception != null) { Status = exception.Message; } else { Status = "An unknown error occured accessing the Package Source."; } } if (!r.IsFaulted && r.IsCompleted && searchTerm == SearchTerm.ToLowerInvariant()) { Status = ""; Packages.Clear(); Packages.AddRange(r.Result); } SearchesInProgress--; }, TaskScheduler.FromCurrentSynchronizationContext()); } }; }