Пример #1
0
        public void ShowToolwindowNegativeTest()
        {
            IVsPackage package = new CloudFoundryVisualStudioPackage() as IVsPackage;

            // Create a basic service provider
            OleServiceProvider serviceProvider = OleServiceProvider.CreateOleServiceProviderWithBasicServices();

            //Add uishell service that knows how to create a toolwindow
            BaseMock uiShellService = UIShellServiceMock.GetUiShellInstanceCreateToolWinReturnsNull();

            serviceProvider.AddService(typeof(SVsUIShell), uiShellService, false);

            // Site the package
            Assert.AreEqual(0, package.SetSite(serviceProvider), "SetSite did not return S_OK");

            MethodInfo method = typeof(CloudFoundryVisualStudioPackage).GetMethod("ShowToolWindow", BindingFlags.NonPublic | BindingFlags.Instance);

            //Invoke thows TargetInvocationException, but we want it's inner Exception thrown by ShowToolWindow, InvalidOperationException.
            try
            {
                object result = method.Invoke(package, new object[] { null, null });
            }
            catch (Exception e)
            {
                throw e.InnerException;
            }
        }
Пример #2
0
        public void SetSite()
        {
            // Create the package
            IVsPackage package = new CloudFoundryVisualStudioPackage() as IVsPackage;

            Assert.IsNotNull(package, "The object does not implement IVsPackage");

            // Create a basic service provider
            OleServiceProvider serviceProvider = OleServiceProvider.CreateOleServiceProviderWithBasicServices();

            // Add site support for activity log
            BaseMock activityLogMock = new GenericMockFactory("MockVsActivityLog", new[] { typeof(Microsoft.VisualStudio.Shell.Interop.IVsActivityLog) }).GetInstance();

            serviceProvider.AddService(typeof(Microsoft.VisualStudio.Shell.Interop.SVsActivityLog), activityLogMock, true);

            // Add site support to register editor factory
            BaseMock registerEditor = RegisterEditorMock.GetRegisterEditorsInstance();

            serviceProvider.AddService(typeof(SVsRegisterEditors), registerEditor, false);

            // Site the package
            Assert.AreEqual(0, package.SetSite(serviceProvider), "SetSite did not return S_OK");

            // Unsite the package
            Assert.AreEqual(0, package.SetSite(null), "SetSite(null) did not return S_OK");
        }
Пример #3
0
        public void ValidateToolWindowShown()
        {
            IVsPackage package = new CloudFoundryVisualStudioPackage() as IVsPackage;

            // Create a basic service provider
            OleServiceProvider serviceProvider = OleServiceProvider.CreateOleServiceProviderWithBasicServices();

            //Add uishell service that knows how to create a toolwindow
            BaseMock uiShellService = UIShellServiceMock.GetUiShellInstanceCreateToolWin();

            serviceProvider.AddService(typeof(SVsUIShell), uiShellService, false);

            // Add site support for activity log
            BaseMock activityLogMock = new GenericMockFactory("MockVsActivityLog", new[] { typeof(Microsoft.VisualStudio.Shell.Interop.IVsActivityLog) }).GetInstance();

            serviceProvider.AddService(typeof(Microsoft.VisualStudio.Shell.Interop.SVsActivityLog), activityLogMock, true);

            // Add site support to register editor factory
            BaseMock registerEditor = RegisterEditorMock.GetRegisterEditorsInstance();

            serviceProvider.AddService(typeof(SVsRegisterEditors), registerEditor, false);

            // Site the package
            Assert.AreEqual(0, package.SetSite(serviceProvider), "SetSite did not return S_OK");

            MethodInfo method = typeof(CloudFoundryVisualStudioPackage).GetMethod("ShowToolWindow", BindingFlags.NonPublic | BindingFlags.Instance);

            object result = method.Invoke(package, new object[] { null, null });
        }
Пример #4
0
        private async Task DownloadFile()
        {
            List <RetrieveFileResponse> file = await this.client.Files.RetrieveFile(this.app.Guid, this.instanceNumber, this.filePath);

            if (file.Count == 1)
            {
                string content = file[0].FileContent;

                string downloadPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), this.fileName);

                System.IO.File.WriteAllText(downloadPath, content);

                EnvDTE.DTE dte = (EnvDTE.DTE)CloudFoundryVisualStudioPackage.GetGlobalService(typeof(EnvDTE.DTE));
                dte.ItemOperations.OpenFile(downloadPath);
            }
            else
            {
                throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Error retrieving file contents {0}", this.fileName));
            }
        }
Пример #5
0
        public void IsIVsPackage()
        {
            CloudFoundryVisualStudioPackage package = new CloudFoundryVisualStudioPackage();

            Assert.IsNotNull(package as IVsPackage, "The object does not implement IVsPackage");
        }
Пример #6
0
 public void CreateInstance()
 {
     CloudFoundryVisualStudioPackage package = new CloudFoundryVisualStudioPackage();
 }
Пример #7
0
        public static void Publish(EnvDTE.Project project, Dictionary <string, string> buildProperties, Microsoft.Build.Framework.LoggerVerbosity verbosity)
        {
            if (project == null)
            {
                throw new ArgumentNullException("project");
            }

            if (buildProperties == null)
            {
                throw new ArgumentNullException("buildProperties");
            }

            System.Threading.Tasks.Task.Factory.StartNew(() =>
            {
                DTE dte    = (DTE)CloudFoundryVisualStudioPackage.GetGlobalService(typeof(DTE));
                var window = dte.Windows.Item(EnvDTE.Constants.vsWindowKindOutput);
                var output = (OutputWindow)window.Object;

                OutputWindowPane pane = null;

                pane = output.OutputWindowPanes.Cast <OutputWindowPane>().FirstOrDefault(x => x.Name == "Publish");

                if (pane == null)
                {
                    pane = output.OutputWindowPanes.Add("Publish");
                }

                var showOutputWindowPropertyValue = VsUtils.GetVisualStudioSetting("Environment", "ProjectsAndSolution", "ShowOutputWindowBeforeBuild");

                if (showOutputWindowPropertyValue != null)
                {
                    if ((bool)showOutputWindowPropertyValue == true)
                    {
                        window.Visible = true;
                    }
                }

                pane.Activate();

                ErrorListProvider errorList = CloudFoundryVisualStudioPackage.GetErrorListPane;

                if (errorList == null)
                {
                    throw new InvalidOperationException("Could not retrieve error list provider");
                }

                errorList.Tasks.Clear();

                MSBuildLogger customLogger = new MSBuildLogger(pane, errorList);

                customLogger.Verbosity = verbosity;
                pane.Clear();

                pane.OutputString("Starting push...");

                Microsoft.Build.Evaluation.Project websiteProject = null;

                using (var buildManager = new BuildManager())
                {
                    using (var projectCollection = new ProjectCollection())
                    {
                        string proj = project.FullName;

                        if (project.Object is VsWebSite.VSWebSite)
                        {
                            string projectDir = new System.IO.DirectoryInfo(System.IO.Path.GetDirectoryName(buildProperties["PublishProfile"])).Parent.Parent.FullName;
                            proj = Path.Combine(projectDir, CloudFoundry.VisualStudio.ProjectPush.PushEnvironment.DefaultWebsiteProjectName);
                        }

                        websiteProject = projectCollection.LoadProject(proj);

                        foreach (KeyValuePair <string, string> parameter in buildProperties)
                        {
                            websiteProject.SetProperty(parameter.Key, parameter.Value);
                        }

                        BuildParameters buildParameters = new BuildParameters(projectCollection);
                        buildParameters.Loggers         = new List <ILogger>()
                        {
                            customLogger
                        };
                        BuildRequestData buildRequestData = new BuildRequestData(websiteProject.CreateProjectInstance(), new string[] { });

                        buildManager.Build(buildParameters, buildRequestData);
                        if (errorList.Tasks.Count > 0)
                        {
                            errorList.BringToFront();
                        }

                        pane.OutputString("Push operation finished!");
                        projectCollection.UnregisterAllLoggers();
                    }
                }
            });
        }