Exemplo n.º 1
0
        public void PopulateCatalog_WhenPluginPathContainsInvalidDirectory_IgnoresIt()
        {
            var loader = new PluginLoader();
            var catalog = MockRepository.GenerateMock<IPluginCatalog>();
            loader.AddPluginPath(@"C:\This\Directory\Does\Not\Exist");

            loader.PopulateCatalog(catalog, NullProgressMonitor.CreateInstance());

            catalog.VerifyAllExpectations(); // nothing added to catalog
        }
        private PluginLoader SetupPluginLoader(IProgressMonitor progressMonitor)
        {
            var pluginLoader = new PluginLoader();

            using (var subProgressMonitor = progressMonitor.CreateSubProgressMonitor(10))
            {
                subProgressMonitor.BeginTask(Resources.UpdatePluginFolderCommand_Adding_plugin_path, 100);
                pluginLoader.AddPluginPath(PluginFolder);
            }
            
            return pluginLoader;
        }
Exemplo n.º 3
0
        public void PopulateCatalog_WhenPluginPathRefersToDirectoryWithAtLeastOnePluginFile_LoadsIt()
        {
            string pluginContents = GenerateValidPluginXml();

            RunWithTemporaryPluginFile((pluginDir, pluginFile) =>
            {
                var loader = new PluginLoader();
                var catalog = MockRepository.GenerateMock<IPluginCatalog>();
                loader.AddPluginPath(pluginDir);

                Plugin plugin = null;
                DirectoryInfo baseDirectory = null;
                catalog.Expect(x => x.AddPlugin(null, null)).IgnoreArguments()
                    .Do((Gallio.Common.Action<Plugin, DirectoryInfo>) delegate(Plugin pluginArg, DirectoryInfo baseDirectoryArg)
                {
                    plugin = pluginArg;
                    baseDirectory = baseDirectoryArg;
                });

                loader.PopulateCatalog(catalog, NullProgressMonitor.CreateInstance());

                catalog.VerifyAllExpectations(); // added one plugin

                Assert.Multiple(() =>
                {
                    Assert.AreEqual("pluginId", plugin.PluginId);
                    Assert.AreEqual("serviceId", plugin.Services[0].ServiceId);
                    Assert.AreEqual("componentId", plugin.Components[0].ComponentId);
                    Assert.AreEqual("Assembly1", plugin.Assemblies[0].FullName);
                    Assert.AreEqual("CodeBase.dll", plugin.Assemblies[0].CodeBase);
                    Assert.AreEqual("Assembly2", plugin.Assemblies[1].FullName);

                    Assert.AreEqual(pluginDir, baseDirectory.ToString());
                });
            }, pluginContents);
        }
Exemplo n.º 4
0
        public void DefinePreprocessorConstant_WhenConstantIsNull_Throws()
        {
            var loader = new PluginLoader();

            Assert.Throws<ArgumentNullException>(() => loader.DefinePreprocessorConstant(null));
        }
Exemplo n.º 5
0
        public void AddPluginXml_WhenBaseDirectoryIsNull_Throws()
        {
            var loader = new PluginLoader();

            Assert.Throws<ArgumentNullException>(() => loader.AddPluginXml("", null));
        }
Exemplo n.º 6
0
        public void AddPluginXml_WhenPluginXmlIsNull_Throws()
        {
            var loader = new PluginLoader();

            Assert.Throws<ArgumentNullException>(() => loader.AddPluginXml(null, new DirectoryInfo(@"C:\")));
        }
Exemplo n.º 7
0
        public void AddPluginPath_WhenPluginPathIsNull_Throws()
        {
            var loader = new PluginLoader();

            Assert.Throws<ArgumentNullException>(() => loader.AddPluginPath(null));
        }
Exemplo n.º 8
0
        public void PopulateCatalog_WhenCatalogIsNull_Throws()
        {
            var loader = new PluginLoader();

            Assert.Throws<ArgumentNullException>(() => loader.PopulateCatalog(null, NullProgressMonitor.CreateInstance()));
        }
Exemplo n.º 9
0
        public void InstallationId_CanGetSet()
        {
            var loader = new PluginLoader();

            Assert.AreEqual(Guid.Empty, loader.InstallationId);

            Guid guid = Guid.NewGuid();
            loader.InstallationId = guid;

            Assert.AreEqual(guid, loader.InstallationId);
        }
Exemplo n.º 10
0
        public void PopulateCatalog_WhenPluginXmlContainsPreprocessorInstructions_AppliesThem()
        {
            string pluginContents = "<plugin pluginId=\"pluginId\" xmlns=\"http://www.gallio.org/\"><traits><?ifdef A?><name>A</name><?endif?><?ifdef B?><property>B</property><?endif?></traits></plugin>";

            var loader = new PluginLoader();
            var catalog = MockRepository.GenerateMock<IPluginCatalog>();
            loader.AddPluginXml(pluginContents, new DirectoryInfo(@"C:\"));
            loader.DefinePreprocessorConstant("A");

            Plugin plugin = null;
            catalog.Expect(x => x.AddPlugin(null, null)).IgnoreArguments()
                .Do((Gallio.Common.Action<Plugin, DirectoryInfo>)delegate(Plugin pluginArg, DirectoryInfo baseDirectoryArg)
                {
                    plugin = pluginArg;
                });

            loader.PopulateCatalog(catalog, NullProgressMonitor.CreateInstance());

            catalog.VerifyAllExpectations(); // added one plugin

            Assert.AreEqual(new PropertySet() { { "name", "A" } }, plugin.Traits.PropertySet);
        }
Exemplo n.º 11
0
        public void PopulateCatalog_WhenPluginXmlIsInvalid_Throws()
        {
            string pluginContents = GenerateInvalidPluginXml();

            var loader = new PluginLoader();
            var catalog = MockRepository.GenerateMock<IPluginCatalog>();
            loader.AddPluginXml(pluginContents, new DirectoryInfo(@"C:\"));

            var ex = Assert.Throws<RuntimeException>(() => loader.PopulateCatalog(catalog, NullProgressMonitor.CreateInstance()));
            Assert.AreEqual("Failed to read and parse plugin metadata from Xml configuration.", ex.Message);
            Assert.IsInstanceOfType<ValidationException>(ex.InnerException);

            catalog.VerifyAllExpectations(); // no plugins added
        }
Exemplo n.º 12
0
        public void PopulateCatalog_WhenPluginPathContainsInvalidPluginFile_Throws()
        {
            string pluginContents = GenerateInvalidPluginXml();

            RunWithTemporaryPluginFile((pluginDir, pluginFile) =>
            {
                var loader = new PluginLoader();
                var catalog = MockRepository.GenerateMock<IPluginCatalog>();
                loader.AddPluginPath(pluginFile);

                var ex = Assert.Throws<RuntimeException>(() => loader.PopulateCatalog(catalog, NullProgressMonitor.CreateInstance()));
                Assert.AreEqual(string.Format("Failed to read and parse plugin metadata file '{0}'.", pluginFile), ex.Message);
                Assert.IsInstanceOfType<ValidationException>(ex.InnerException);

                catalog.VerifyAllExpectations(); // no plugins added
            }, pluginContents);
        }