Example #1
0
        public virtual void TestAbbreviateLooseBlob()
        {
            ObjectId id = test.Blob("test");

            NUnit.Framework.Assert.AreEqual(id.Abbreviate(2), reader.Abbreviate(id, 2));
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(7), reader.Abbreviate(id, 7));
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(8), reader.Abbreviate(id, 8));
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(10), reader.Abbreviate(id, 10));
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(16), reader.Abbreviate(id, 16));
            ICollection <ObjectId> matches = reader.Resolve(reader.Abbreviate(id, 8));

            NUnit.Framework.Assert.IsNotNull(matches);
            NUnit.Framework.Assert.AreEqual(1, matches.Count);
            NUnit.Framework.Assert.AreEqual(id, matches.Iterator().Next());
            NUnit.Framework.Assert.AreEqual(id, db.Resolve(reader.Abbreviate(id, 8).Name));
        }
Example #2
0
        public virtual void TestCreateFileHeader_Delete()
        {
            ObjectId   adId       = Blob("a\nd\n");
            DiffEntry  ent        = DiffEntry.Delete("FOO", adId);
            FileHeader fh         = df.ToFileHeader(ent);
            string     diffHeader = "diff --git a/FOO b/FOO\n" + "deleted file mode " + REGULAR_FILE
                                    + "\n" + "index " + adId.Abbreviate(8).Name + ".." + ObjectId.ZeroId.Abbreviate
                                        (8).Name + "\n" + "--- a/FOO\n" + "+++ /dev/null\n";

            //
            //
            //
            NUnit.Framework.Assert.AreEqual(diffHeader, RawParseUtils.Decode(fh.GetBuffer()));
            NUnit.Framework.Assert.AreEqual(0, fh.GetStartOffset());
            NUnit.Framework.Assert.AreEqual(fh.GetBuffer().Length, fh.GetEndOffset());
            NUnit.Framework.Assert.AreEqual(FileHeader.PatchType.UNIFIED, fh.GetPatchType());
            NUnit.Framework.Assert.AreEqual(1, fh.GetHunks().Count);
            HunkHeader hh = fh.GetHunks()[0];

            NUnit.Framework.Assert.AreEqual(1, hh.ToEditList().Count);
            EditList el = hh.ToEditList();

            NUnit.Framework.Assert.AreEqual(1, el.Count);
            Edit e = el[0];

            NUnit.Framework.Assert.AreEqual(0, e.GetBeginA());
            NUnit.Framework.Assert.AreEqual(2, e.GetEndA());
            NUnit.Framework.Assert.AreEqual(0, e.GetBeginB());
            NUnit.Framework.Assert.AreEqual(0, e.GetEndB());
            NUnit.Framework.Assert.AreEqual(Edit.Type.DELETE, e.GetType());
        }
Example #3
0
        private string MakeDiffHeader(string pathA, string pathB, ObjectId aId, ObjectId
                                      bId)
        {
            string a = aId.Abbreviate(8).Name;
            string b = bId.Abbreviate(8).Name;

            return(DIFF + "a/" + pathA + " " + "b/" + pathB + "\n" + "index " + a + ".." + b
                   + " " + REGULAR_FILE + "\n" + "--- a/" + pathA + "\n" + "+++ b/" + pathB + "\n");
        }
Example #4
0
        //
        //
        //
        private string MakeDiffHeaderModeChange(string pathA, string pathB, ObjectId aId,
                                                ObjectId bId, string modeA, string modeB)
        {
            string a = aId.Abbreviate(8).Name;
            string b = bId.Abbreviate(8).Name;

            return(DIFF + "a/" + pathA + " " + "b/" + pathB + "\n" + "old mode " + modeA + "\n"
                   + "new mode " + modeB + "\n" + "index " + a + ".." + b + "\n" + "--- a/" + pathA
                   + "\n" + "+++ b/" + pathB + "\n");
        }
Example #5
0
        public virtual void TestAbbreviateOnEmptyRepository()
        {
            ObjectId id = Id("9d5b926ed164e8ee88d3b8b1e525d699adda01ba");

            NUnit.Framework.Assert.AreEqual(id.Abbreviate(2), reader.Abbreviate(id, 2));
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(7), reader.Abbreviate(id, 7));
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(8), reader.Abbreviate(id, 8));
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(10), reader.Abbreviate(id, 10));
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(16), reader.Abbreviate(id, 16));
            NUnit.Framework.Assert.AreEqual(AbbreviatedObjectId.FromObjectId(id), reader.Abbreviate
                                                (id, Constants.OBJECT_ID_STRING_LENGTH));
            //
            ICollection <ObjectId> matches;

            matches = reader.Resolve(reader.Abbreviate(id, 8));
            NUnit.Framework.Assert.IsNotNull(matches);
            NUnit.Framework.Assert.AreEqual(0, matches.Count);
            matches = reader.Resolve(AbbreviatedObjectId.FromObjectId(id));
            NUnit.Framework.Assert.IsNotNull(matches);
            NUnit.Framework.Assert.AreEqual(1, matches.Count);
            NUnit.Framework.Assert.AreEqual(id, matches.Iterator().Next());
        }
Example #6
0
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("TrackingRefUpdate[");
            sb.Append(remoteName);
            sb.Append(" -> ");
            sb.Append(localName);
            if (forceUpdate)
            {
                sb.Append(" (forced)");
            }
            sb.Append(" ");
            sb.Append(oldObjectId == null ? string.Empty : oldObjectId.Abbreviate(7).Name);
            sb.Append("..");
            sb.Append(newObjectId == null ? string.Empty : newObjectId.Abbreviate(7).Name);
            sb.Append("]");
            return(sb.ToString());
        }
Example #7
0
        public virtual void TestAbbreviateIsActuallyUnique()
        {
            // This test is far more difficult. We have to manually craft
            // an input that contains collisions at a particular prefix,
            // but this is computationally difficult. Instead we force an
            // index file to have what we want.
            //
            ObjectId id = Id("9d5b926ed164e8ee88d3b8b1e525d699adda01ba");

            byte[] idBuf = ToByteArray(id);
            IList <PackedObjectInfo> objects = new AList <PackedObjectInfo>();

            for (int i = 0; i < 256; i++)
            {
                idBuf[9] = unchecked ((byte)i);
                objects.AddItem(new PackedObjectInfo(ObjectId.FromRaw(idBuf)));
            }
            string   packName = "pack-" + id.Name;
            FilePath packDir  = new FilePath(((ObjectDirectory)db.ObjectDatabase).GetDirectory
                                                 (), "pack");
            FilePath idxFile  = new FilePath(packDir, packName + ".idx");
            FilePath packFile = new FilePath(packDir, packName + ".pack");

            FileUtils.Mkdir(packDir, true);
            OutputStream dst = new BufferedOutputStream(new FileOutputStream(idxFile));

            try
            {
                PackIndexWriter writer = new PackIndexWriterV2(dst);
                writer.Write(objects, new byte[Constants.OBJECT_ID_LENGTH]);
            }
            finally
            {
                dst.Close();
            }
            new FileOutputStream(packFile).Close();
            NUnit.Framework.Assert.AreEqual(id.Abbreviate(20), reader.Abbreviate(id, 2));
            AbbreviatedObjectId    abbrev8 = id.Abbreviate(8);
            ICollection <ObjectId> matches = reader.Resolve(abbrev8);

            NUnit.Framework.Assert.IsNotNull(matches);
            NUnit.Framework.Assert.AreEqual(objects.Count, matches.Count);
            foreach (PackedObjectInfo info in objects)
            {
                NUnit.Framework.Assert.IsTrue(matches.Contains(info), "contains " + info.Name);
            }
            try
            {
                db.Resolve(abbrev8.Name);
                NUnit.Framework.Assert.Fail("did not throw AmbiguousObjectException");
            }
            catch (AmbiguousObjectException err)
            {
                NUnit.Framework.Assert.AreEqual(abbrev8, err.GetAbbreviatedObjectId());
                matches = err.GetCandidates();
                NUnit.Framework.Assert.IsNotNull(matches);
                NUnit.Framework.Assert.AreEqual(objects.Count, matches.Count);
                foreach (PackedObjectInfo info_1 in objects)
                {
                    NUnit.Framework.Assert.IsTrue(matches.Contains(info_1), "contains " + info_1.Name
                                                  );
                }
            }
            NUnit.Framework.Assert.AreEqual(id, db.Resolve(id.Abbreviate(20).Name));
        }