public void GetFilesFromCurrentAssembly_NoConfigFilesFound()
        {
            var configurationFileLocator = new ConfigurationFileLocator();
            var files = configurationFileLocator.GetFilesFromCurrentAssembly();

            Assert.That(files, Is.Empty);
        }
        public void GetFilesFromParsedType_NoConfigFilesFound()
        {
            var typeNodeFactory = IntrospectionUtility.TypeNodeFactory <ConfigurationFileLocatorTest>();

            var configurationFileLocator = new ConfigurationFileLocator();
            var files = configurationFileLocator.GetFilesFromParsedType(typeNodeFactory);

            Assert.That(files, Is.Empty);
        }
        public void GetFilesFromCurrentAssembly()
        {
            var configurationFileLocator = new ConfigurationFileLocator();

            var orignialAssemblyLocation = GetOrignialAssemblyLocation();
            var sampleConfigLocation     = Path.Combine(orignialAssemblyLocation, "Config\\SampleConfig.xml");
            var expectedConfigLocation   = Path.Combine(Path.GetDirectoryName(configurationFileLocator.GetType().Assembly.Location), "config.injectioncop");

            try
            {
                File.Copy(sampleConfigLocation, expectedConfigLocation);

                var files = configurationFileLocator.GetFilesFromCurrentAssembly();

                Assert.That(files, Contains.Item(Path.GetFullPath(expectedConfigLocation)));
            }
            finally
            {
                File.Delete(expectedConfigLocation);
            }
        }
        public void GetFilesFromParsedType()
        {
            var orignialAssemblyLocation = GetOrignialAssemblyLocation();
            var sampleConfigLocation     = Path.Combine(orignialAssemblyLocation, "Config\\SampleConfig.xml");
            var expectedConfigLocation   = Path.Combine(Path.GetDirectoryName(GetType().Assembly.Location), "config.injectioncop");
            var typeNode = IntrospectionUtility.TypeNodeFactory <ConfigurationFileLocatorTest>();

            try
            {
                File.Copy(sampleConfigLocation, expectedConfigLocation);

                var configurationFileLocator = new ConfigurationFileLocator();
                var files = configurationFileLocator.GetFilesFromParsedType(typeNode);

                Assert.That(files, Contains.Item(Path.GetFullPath(expectedConfigLocation)));
            }
            finally
            {
                File.Delete(expectedConfigLocation);
            }
        }
        public void DiscoverProjectFileInSubFolderWorks()
        {
            var fileSystem = new FileSystemMock();

            fileSystem
            .AddDirectory(@"d:\foo")
            .AddDirectory(@"bar")
            .AddDirectory(@"base").Parent
            .AddDirectory(@"chrome").Parent
            .AddDirectory(@"content").Parent
            .AddFile(@"presubmit.py", "hello").Parent
            .AddFile(@"test.txt", "some text content");

            // Add configuration directory
            AddConfigFile(fileSystem, ConfigurationFileNames.ChromiumEnlistmentDetectionPatterns);
            AddConfigFile(fileSystem, ConfigurationSectionNames.SourceExplorerIgnoreObsolete);
            AddConfigFile(fileSystem, ConfigurationSectionNames.SearchableFilesIgnore);
            AddConfigFile(fileSystem, ConfigurationSectionNames.SearchableFilesInclude);

            var locator  = new ConfigurationFileLocator(fileSystem);
            var provider = new ChromiumProjectDiscoveryProvider(locator, fileSystem);
            var project  = provider.GetProjectFromAnyPath(new FullPath(@"d:\foo\bar\test.txt"));

            Assert.IsNotNull(project);
            Assert.AreEqual(@"d:\foo\bar", project.RootPath.Value);
            Assert.IsTrue(project.FileFilter.Include(new RelativePath("none.txt")));
            Assert.IsTrue(project.DirectoryFilter.Include(new RelativePath("none")));
            Assert.IsTrue(project.SearchableFilesFilter.Include(new RelativePath("source.cpp")));


            project = provider.GetProjectFromAnyPath(new FullPath(@"d:\foo\bar"));
            Assert.IsNotNull(project);
            Assert.AreEqual(@"d:\foo\bar", project.RootPath.Value);

            project = provider.GetProjectFromAnyPath(new FullPath(@"d:\foo"));
            Assert.IsNull(project);
        }