public void Convert_detection_of_file_properties_files_is_case_invariant()
        {
            var file1 = new EmptyFile(s_File1);
            var filePropertiesFile = FilePropertiesFile.ForFile(null, file1);

            var mock = new Mock<IReadableFile>(MockBehavior.Strict);
            mock.Setup(f => f.Name).Returns(file1.Name + FilePropertiesFile.FileNameSuffix.ToUpper());
            mock.Setup(f => f.OpenRead()).Returns(filePropertiesFile.OpenRead());

            var directoryCreator = new LocalItemCreator();
            using (var temporaryDirectory = directoryCreator.CreateTemporaryDirectory(
                new Directory(Path.GetRandomFileName())
                {
                    dir =>
                    {
                        mock.Setup(d => d.Parent).Returns(dir);
                        return mock.Object;
                    }
                }))
            {
                var metaFs = m_Instance.Convert(temporaryDirectory.Directory);

                Assert.Empty(metaFs.Directories);
                Assert.True(metaFs.GetFile(s_File1 + FilePropertiesFile.FileNameSuffix) is FilePropertiesFile);
            }

        }
示例#2
0
 public GitDirectoryTest()
 {
     m_DirectoryCreator = new LocalItemCreator();
     m_Repository = m_DirectoryCreator.CreateTemporaryDirectory();
     
     RepositoryInitHelper.InitializeRepository(m_Repository.Directory.Location);            
 }
        public void Convert_replaces_files_with_DirectoryPropertiesFile_instances()
        {
            var input = new Directory(Path.GetRandomFileName());
            input.Add(_ => DirectoryPropertiesFile.ForDirectory(null, input));


            var directoryCreator = new LocalItemCreator();
            using (var temporaryDirectory = directoryCreator.CreateTemporaryDirectory(input))
            {
                var metaFs = m_Instance.Convert(temporaryDirectory.Directory);

                Assert.Empty(metaFs.Directories);
                Assert.True(metaFs.GetFile(DirectoryPropertiesFile.FileName) is DirectoryPropertiesFile);
            }
        }
        public void Convert_replaces_files_with_FilePropertiesFile_instances()
        {
            var input = new Directory(Path.GetRandomFileName())
            {
                dir => FilePropertiesFile.ForFile(dir, new EmptyFile(s_File1))
            };

            var directoryCreator = new LocalItemCreator();
            using (var temporaryDirectory = directoryCreator.CreateTemporaryDirectory(input))
            {
                var metaFs = m_Instance.Convert(temporaryDirectory.Directory);

                Assert.Empty(metaFs.Directories);
                Assert.True(metaFs.GetFile(s_File1 + FilePropertiesFile.FileNameSuffix) is FilePropertiesFile);
            }
        }
示例#5
0
        /// <summary>
        /// Initializes a new bare repository at the specified location, adds a repository info file to the root directory
        /// and tags the initial commit with he value of <see cref="InitialCommitTagName"/>
        /// </summary>
        public static void InitializeRepository(string location)
        {            
            // initialize a bare repository
            Repository.Init(location, true);

            var directoryCreator = new LocalItemCreator();

            // clone the repository, add initial commit and push the changes back to the actual repository
            using (var tempDirectory = directoryCreator.CreateTemporaryDirectory())
            {
                var clonedRepoPath = Repository.Clone(location, tempDirectory.Directory.Location);

                var repositoryInfoFile = new RepositoryInfoFile(tempDirectory.Directory);

                // add a empty file to the repository
                directoryCreator.CreateFile(repositoryInfoFile, tempDirectory.Directory.Location);

                // commit and push the file to the bare repository we created
                using (var clonedRepo = new Repository(clonedRepoPath))
                {
                    var signature = SignatureHelper.NewSignature();

                    clonedRepo.Stage(repositoryInfoFile.Name);
                    clonedRepo.Commit("Initial Commit", signature, signature, new CommitOptions());                    

                    clonedRepo.Network.Push(clonedRepo.Network.Remotes["origin"], @"refs/heads/master");                    
                }
            }

            //create the configuration branch pointing to the initial commit
            using (var repository = new Repository(location))
            {
                repository.CreateBranch(ConfigurationBranchName.ToString(), repository.GetAllCommits().Single());
                repository.Tags.Add(InitialCommitTagName, repository.GetAllCommits().Single());
            }
        }
        public void Convert_detection_of_directory_properties_files_is_case_invariant()
        {
            var directory = new Directory(Path.GetRandomFileName());
            var directoryPropertiesFile = DirectoryPropertiesFile.ForDirectory(null, directory);
            
            var mock = new Mock<IReadableFile>();
            mock.Setup(f => f.Name).Returns(DirectoryPropertiesFile.FileName.ToUpper());
            mock.Setup(f => f.OpenRead()).Returns(directoryPropertiesFile.OpenRead());

            directory.Add(dir => mock.Object);

            var directoryCreator = new LocalItemCreator();
            using (var temporaryDirectory = directoryCreator.CreateTemporaryDirectory(directory))
            {
                var metaFs = m_Instance.Convert(temporaryDirectory.Directory);

                Assert.Empty(metaFs.Directories);
                Assert.True(metaFs.GetFile(DirectoryPropertiesFile.FileName) is DirectoryPropertiesFile);
            }

        }