Esempio n. 1
0
 public virtual void TestDelta_SmallObjectChain()
 {
     ObjectInserter.Formatter fmt = new ObjectInserter.Formatter();
     byte[] data0 = new byte[512];
     Arrays.Fill(data0, unchecked((byte)unchecked((int)(0xf3))));
     ObjectId id0 = fmt.IdFor(Constants.OBJ_BLOB, data0);
     TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(64 * 1024);
     PackHeader(pack, 4);
     ObjectHeader(pack, Constants.OBJ_BLOB, data0.Length);
     Deflate(pack, data0);
     byte[] data1 = Clone(unchecked((int)(0x01)), data0);
     byte[] delta1 = Delta(data0, data1);
     ObjectId id1 = fmt.IdFor(Constants.OBJ_BLOB, data1);
     ObjectHeader(pack, Constants.OBJ_REF_DELTA, delta1.Length);
     id0.CopyRawTo(pack);
     Deflate(pack, delta1);
     byte[] data2 = Clone(unchecked((int)(0x02)), data1);
     byte[] delta2 = Delta(data1, data2);
     ObjectId id2 = fmt.IdFor(Constants.OBJ_BLOB, data2);
     ObjectHeader(pack, Constants.OBJ_REF_DELTA, delta2.Length);
     id1.CopyRawTo(pack);
     Deflate(pack, delta2);
     byte[] data3 = Clone(unchecked((int)(0x03)), data2);
     byte[] delta3 = Delta(data2, data3);
     ObjectId id3 = fmt.IdFor(Constants.OBJ_BLOB, data3);
     ObjectHeader(pack, Constants.OBJ_REF_DELTA, delta3.Length);
     id2.CopyRawTo(pack);
     Deflate(pack, delta3);
     Digest(pack);
     PackParser ip = Index(pack.ToByteArray());
     ip.SetAllowThin(true);
     ip.Parse(NullProgressMonitor.INSTANCE);
     NUnit.Framework.Assert.IsTrue(wc.Has(id3), "has blob");
     ObjectLoader ol = wc.Open(id3);
     NUnit.Framework.Assert.IsNotNull(ol, "created loader");
     NUnit.Framework.Assert.AreEqual(Constants.OBJ_BLOB, ol.GetType());
     NUnit.Framework.Assert.AreEqual(data3.Length, ol.GetSize());
     NUnit.Framework.Assert.IsFalse(ol.IsLarge(), "is large");
     NUnit.Framework.Assert.IsNotNull(ol.GetCachedBytes());
     NUnit.Framework.Assert.IsTrue(Arrays.Equals(data3, ol.GetCachedBytes()));
     ObjectStream @in = ol.OpenStream();
     NUnit.Framework.Assert.IsNotNull(@in, "have stream");
     NUnit.Framework.Assert.AreEqual(Constants.OBJ_BLOB, @in.GetType());
     NUnit.Framework.Assert.AreEqual(data3.Length, @in.GetSize());
     byte[] act = new byte[data3.Length];
     IOUtil.ReadFully(@in, act, 0, data3.Length);
     NUnit.Framework.Assert.IsTrue(Arrays.Equals(act, data3), "same content");
     NUnit.Framework.Assert.AreEqual(-1, @in.Read(), "stream at EOF");
     @in.Close();
 }
Esempio n. 2
0
		public virtual void TestParse_PublicParseMethod()
		{
			ObjectInserter.Formatter fmt = new ObjectInserter.Formatter();
			TagBuilder src = new TagBuilder();
			src.SetObjectId(fmt.IdFor(Constants.OBJ_TREE, new byte[] {  }), Constants.OBJ_TREE
				);
			src.SetTagger(committer);
			src.SetTag("a.test");
			src.SetMessage("Test tag\n\nThis is a test.\n");
			RevTag p = RevTag.Parse(src.Build());
			NUnit.Framework.Assert.AreEqual(src.GetObjectId(), p.GetObject());
			NUnit.Framework.Assert.AreEqual(committer, p.GetTaggerIdent());
			NUnit.Framework.Assert.AreEqual("a.test", p.GetTagName());
			NUnit.Framework.Assert.AreEqual("Test tag", p.GetShortMessage());
			NUnit.Framework.Assert.AreEqual(src.GetMessage(), p.GetFullMessage());
		}
Esempio n. 3
0
 /// <summary>Parse an annotated tag from its canonical format.</summary>
 /// <remarks>
 /// Parse an annotated tag from its canonical format.
 /// This method inserts the tag directly into the caller supplied revision
 /// pool, making it appear as though the tag exists in the repository, even
 /// if it doesn't. The repository under the pool is not affected.
 /// </remarks>
 /// <param name="rw">
 /// the revision pool to allocate the tag within. The tag's object
 /// pointer will be obtained from this pool.
 /// </param>
 /// <param name="raw">the canonical formatted tag to be parsed.</param>
 /// <returns>
 /// the parsed tag, in an isolated revision pool that is not
 /// available to the caller.
 /// </returns>
 /// <exception cref="NGit.Errors.CorruptObjectException">the tag contains a malformed header that cannot be handled.
 /// 	</exception>
 public static NGit.Revwalk.RevTag Parse(RevWalk rw, byte[] raw)
 {
     ObjectInserter.Formatter fmt = new ObjectInserter.Formatter();
     bool retain = rw.IsRetainBody();
     rw.SetRetainBody(true);
     NGit.Revwalk.RevTag r = rw.LookupTag(fmt.IdFor(Constants.OBJ_TAG, raw));
     r.ParseCanonical(rw, raw);
     rw.SetRetainBody(retain);
     return r;
 }
Esempio n. 4
0
 public virtual void TestParse_PublicParseMethod()
 {
     ObjectInserter.Formatter fmt = new ObjectInserter.Formatter();
     NGit.CommitBuilder src = new NGit.CommitBuilder();
     src.TreeId = fmt.IdFor(Constants.OBJ_TREE, new byte[] {  });
     src.Author = author;
     src.Committer = committer;
     src.Message = "Test commit\n\nThis is a test.\n";
     RevCommit p = RevCommit.Parse(src.Build());
     NUnit.Framework.Assert.AreEqual(src.TreeId, p.Tree);
     NUnit.Framework.Assert.AreEqual(0, p.ParentCount);
     NUnit.Framework.Assert.AreEqual(author, p.GetAuthorIdent());
     NUnit.Framework.Assert.AreEqual(committer, p.GetCommitterIdent());
     NUnit.Framework.Assert.AreEqual("Test commit", p.GetShortMessage());
     NUnit.Framework.Assert.AreEqual(src.Message, p.GetFullMessage());
 }