public async Task CacheSearchCliSymbolNameFilterTest() { TemplateDiscoveryMetadata mockTemplateDiscoveryMetadata = SetupDiscoveryMetadata(true); MockCliNuGetMetadataSearchSource.SetupMockData(mockTemplateDiscoveryMetadata); _engineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockCliNuGetMetadataSearchSource)); INewCommandInput commandInput = new MockNewCommandInput("foo").WithTemplateOption("framework", "netcoreapp2.0"); TemplateSearchCoordinator searchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(_engineEnvironmentSettings, commandInput, DefaultLanguage); SearchResults searchResults = await searchCoordinator.SearchAsync().ConfigureAwait(false); Assert.True(searchResults.AnySources); Assert.Equal(1, searchResults.MatchesBySource.Count); Assert.Equal(1, searchResults.MatchesBySource[0].PacksWithMatches.Count); Assert.Single(searchResults.MatchesBySource[0].PacksWithMatches[_packTwoInfo].TemplateMatches.Where(t => string.Equals(t.Info.Name, _fooTwoTemplate.Name))); INewCommandInput shortNameCommandInput = new MockNewCommandInput("foo").WithTemplateOption("f", "netcoreapp2.0"); TemplateSearchCoordinator shortNameSearchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(_engineEnvironmentSettings, shortNameCommandInput, DefaultLanguage); SearchResults shortNameSearchResults = await searchCoordinator.SearchAsync().ConfigureAwait(false); Assert.True(shortNameSearchResults.AnySources); Assert.Equal(1, shortNameSearchResults.MatchesBySource.Count); Assert.Equal(1, shortNameSearchResults.MatchesBySource[0].PacksWithMatches.Count); Assert.Single(shortNameSearchResults.MatchesBySource[0].PacksWithMatches[_packTwoInfo].TemplateMatches.Where(t => string.Equals(t.Info.Name, _fooTwoTemplate.Name))); }
public async Task CacheSearchPackageFilterTest(string commandTemplate, string commandPackage, int packMatchCount, int templateMatchCount) { TemplateDiscoveryMetadata mockTemplateDiscoveryMetadata = SetupDiscoveryMetadata(false); MockCliNuGetMetadataSearchSource.SetupMockData(mockTemplateDiscoveryMetadata); EngineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockCliNuGetMetadataSearchSource)); Dictionary <string, string> rawCommandInputs = new Dictionary <string, string>(); MockNewCommandInput commandInput = new MockNewCommandInput(rawCommandInputs) { TemplateName = commandTemplate, PackageFilter = commandPackage }; TemplateSearchCoordinator searchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(EngineEnvironmentSettings, commandInput, DefaultLanguage); SearchResults searchResults = await searchCoordinator.SearchAsync(); Assert.True(searchResults.AnySources); if (packMatchCount == 0) { Assert.Equal(0, searchResults.MatchesBySource.Count); } else { Assert.Equal(1, searchResults.MatchesBySource.Count); Assert.Equal(packMatchCount, searchResults.MatchesBySource[0].PacksWithMatches.Count); Assert.Equal(templateMatchCount, searchResults.MatchesBySource[0].PacksWithMatches[_packThreeInfo].TemplateMatches.Count); } }
public async Task CacheSearchLanguageMismatchFilterTest() { TemplateDiscoveryMetadata mockTemplateDiscoveryMetadata = SetupDiscoveryMetadata(false); MockCliNuGetMetadataSearchSource.SetupMockData(mockTemplateDiscoveryMetadata); _engineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockCliNuGetMetadataSearchSource)); MockNewCommandInput commandInput = new MockNewCommandInput("bar", "VB"); TemplateSearchCoordinator searchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(_engineEnvironmentSettings, commandInput, DefaultLanguage); SearchResults searchResults = await searchCoordinator.SearchAsync().ConfigureAwait(false); Assert.True(searchResults.AnySources); Assert.Equal(0, searchResults.MatchesBySource.Count); }
public async Task CacheSearchCliSymbolNameMismatchFilterTest() { TemplateDiscoveryMetadata mockTemplateDiscoveryMetadata = SetupDiscoveryMetadata(true); MockCliNuGetMetadataSearchSource.SetupMockData(mockTemplateDiscoveryMetadata); _engineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockCliNuGetMetadataSearchSource)); // "tfm" is not a vaild symbol for the "foo" template. So it should not match. INewCommandInput commandInput = new MockNewCommandInput("foo").WithTemplateOption("tfm", "netcoreapp2.0"); TemplateSearchCoordinator searchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(_engineEnvironmentSettings, commandInput, DefaultLanguage); SearchResults searchResults = await searchCoordinator.SearchAsync().ConfigureAwait(false); Assert.True(searchResults.AnySources); Assert.Equal(0, searchResults.MatchesBySource.Count); }
private static bool TryWriteSearchMetadata(PackSourceCheckResult packSourceCheckResults, string reportPath) { try { TemplateDiscoveryMetadata searchMetadata = CreateSearchMetadata(packSourceCheckResults); JObject toSerialize = JObject.FromObject(searchMetadata); string outputFileName = Path.Combine(reportPath, SearchMetadataFilename); File.WriteAllText(outputFileName, toSerialize.ToString()); return(true); } catch { return(false); } }
public async Task CacheSearchLanguageFilterTest() { TemplateDiscoveryMetadata mockTemplateDiscoveryMetadata = SetupDiscoveryMetadata(false); MockCliNuGetMetadataSearchSource.SetupMockData(mockTemplateDiscoveryMetadata); _engineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockCliNuGetMetadataSearchSource)); Dictionary <string, string> rawCommandInputs = new Dictionary <string, string>(); MockNewCommandInput commandInput = new MockNewCommandInput("bar", "F#"); TemplateSearchCoordinator searchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(_engineEnvironmentSettings, commandInput, DefaultLanguage); SearchResults searchResults = await searchCoordinator.SearchAsync().ConfigureAwait(false); Assert.True(searchResults.AnySources); Assert.Equal(1, searchResults.MatchesBySource.Count); Assert.Equal(1, searchResults.MatchesBySource[0].PacksWithMatches.Count); Assert.Single(searchResults.MatchesBySource[0].PacksWithMatches[_packThreeInfo].TemplateMatches.Where(t => string.Equals(t.Info.Name, _barFSharpTemplate.Name))); }
public async Task CacheSearchNameMatchTest() { TemplateDiscoveryMetadata mockTemplateDiscoveryMetadata = SetupDiscoveryMetadata(false); MockCliNuGetMetadataSearchSource.SetupMockData(mockTemplateDiscoveryMetadata); EngineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockCliNuGetMetadataSearchSource)); INewCommandInput commandInput = new MockNewCommandInput("foo"); TemplateSearchCoordinator searchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(EngineEnvironmentSettings, commandInput, DefaultLanguage); SearchResults searchResults = await searchCoordinator.SearchAsync(); Assert.True(searchResults.AnySources); Assert.Equal(1, searchResults.MatchesBySource.Count); Assert.Equal(2, searchResults.MatchesBySource[0].PacksWithMatches.Count); Assert.Single(searchResults.MatchesBySource[0].PacksWithMatches[_packOneInfo].TemplateMatches.Where(t => string.Equals(t.Info.Name, _fooOneTemplate.Name))); Assert.Single(searchResults.MatchesBySource[0].PacksWithMatches[_packTwoInfo].TemplateMatches.Where(t => string.Equals(t.Info.Name, _fooTwoTemplate.Name))); }
public async Task CacheSearchCliSymbolNameFilterTest() { TemplateDiscoveryMetadata mockTemplateDiscoveryMetadata = SetupDiscoveryMetadata(true); MockCliNuGetMetadataSearchSource.SetupMockData(mockTemplateDiscoveryMetadata); EngineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockCliNuGetMetadataSearchSource)); // The template symbol is "Framework" (capital "F"). This checks that the host specific override is applied Dictionary <string, string> rawCommandInputs = new Dictionary <string, string>() { { "framework", "netcoreapp2.0" } }; INewCommandInput commandInput = new MockNewCommandInput(rawCommandInputs) { TemplateName = "foo" }; TemplateSearchCoordinator searchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(EngineEnvironmentSettings, commandInput, DefaultLanguage); SearchResults searchResults = await searchCoordinator.SearchAsync(); Assert.True(searchResults.AnySources); Assert.Equal(1, searchResults.MatchesBySource.Count); Assert.Equal(1, searchResults.MatchesBySource[0].PacksWithMatches.Count); Assert.Single(searchResults.MatchesBySource[0].PacksWithMatches[_packTwoInfo].TemplateMatches.Where(t => string.Equals(t.Info.Name, _fooTwoTemplate.Name))); // same check, except with the short version of Framework, namely "f" Dictionary <string, string> shortNameCheckRawCommandInputs = new Dictionary <string, string>() { { "f", "netcoreapp2.0" } }; INewCommandInput shortNameCommandInput = new MockNewCommandInput(shortNameCheckRawCommandInputs) { TemplateName = "foo" }; TemplateSearchCoordinator shortNameSearchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(EngineEnvironmentSettings, shortNameCommandInput, DefaultLanguage); SearchResults shortNameSearchResults = await searchCoordinator.SearchAsync(); Assert.True(shortNameSearchResults.AnySources); Assert.Equal(1, shortNameSearchResults.MatchesBySource.Count); Assert.Equal(1, shortNameSearchResults.MatchesBySource[0].PacksWithMatches.Count); Assert.Single(shortNameSearchResults.MatchesBySource[0].PacksWithMatches[_packTwoInfo].TemplateMatches.Where(t => string.Equals(t.Info.Name, _fooTwoTemplate.Name))); }
public async Task CacheSearchTypeFilterTest(string commandTemplate, string commandType, int matchCount) { TemplateDiscoveryMetadata mockTemplateDiscoveryMetadata = SetupDiscoveryMetadata(false); MockCliNuGetMetadataSearchSource.SetupMockData(mockTemplateDiscoveryMetadata); _engineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockCliNuGetMetadataSearchSource)); MockNewCommandInput commandInput = new MockNewCommandInput(commandTemplate, type: commandType); TemplateSearchCoordinator searchCoordinator = CliTemplateSearchCoordinatorFactory.CreateCliTemplateSearchCoordinator(_engineEnvironmentSettings, commandInput, DefaultLanguage); SearchResults searchResults = await searchCoordinator.SearchAsync().ConfigureAwait(false); Assert.True(searchResults.AnySources); if (matchCount == 0) { Assert.Equal(0, searchResults.MatchesBySource.Count); } else { Assert.Equal(1, searchResults.MatchesBySource.Count); Assert.Equal(matchCount, searchResults.MatchesBySource[0].PacksWithMatches.Count); } }
public void SetupMockData(TemplateDiscoveryMetadata templateDiscoveryMetadata) { _templateDiscoveryMetadata = templateDiscoveryMetadata; }
private bool TryReadScraperOutput(string scrapeFilePath, out TemplateDiscoveryMetadata discoveryMetadata) { ISearchCacheConfig cacheConfig = new NuGetSearchCacheConfig(scrapeFilePath); return(FileMetadataTemplateSearchCacheReader.TryReadDiscoveryMetadata(_environmentSettings, cacheConfig, out discoveryMetadata)); }
#pragma warning disable CS0618 // Type or member is obsolete private static string SetupDiscoveryMetadata(string fileLocation, bool includehostData = false) { const string version = "1.0.0.0"; List <ITemplateInfo> templateCache = new List <ITemplateInfo>(); templateCache.Add(_fooOneTemplate); templateCache.Add(_fooTwoTemplate); templateCache.Add(_barCSharpTemplate); templateCache.Add(_barFSharpTemplate); Dictionary <string, PackToTemplateEntry> packToTemplateMap = new Dictionary <string, PackToTemplateEntry>(); List <TemplateIdentificationEntry> packOneTemplateInfo = new List <TemplateIdentificationEntry>() { new TemplateIdentificationEntry(_fooOneTemplate.Identity, _fooOneTemplate.GroupIdentity) }; packToTemplateMap[_packOneInfo.Name] = new PackToTemplateEntry(_packOneInfo.Version ?? "", packOneTemplateInfo); List <TemplateIdentificationEntry> packTwoTemplateInfo = new List <TemplateIdentificationEntry>() { new TemplateIdentificationEntry(_fooTwoTemplate.Identity, _fooTwoTemplate.GroupIdentity) }; packToTemplateMap[_packTwoInfo.Name] = new PackToTemplateEntry(_packTwoInfo.Version ?? "", packTwoTemplateInfo); List <TemplateIdentificationEntry> packThreeTemplateInfo = new List <TemplateIdentificationEntry>() { new TemplateIdentificationEntry(_barCSharpTemplate.Identity, _barCSharpTemplate.GroupIdentity), new TemplateIdentificationEntry(_barFSharpTemplate.Identity, _barFSharpTemplate.GroupIdentity) }; packToTemplateMap[_packThreeInfo.Name] = new PackToTemplateEntry(_packThreeInfo.Version ?? "", packThreeTemplateInfo); Dictionary <string, object> additionalData = new Dictionary <string, object>(); if (includehostData) { Dictionary <string, string> frameworkParamSymbolInfo = new Dictionary <string, string>() { { "longName", "framework" }, { "shortName", "f" } }; HostSpecificTemplateData fooTemplateHostData = new MockHostSpecificTemplateData( new Dictionary <string, IReadOnlyDictionary <string, string> >() { { "Framework", frameworkParamSymbolInfo } } ); Dictionary <string, HostSpecificTemplateData> cliHostData = new Dictionary <string, HostSpecificTemplateData>() { { _fooOneTemplate.Identity, fooTemplateHostData }, { _fooTwoTemplate.Identity, fooTemplateHostData } }; additionalData[CliHostSearchCacheData.DataName] = cliHostData; } TemplateDiscoveryMetadata discoveryMetadata = new TemplateDiscoveryMetadata(version, templateCache, packToTemplateMap, additionalData); string targetPath = Path.Combine(fileLocation, "searchCacheV1.json"); File.WriteAllText(targetPath, discoveryMetadata.ToJObject().ToString()); return(Path.Combine(fileLocation, "searchCacheV1.json")); }
#pragma warning disable CS0618, CS0612 // Type or member is obsolete private bool TryReadScraperOutput(string scrapeFilePath, out TemplateDiscoveryMetadata discoveryMetadata) { return(LegacySearchCacheReader.TryReadDiscoveryMetadata(_environmentSettings, scrapeFilePath, null, out discoveryMetadata)); }
private static TemplateDiscoveryMetadata SetupDiscoveryMetadata(bool includehostData = false) { const string version = "1.0.0.0"; List <ITemplateInfo> templateCache = new List <ITemplateInfo>(); templateCache.Add(_fooOneTemplate); templateCache.Add(_fooTwoTemplate); templateCache.Add(_barCSharpTemplate); templateCache.Add(_barFSharpTemplate); Dictionary <string, PackToTemplateEntry> packToTemplateMap = new Dictionary <string, PackToTemplateEntry>(); List <TemplateIdentificationEntry> packOneTemplateInfo = new List <TemplateIdentificationEntry>() { new TemplateIdentificationEntry(_fooOneTemplate.Identity, _fooOneTemplate.GroupIdentity) }; packToTemplateMap[_packOneInfo.Name] = new PackToTemplateEntry(_packOneInfo.Version, packOneTemplateInfo); List <TemplateIdentificationEntry> packTwoTemplateInfo = new List <TemplateIdentificationEntry>() { new TemplateIdentificationEntry(_fooTwoTemplate.Identity, _fooTwoTemplate.GroupIdentity) }; packToTemplateMap[_packTwoInfo.Name] = new PackToTemplateEntry(_packTwoInfo.Version, packTwoTemplateInfo); List <TemplateIdentificationEntry> packThreeTemplateInfo = new List <TemplateIdentificationEntry>() { new TemplateIdentificationEntry(_barCSharpTemplate.Identity, _barCSharpTemplate.GroupIdentity), new TemplateIdentificationEntry(_barFSharpTemplate.Identity, _barFSharpTemplate.GroupIdentity) }; packToTemplateMap[_packThreeInfo.Name] = new PackToTemplateEntry(_packThreeInfo.Version, packThreeTemplateInfo); Dictionary <string, object> additionalData = new Dictionary <string, object>(); if (includehostData) { Dictionary <string, string> frameworkParamSymbolInfo = new Dictionary <string, string>() { { "longName", "framework" }, { "shortName", "f" } }; HostSpecificTemplateData fooTemplateHostData = new MockHostSpecificTemplateData( new Dictionary <string, IReadOnlyDictionary <string, string> >() { { "Framework", frameworkParamSymbolInfo } } ); Dictionary <string, HostSpecificTemplateData> cliHostData = new Dictionary <string, HostSpecificTemplateData>() { { _fooOneTemplate.Identity, fooTemplateHostData }, { _fooTwoTemplate.Identity, fooTemplateHostData } }; additionalData[CliNuGetSearchCacheConfig.CliHostDataName] = cliHostData; } TemplateDiscoveryMetadata discoveryMetadta = new TemplateDiscoveryMetadata(version, templateCache, packToTemplateMap, additionalData); return(discoveryMetadta); }