コード例 #1
0
        public void SetUp()
        {
            // In order to make the "await LicenseHeadersPackage.Instance.JoinableTaskFactory.SwitchToMainThreadAsync();" call in
            // LinkedFileHandler.HandleAsync work, we need to set the private JoinableTaskFactory property accordingly.
            // Source: https://github.com/microsoft/vs-threading/blob/main/doc/testing_vs.md
#pragma warning disable VSSDK005
            var jtc = new JoinableTaskContext();
#pragma warning restore VSSDK005
            VisualStudioTestContext.SetPrivateSetPackageProperty(nameof(ILicenseHeaderExtension.JoinableTaskFactory), jtc.Factory);
        }
コード例 #2
0
        public async Task Filter_GivenLicenseHeaderFile_PopulatesToBeProgressedProperty()
        {
            await VisualStudioTestContext.SwitchToMainThread();

            const string licenseHeaderFileName = "test.licenseheader";

            try
            {
                var solution   = MockRepository.GenerateMock <Solution>();
                var linkedFile = MockRepository.GenerateMock <ProjectItem>();

                var licenseHeaderFile = MockRepository.GenerateStub <ProjectItem>();
                licenseHeaderFile.Expect(x => x.FileCount).Return(1);
                licenseHeaderFile.Expect(x => x.FileNames[0]).Return(licenseHeaderFileName);

                using (var writer = new StreamWriter(licenseHeaderFileName))
                {
                    writer.WriteLine("extension: .cs");
                    writer.WriteLine("//test");
                }

                var projectItems = MockRepository.GenerateStub <ProjectItems>();
                projectItems.Stub(x => x.GetEnumerator())
                .Return(null)
                .WhenCalled(x => x.ReturnValue = new List <ProjectItem> {
                    licenseHeaderFile
                }.GetEnumerator());

                linkedFile.Expect(x => x.ProjectItems).Return(projectItems);
                linkedFile.Expect(x => x.Name).Return("linkedFile.cs");
                solution.Expect(x => x.FindProjectItem("linkedFile.cs")).Return(linkedFile);

                // LicenseHeaderFinder is invoked by LinkedFileFilter and uses LicenseHeadersPackage.Instance.LicenseHeaderExtractor.
                // Since LicenseHeaderExtractor is set during MEF-controlled initialization, set the private-set LicenseHeaderExtractor
                // to make it work via tests as well.
                VisualStudioTestContext.SetPrivateSetPackageProperty(nameof(ILicenseHeaderExtension.LicenseHeaderExtractor), new LicenseHeaderExtractor());

                var linkedFileFilter = new LinkedFileFilter(solution);
                linkedFileFilter.Filter(new List <ProjectItem> {
                    linkedFile
                });

                Assert.That(linkedFileFilter.ToBeProgressed, Is.Not.Empty);
                Assert.That(linkedFileFilter.NoLicenseHeaderFile, Is.Empty);
                Assert.That(linkedFileFilter.NotInSolution, Is.Empty);
            }
            finally
            {
                File.Delete(licenseHeaderFileName);
            }
        }