public void WebProjectBuildWarnings() { using (var app = new PythonVisualStudioApp()) using (app.SelectDefaultInterpreter(PythonPaths.Python33 ?? PythonPaths.Python33_x64)) { var project = app.CreateProject( PythonVisualStudioApp.TemplateLanguageName, PythonVisualStudioApp.EmptyWebProjectTemplate, TestData.GetTempPath(), "WebProjectBuildWarnings" ); var proj = project.GetPythonProject(); Assert.IsNotNull(proj); Assert.AreEqual(new Version(3, 3), app.ServiceProvider.GetUIThread().Invoke(() => proj.GetLaunchConfigurationOrThrow().Interpreter.Version)); for (int iteration = 0; iteration <= 2; ++iteration) { var warnings = app.ServiceProvider.GetUIThread().Invoke(() => { var buildPane = app.GetOutputWindow("Build"); buildPane.Clear(); project.DTE.Solution.SolutionBuild.Clean(true); project.DTE.Solution.SolutionBuild.Build(true); var text = app.GetOutputWindowText("Build"); Console.WriteLine(text); return text.Split('\r', '\n') .Select(s => Regex.Match(s, @"warning\s*:\s*(?<msg>.+)")) .Where(m => m.Success) .Select(m => m.Groups["msg"].Value) .ToList(); }); Console.WriteLine("Warnings:{0}{1}", Environment.NewLine, string.Join(Environment.NewLine, warnings)); if (iteration < 2) { Assert.IsNotNull( warnings.FirstOrDefault(s => Regex.IsMatch(s, @"Python( 64-bit)? 3\.3 is not natively supported.+")), "Missing \"not natively supported\" warning" ); } else { // Third time through, we've fixed this warning. Assert.IsNull( warnings.FirstOrDefault(s => Regex.IsMatch(s, @"Python( 64-bit)? 3\.3 is not natively supported.+")), "Still recieved \"not natively supported\" warning" ); } if (iteration < 1) { Assert.IsNotNull( warnings.FirstOrDefault(s => Regex.IsMatch(s, "Using old configuration tools.+")), "Missing \"old configuration tools\" warning" ); } else { // Second time through, we've fixed this warning. Assert.IsNull( warnings.FirstOrDefault(s => Regex.IsMatch(s, "Using old configuration tools.+")), "Still received \"old configuration tools\" warning" ); } switch (iteration) { case 0: app.AddItem(project, PythonVisualStudioApp.TemplateLanguageName, PythonVisualStudioApp.WebRoleSupportTemplate, "bin"); break; case 1: var model = app.GetService<IComponentModel>(typeof(SComponentModel)); var interpreterService = model.GetService<IInterpreterRegistryService>(); var optionsService = model.GetService<IInterpreterOptionsService>(); var newInterpreter = interpreterService.FindInterpreter("Global|PythonCore|3.4|x86") ?? interpreterService.FindInterpreter("Global|PythonCore|2.7|x86"); Assert.IsNotNull(newInterpreter); optionsService.DefaultInterpreter = newInterpreter; break; } } } }