Пример #1
0
 public MockOdbBackendStream(MockOdbBackend backend, GitObjectType objectType, long length)
     : base(backend)
 {
     m_type   = objectType;
     m_length = length;
     m_hash   = new SHA1CryptoServiceProvider();
 }
Пример #2
0
        public void CanRetrieveObjectsThroughOddSizedShortShas()
        {
            string repoPath = InitNewRepository();

            using (var repo = new Repository(repoPath))
            {
                var backend = new MockOdbBackend();
                repo.ObjectDatabase.AddBackend(backend, priority: 5);

                AddCommitToRepo(repo);

                var blob1 = repo.Lookup <Blob>("9daeaf");
                Assert.NotNull(blob1);

                const string dummy = "dummy\n";

                // Inserts a fake blob with a similarly prefixed sha
                var fakeId = new ObjectId("9daeaf0000000000000000000000000000000000");
                using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(dummy)))
                {
                    Assert.Equal(0, backend.Write(fakeId, ms, dummy.Length, ObjectType.Blob));
                }

                var blob2 = repo.Lookup <Blob>(fakeId);
                Assert.NotNull(blob2);

                Assert.Throws <AmbiguousSpecificationException>(() => repo.Lookup <Blob>("9daeaf"));

                var newBlob1 = repo.Lookup("9daeafb");
                var newBlob2 = repo.Lookup("9daeaf0");

                Assert.Equal(blob1, newBlob1);
                Assert.Equal(blob2, newBlob2);
            }
        }
Пример #3
0
        public void ADisposableOdbBackendGetsDisposedUponRepositoryDisposal()
        {
            string path = InitNewRepository();

            int nbOfDisposeCalls = 0;

            using (var repo = new Repository(path))
            {
                var mockOdbBackend = new MockOdbBackend(() => { nbOfDisposeCalls++; });

                Assert.IsAssignableFrom<IDisposable>(mockOdbBackend);

                repo.ObjectDatabase.AddBackend(mockOdbBackend, 5);

                Assert.Equal(0, nbOfDisposeCalls);
            }

            Assert.Equal(1, nbOfDisposeCalls);
        }
        public void ADisposableOdbBackendGetsDisposedUponRepositoryDisposal()
        {
            string path = InitNewRepository();

            int nbOfDisposeCalls = 0;

            using (var repo = new Repository(path))
            {
                var mockOdbBackend = new MockOdbBackend(() => { nbOfDisposeCalls++; });

                Assert.IsAssignableFrom <IDisposable>(mockOdbBackend);

                repo.ObjectDatabase.AddBackend(mockOdbBackend, 5);

                Assert.Equal(0, nbOfDisposeCalls);
            }

            Assert.Equal(1, nbOfDisposeCalls);
        }
Пример #5
0
        public void CanEnumerateTheContentOfTheObjectDatabase()
        {
            string repoPath = InitNewRepository();

            using (var repo = new Repository(repoPath))
            {
                var backend = new MockOdbBackend();
                repo.ObjectDatabase.AddBackend(backend, priority: 5);

                AddCommitToRepo(repo);

                var expected = new[] { "1fe3126", "2b297e6", "6518215", "9daeafb" };

                IEnumerable <GitObject> objs = repo.ObjectDatabase;

                IEnumerable <string> retrieved =
                    objs
                    .Select(o => o.Id.ToString(7))
                    .OrderBy(s => s, StringComparer.Ordinal);

                Assert.Equal(expected, retrieved);
            }
        }
Пример #6
0
        public void CanEnumerateTheContentOfTheObjectDatabase()
        {
            string repoPath = InitNewRepository();

            using (var repo = new Repository(repoPath))
            {
                var backend = new MockOdbBackend();
                repo.ObjectDatabase.AddBackend(backend, priority: 5);

                AddCommitToRepo(repo);

                var expected = new[]{ "1fe3126", "2b297e6", "6518215", "9daeafb" };

                IEnumerable<GitObject> objs = repo.ObjectDatabase;

                IEnumerable<string> retrieved =
                    objs
                    .Select(o => o.Id.ToString(7))
                    .OrderBy(s => s, StringComparer.Ordinal);

                Assert.Equal(expected, retrieved);
            }
        }
Пример #7
0
 public MockOdbBackendStream(MockOdbBackend backend, ObjectType objectType, long length)
     : base(backend)
 {
     m_type   = objectType;
     m_length = length;
 }
Пример #8
0
 public MockOdbBackendStream(MockOdbBackend backend, ObjectType objectType, long length)
     : base(backend)
 {
     m_type = objectType;
     m_length = length;
 }
Пример #9
0
        public void CanRetrieveObjectsThroughOddSizedShortShas()
        {
            string repoPath = InitNewRepository();

            using (var repo = new Repository(repoPath))
            {
                var backend = new MockOdbBackend();
                repo.ObjectDatabase.AddBackend(backend, priority: 5);

                AddCommitToRepo(repo);

                var blob1 = repo.Lookup<Blob>("9daeaf");
                Assert.NotNull(blob1);

                const string dummy = "dummy\n";

                // Inserts a fake blob with a similarly prefixed sha
                var fakeId = new ObjectId("9daeaf0000000000000000000000000000000000");
                using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(dummy)))
                {
                    Assert.Equal(0, backend.Write(fakeId, ms, dummy.Length, ObjectType.Blob));
                }

                var blob2 = repo.Lookup<Blob>(fakeId);
                Assert.NotNull(blob2);

                Assert.Throws<AmbiguousSpecificationException>(() => repo.Lookup<Blob>("9daeaf"));

                var newBlob1 = repo.Lookup("9daeafb");
                var newBlob2 = repo.Lookup("9daeaf0");

                Assert.Equal(blob1, newBlob1);
                Assert.Equal(blob2, newBlob2);
            }
        }