amp-git 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,45 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ remote: http://gems.github.com/
4
+ specs:
5
+ amp-core (0.1.0)
6
+ amp-front (0.1.0)
7
+ builder (2.1.2)
8
+ cucumber (0.9.4)
9
+ builder (~> 2.1.2)
10
+ diff-lcs (~> 1.1.2)
11
+ gherkin (~> 2.2.9)
12
+ json (~> 1.4.6)
13
+ term-ansicolor (~> 1.0.5)
14
+ devver-construct (1.1.0)
15
+ diff-lcs (1.1.2)
16
+ gemcutter (0.6.1)
17
+ gherkin (2.2.9)
18
+ json (~> 1.4.6)
19
+ term-ansicolor (~> 1.0.5)
20
+ git (1.2.5)
21
+ jeweler (1.4.0)
22
+ gemcutter (>= 0.1.0)
23
+ git (>= 1.2.5)
24
+ rubyforge (>= 2.0.0)
25
+ json (1.4.6)
26
+ json_pure (1.4.6)
27
+ minitest (1.7.2)
28
+ rspec (1.3.1)
29
+ rubyforge (2.0.4)
30
+ json_pure (>= 1.1.7)
31
+ term-ansicolor (1.0.5)
32
+ yard (0.6.1)
33
+
34
+ PLATFORMS
35
+ ruby
36
+
37
+ DEPENDENCIES
38
+ amp-core (>= 0.1.0)
39
+ amp-front (>= 0.1.0)
40
+ cucumber
41
+ devver-construct
42
+ jeweler
43
+ minitest
44
+ rspec (< 2.0.0)
45
+ yard
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -1,49 +1,39 @@
1
- class Amp::Plugins::Git < Amp::Plugins::Base
2
- @loader = lambda {
3
- module ::Amp
1
+ puts 'Loading amp-git...'
2
+
3
+ require 'zlib'
4
+ require 'stringio'
5
+
6
+ # Must require the GitPicker or it won't be found.
7
+ require 'amp-git/repository.rb'
8
+
9
+ module Amp
10
+ module Git
11
+ autoload :Changeset, 'amp-git/repo_format/changeset.rb'
12
+ autoload :WorkingDirectoryChangeset, 'amp-git/repo_format/changeset.rb'
13
+ autoload :VersionedFile, 'amp-git/repo_format/versioned_file.rb'
14
+ autoload :VersionedWorkingFile, 'amp-git/repo_format/versioned_file.rb'
15
+ end
16
+ module Core
17
+ module Repositories
4
18
  module Git
5
- autoload :Changeset, "amp-git/repo_format/changeset.rb"
6
- autoload :WorkingDirectoryChangeset, "amp-git/repo_format/changeset.rb"
7
- autoload :VersionedFile, "amp-git/repo_format/versioned_file.rb"
8
- autoload :VersionedWorkingFile, "amp-git/repo_format/versioned_file.rb"
9
- end
10
- module Core
11
- module Repositories
12
- module Git
13
- include Support
14
- autoload :LocalRepository, "amp-git/repositories/local_repository.rb"
15
- autoload :GitPicker, "amp-git/repository.rb"
16
- autoload :StagingArea, "amp-git/repo_format/staging_area.rb"
17
- autoload :RawObject, "amp-git/repo_format/raw_object.rb"
18
- autoload :LooseObject, "amp-git/repo_format/loose_object.rb"
19
- autoload :TreeObject, "amp-git/repo_format/tree_object.rb"
20
- autoload :CommitObject, "amp-git/repo_format/commit_object.rb"
21
- autoload :TagObject, "amp-git/repo_format/tag_object.rb"
22
- autoload :PackFile, "amp-git/repo_format/packfile.rb"
23
- autoload :PackFileIndex, "amp-git/repo_format/packfile_index.rb"
24
- autoload :PackFileIndexV1, "amp-git/repo_format/packfile_index.rb"
25
- autoload :PackFileIndexV2, "amp-git/repo_format/packfile_index.rb"
26
- autoload :Index, "amp-git/repo_format/index.rb"
27
- module Encoding
28
- autoload :BinaryDelta, "amp-git/encoding/binary_delta.rb"
29
- end
30
- end
19
+ include Support
20
+ autoload :LocalRepository, 'amp-git/repositories/local_repository.rb'
21
+ autoload :NodeId, 'amp-git/repo_format/node_id.rb'
22
+ autoload :StagingArea, 'amp-git/repo_format/staging_area.rb'
23
+ autoload :RawObject, 'amp-git/repo_format/raw_object.rb'
24
+ autoload :LooseObject, 'amp-git/repo_format/loose_object.rb'
25
+ autoload :TreeObject, 'amp-git/repo_format/tree_object.rb'
26
+ autoload :CommitObject, 'amp-git/repo_format/commit_object.rb'
27
+ autoload :TagObject, 'amp-git/repo_format/tag_object.rb'
28
+ autoload :PackFile, 'amp-git/repo_format/packfile.rb'
29
+ autoload :PackFileIndex, 'amp-git/repo_format/packfile_index.rb'
30
+ autoload :PackFileIndexV1, 'amp-git/repo_format/packfile_index.rb'
31
+ autoload :PackFileIndexV2, 'amp-git/repo_format/packfile_index.rb'
32
+ autoload :Index, 'amp-git/repo_format/index.rb'
33
+ module Encoding
34
+ autoload :BinaryDelta, 'amp-git/encoding/binary_delta.rb'
31
35
  end
32
36
  end
33
37
  end
34
- require 'zlib'
35
- require 'stringio'
36
- }
37
- class << self
38
- attr_reader :loader
39
- end
40
- def initialize(opts = {})
41
- @opts = opts
42
- end
43
-
44
- def load!
45
- puts "Loading amp-git..."
46
- require 'zlib'
47
- self.class.loader.call
48
38
  end
49
- end
39
+ end
@@ -0,0 +1,16 @@
1
+ module Amp
2
+ module Core
3
+ end
4
+ module Support
5
+ end
6
+ end
7
+
8
+ class Amp::Plugins::Git < Amp::Plugins::Base
9
+ def initialize(opts={})
10
+ @opts = opts
11
+ end
12
+
13
+ def load!
14
+ require 'amp-git'
15
+ end
16
+ end
@@ -59,6 +59,7 @@ module Amp
59
59
  raise DeltaError.new("Expected input data to be #{@base_length} bytes, but was #{original.size} bytes.")
60
60
  end
61
61
  output = StringIO.new
62
+ output.string.force_encoding('BINARY') if output.string.respond_to?(:force_encoding)
62
63
  @hunks.each do |hunk|
63
64
  hunk.apply(output, original)
64
65
  end
@@ -80,7 +81,7 @@ module Amp
80
81
  def read_little_endian_base128(fp)
81
82
  result = shift = 0
82
83
  begin
83
- byte = Support::StringUtils.ord(fp.read(1))
84
+ byte = Support::HexString.from_bin(fp.read(1)).ord
84
85
  result |= (byte & 0x7f) << shift
85
86
  shift += 7
86
87
  end while byte & 0x80 > 0
@@ -95,7 +96,7 @@ module Amp
95
96
  # a copy from an input stream, or an "insert" which inserts specified
96
97
  # data.
97
98
  def self.parse(fp)
98
- opcode = Support::StringUtils.ord(fp.read(1))
99
+ opcode = Support::HexString.from_bin(fp.read(1)).ord
99
100
  if opcode & 0x80 == 0
100
101
  InsertHunk.new(opcode, fp)
101
102
  else
@@ -140,13 +141,13 @@ module Amp
140
141
  @offset = @length = 0
141
142
  shift = 0
142
143
  0.upto(3) do
143
- @offset |= Support::StringUtils.ord(fp.read(1)) << shift if opcode & 0x01 > 0
144
+ @offset |= Support::HexString.from_bin(fp.read(1)).ord << shift if opcode & 0x01 > 0
144
145
  opcode >>= 1
145
146
  shift += 8
146
147
  end
147
148
  shift = 0
148
149
  0.upto(2) do
149
- @length |= Support::StringUtils.ord(fp.read(1)) << shift if opcode & 0x01 > 0
150
+ @length |= Support::HexString.from_bin(fp.read(1)).ord << shift if opcode & 0x01 > 0
150
151
  opcode >>= 1
151
152
  shift += 8
152
153
  end
@@ -28,14 +28,14 @@ module Amp
28
28
  attr_reader :revision
29
29
  alias_method :repository, :repo
30
30
 
31
- def initialize(repo, rev)
31
+ def initialize(repo, short_name)
32
32
  @repo = repo
33
33
  if short_name.kind_of?(Integer)
34
- @revision = rev
35
- @node_id = convert_rev_to_node(rev)
34
+ @revision = short_name
35
+ @node_id = convert_rev_to_node(short_name)
36
36
  else
37
- @revision = convert_node_to_rev(rev)
38
- @node_id = rev
37
+ @revision = convert_node_to_rev(short_name)
38
+ @node_id = short_name
39
39
  end
40
40
  end
41
41
 
@@ -200,7 +200,7 @@ module Amp
200
200
 
201
201
  end
202
202
 
203
- class WorkingDirectoryChangeset < Amp::Repositories::AbstractChangeset
203
+ class WorkingDirectoryChangeset < Amp::Core::Repositories::AbstractChangeset
204
204
 
205
205
  attr_accessor :repo
206
206
  alias_method :repository, :repo
@@ -63,9 +63,9 @@ module Amp
63
63
  lines.each_with_index do |line, idx|
64
64
  case line
65
65
  when /^tree (.{40})/
66
- @tree_ref = Support::StringUtils.unhexlify($1)
66
+ @tree_ref = NodeId.from_hex($1)
67
67
  when /^parent (.{40})/
68
- @parent_refs << Support::StringUtils.unhexlify($1)
68
+ @parent_refs << NodeId.from_hex($1)
69
69
  when /^author #{AUTHOR_MATCH}/
70
70
  @author = "#{$1} <#{$2}>"
71
71
  @date = Time.at($3.to_i)
@@ -91,6 +91,7 @@ module Amp
91
91
  header = fp.read(ENTRY_HEADER_SIZE).unpack(ENTRY_HEADER_FORMAT)
92
92
  self.ctime, self.ctime_ns, self.mtime, self.mtime_ns, self.dev, self.inode,
93
93
  self.mode, self.uid, self.gid, self.size, self.hash_id, flags = header
94
+ self.hash_id = NodeId.from_bin(self.hash_id)
94
95
  self.assume_valid = flags & 0x8000 > 0
95
96
  self.update_needed = flags & 0x4000 > 0
96
97
  self.stage = (flags & 0x3000) >> 12
@@ -0,0 +1,15 @@
1
+ ##################################################################
2
+ # Licensing Information #
3
+ # #
4
+ # The following code is licensed, as standalone code, under #
5
+ # the Ruby License, unless otherwise directed within the code. #
6
+ # #
7
+ # For information on the license of this code when distributed #
8
+ # with and used in conjunction with the other modules in the #
9
+ # Amp project, please see the root-level LICENSE file. #
10
+ # #
11
+ ##################################################################
12
+
13
+ module Amp::Core::Repositories::Git
14
+ NodeId = Amp::Core::Support::HexString
15
+ end
@@ -96,10 +96,10 @@ module Amp
96
96
  # @param [IO, #read] fp the IO stream to read from
97
97
  # @return [Integer] the offset read
98
98
  def read_offset(fp)
99
- byte = Support::StringUtils.ord(fp.read(1))
99
+ byte = Support::HexString.from_bin(fp.read(1)).ord
100
100
  tot = byte & 0x7f
101
101
  while (byte & 0x80) > 0
102
- byte = Support::StringUtils.ord(fp.read(1))
102
+ byte = Support::HexString.from_bin(fp.read(1)).ord
103
103
  tot = ((tot + 1) << 7) | (byte & 0x7f)
104
104
  break if (byte & 0x80) == 0
105
105
  end
@@ -114,12 +114,12 @@ module Amp
114
114
  # @return [Array(Integer, Integer)] the type and size of the entry packed
115
115
  # into a tuple.
116
116
  def read_header(fp)
117
- tags = Support::StringUtils.ord(fp.read(1))
117
+ tags = Support::HexString.from_bin(fp.read(1)).ord
118
118
  type = (tags & 0x70) >> 4
119
119
  size = tags & 0xF
120
120
  shift = 4
121
121
  while tags & 0x80 > 0
122
- tags = Support::StringUtils.ord(fp.read(1))
122
+ tags = Support::HexString.from_bin(fp.read(1)).ord
123
123
  size += (tags & 0x7F) << shift
124
124
  shift += 7
125
125
  end
@@ -161,8 +161,7 @@ module Amp
161
161
  def calculate_hash!
162
162
  prefix = PREFIX_NAME_LOOKUP[self.type]
163
163
  # add special cases for refs
164
- self.hash_id = StringUtils.sha1("#{prefix} #{self.size}\0#{self.content}").digest
165
- self.hash_id.force_encoding("ASCII-8BIT") if RUBY_VERSION >= "1.9"
164
+ self.hash_id = NodeId.sha1("#{prefix} #{self.size}\0#{self.content}")
166
165
  end
167
166
 
168
167
  ##
@@ -238,7 +237,7 @@ module Amp
238
237
  # packfile.
239
238
  def object_for_hash(given_hash)
240
239
  @opener.open(name, "r") do |fp|
241
- given_hash.force_encoding("ASCII-8BIT") if RUBY_VERSION >= "1.9"
240
+ given_hash.force_encoding("ASCII-8BIT") if given_hash.respond_to?(:force_encoding)
242
241
  entry = nil
243
242
  if index
244
243
  starting_at = index.offset_for_hash(given_hash)
@@ -83,7 +83,7 @@ module Amp
83
83
  # uses fanout logic to determine the indices in which the desired
84
84
  # hash might be found. This range can be searched to find the hash.
85
85
  def search_range_for_hash(hash)
86
- byte = Support::StringUtils.ord(hash[0,1])
86
+ byte = Support::HexString.from_bin(hash).ord
87
87
  min = byte > 0 ? (fanout[byte - 1]) : 0
88
88
  max = fanout[byte]
89
89
  min...max
@@ -162,7 +162,7 @@ module Amp
162
162
  # TODO: binary search!
163
163
  range.each do |idx|
164
164
  sha1 = @fp.read(SHA1_SIZE).unpack(SHA1_FORMAT).first # sha1s are 20 bytes
165
- return offset_for_index(idx) if sha1 == hsh
165
+ return offset_for_index(idx) if sha1 == hsh.to_bin
166
166
  end
167
167
  raise PackFileIndexLookupError.new("Couldn't find the hash #{hsh.inspect} in the packfile index.")
168
168
  end
@@ -64,7 +64,7 @@ module Amp
64
64
  lines.each_with_index do |line, idx|
65
65
  case line
66
66
  when /^object (.{40})/
67
- @object_ref = Support::StringUtils.unhexlify($1)
67
+ @object_ref = NodeId.from_hex($1)
68
68
  when /^type (\S+)/
69
69
  @reffed_type = $1
70
70
  when /^tag\s+(.*)\s*$/
@@ -86,7 +86,7 @@ module Amp
86
86
  scanner = StringScanner.new(@content)
87
87
  until scanner.eos?
88
88
  break unless scanner.scan(/(\d+) (\S+?)\x00(.{20})/m)
89
- new_entry = TreeEntry.new(scanner[2], scanner[1].to_i(8), scanner[3])
89
+ new_entry = TreeEntry.new(scanner[2], scanner[1].to_i(8), NodeId.from_bin(scanner[3]))
90
90
  @pairs[new_entry.name] = new_entry
91
91
  end
92
92
  end
@@ -0,0 +1,48 @@
1
+ ##################################################################
2
+ # Licensing Information #
3
+ # #
4
+ # The following code is licensed, as standalone code, under #
5
+ # the Ruby License, unless otherwise directed within the code. #
6
+ # #
7
+ # For information on the license of this code when distributed #
8
+ # with and used in conjunction with the other modules in the #
9
+ # Amp project, please see the root-level LICENSE file. #
10
+ # #
11
+ ##################################################################
12
+
13
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
14
+
15
+ describe Amp::Core::Repositories::Git::NodeId do
16
+ Subject = Amp::Core::Repositories::Git::NodeId
17
+ it 'created from binary' do
18
+ Subject.from_bin('A').should be
19
+ end
20
+
21
+ it 'created from hex' do
22
+ Subject.from_hex('41').should be
23
+ end
24
+
25
+ it 'created from sha1' do
26
+ Subject.sha1('A').should be
27
+ end
28
+
29
+ it 'is compareable' do
30
+ Subject.from_bin('A').should == Subject.from_bin('A')
31
+ end
32
+
33
+ let :single do
34
+ Subject.from_bin('A')
35
+ end
36
+
37
+ it 'can be represented as binary' do
38
+ single.to_bin.should == 'A'
39
+ end
40
+
41
+ it 'can be represented as hex' do
42
+ single.to_hex.should == '41'
43
+ end
44
+
45
+ it 'stringifies as hex' do
46
+ single.to_s.should == '41'
47
+ end
48
+ end
@@ -0,0 +1 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
@@ -22,8 +22,6 @@ require 'spec'
22
22
  require 'spec/autorun'
23
23
  require 'construct'
24
24
 
25
- Amp::Plugins::Core.new.load!
26
- Amp::Plugins::Git.new.load!
27
25
  Spec::Runner.configure do |config|
28
26
 
29
27
  end
@@ -60,7 +60,7 @@ class TestGitIndex < AmpTestCase
60
60
  assert_equal 0x01f5, rakefile_info.uid
61
61
  assert_equal 0x14, rakefile_info.gid
62
62
  assert_equal 0x05c5, rakefile_info.size
63
- assert_equal "53bbb0b38868a1bd2059a1174f54de63764013af", hexlify(rakefile_info.hash_id)
63
+ assert_equal "53bbb0b38868a1bd2059a1174f54de63764013af", rakefile_info.hash_id.to_hex
64
64
  assert_false rakefile_info.assume_valid
65
65
  assert_false rakefile_info.update_needed
66
66
  assert_equal 0, rakefile_info.stage
@@ -46,11 +46,11 @@ class TestPackfile < AmpTestCase
46
46
  end
47
47
 
48
48
  def test_commit_lookup
49
- some_commit_obj = @packfile.object_for_hash(StringUtils.unhexlify("862a669a8ddf39a4c60be6bd40c97dc242b6128e"))
49
+ some_commit_obj = @packfile.object_for_hash(NodeId.from_hex("862a669a8ddf39a4c60be6bd40c97dc242b6128e"))
50
50
  assert_not_nil some_commit_obj
51
51
  assert_kind_of CommitObject, some_commit_obj
52
- assert_equal "2ac9f8fa1628a094cced3534b63084d5f480d10a", hexlify(some_commit_obj.tree_ref)
53
- assert_equal ["840c43e100120cd282cf9b334b08aa5fbe2634a0"], some_commit_obj.parent_refs.map {|x| hexlify(x)}
52
+ assert_equal NodeId.from_hex("2ac9f8fa1628a094cced3534b63084d5f480d10a"), some_commit_obj.tree_ref
53
+ assert_equal [NodeId.from_hex("840c43e100120cd282cf9b334b08aa5fbe2634a0")], some_commit_obj.parent_refs
54
54
  assert_equal "Michael Edgar <michael.j.edgar@dartmouth.edu>", some_commit_obj.author
55
55
  assert_equal "Michael Edgar <michael.j.edgar@dartmouth.edu>", some_commit_obj.committer
56
56
  assert_equal Time.at(1273260273), some_commit_obj.date
@@ -59,16 +59,16 @@ class TestPackfile < AmpTestCase
59
59
 
60
60
  # The previous test gets the first commit. no searching going on. This gets a further one.
61
61
  def test_further_lookup
62
- some_commit_obj = @packfile.object_for_hash(StringUtils.unhexlify("958cd2af1c2676e9e90c7ea45bfe384acdcf42e0"))
62
+ some_commit_obj = @packfile.object_for_hash(NodeId.from_hex("958cd2af1c2676e9e90c7ea45bfe384acdcf42e0"))
63
63
  assert_not_nil some_commit_obj
64
64
  end
65
65
 
66
66
  def test_tree_lookup
67
- some_tree_obj = @packfile.object_for_hash(StringUtils.unhexlify("2ac9f8fa1628a094cced3534b63084d5f480d10a"))
67
+ some_tree_obj = @packfile.object_for_hash(NodeId.from_hex("2ac9f8fa1628a094cced3534b63084d5f480d10a"))
68
68
  assert_not_nil some_tree_obj
69
69
  entry_names = %w(.document .gitignore LICENSE README.md Rakefile VERSION lib spec yard-struct.gemspec).sort
70
70
  assert_equal entry_names, some_tree_obj.entry_names.sort
71
- lookedup_entry = TreeObject::TreeEntry.new("Rakefile", 0100644, StringUtils.unhexlify("53bbb0b38868a1bd2059a1174f54de63764013af"))
71
+ lookedup_entry = TreeObject::TreeEntry.new("Rakefile", 0100644, NodeId.from_hex("53bbb0b38868a1bd2059a1174f54de63764013af"))
72
72
  assert_equal lookedup_entry, some_tree_obj.tree_lookup("Rakefile")
73
73
  end
74
74
 
@@ -84,7 +84,7 @@ class TestPackfileIndexV2 < AmpTestCase
84
84
  ["004EB28B17D7FC33C7B90D2B37E79566038E29C1", 0x001a82fe],
85
85
  ["00D917561EB69F243B326DAAA13F7C09D505DB9C", 0x0003518e]]
86
86
  pairs.each do |hsh, expected|
87
- assert_equal expected, @index.offset_for_hash(StringUtils.unhexlify(hsh))
87
+ assert_equal expected, @index.offset_for_hash(NodeId.from_hex(hsh))
88
88
  end
89
89
  end
90
90
  end
@@ -47,11 +47,11 @@ class TestPackfileWithIndex < AmpTestCase
47
47
  end
48
48
 
49
49
  def test_commit_lookup
50
- some_commit_obj = @packfile.object_for_hash(StringUtils.unhexlify("862a669a8ddf39a4c60be6bd40c97dc242b6128e"))
50
+ some_commit_obj = @packfile.object_for_hash(NodeId.from_hex("862a669a8ddf39a4c60be6bd40c97dc242b6128e"))
51
51
  assert_not_nil some_commit_obj
52
52
  assert_kind_of CommitObject, some_commit_obj
53
- assert_equal "2ac9f8fa1628a094cced3534b63084d5f480d10a", hexlify(some_commit_obj.tree_ref)
54
- assert_equal ["840c43e100120cd282cf9b334b08aa5fbe2634a0"], some_commit_obj.parent_refs.map {|x| hexlify(x)}
53
+ assert_equal NodeId.from_hex("2ac9f8fa1628a094cced3534b63084d5f480d10a"), some_commit_obj.tree_ref
54
+ assert_equal [NodeId.from_hex("840c43e100120cd282cf9b334b08aa5fbe2634a0")], some_commit_obj.parent_refs
55
55
  assert_equal "Michael Edgar <michael.j.edgar@dartmouth.edu>", some_commit_obj.author
56
56
  assert_equal "Michael Edgar <michael.j.edgar@dartmouth.edu>", some_commit_obj.committer
57
57
  assert_equal Time.at(1273260273), some_commit_obj.date
@@ -60,16 +60,16 @@ class TestPackfileWithIndex < AmpTestCase
60
60
 
61
61
  # The previous test gets the first commit. no searching going on. This gets a further one.
62
62
  def test_further_lookup
63
- some_commit_obj = @packfile.object_for_hash(StringUtils.unhexlify("958cd2af1c2676e9e90c7ea45bfe384acdcf42e0"))
63
+ some_commit_obj = @packfile.object_for_hash(NodeId.from_hex("958cd2af1c2676e9e90c7ea45bfe384acdcf42e0"))
64
64
  assert_not_nil some_commit_obj
65
65
  end
66
66
 
67
67
  def test_tree_lookup
68
- some_tree_obj = @packfile.object_for_hash(StringUtils.unhexlify("2ac9f8fa1628a094cced3534b63084d5f480d10a"))
68
+ some_tree_obj = @packfile.object_for_hash(NodeId.from_hex("2ac9f8fa1628a094cced3534b63084d5f480d10a"))
69
69
  assert_not_nil some_tree_obj
70
70
  entry_names = %w(.document .gitignore LICENSE README.md Rakefile VERSION lib spec yard-struct.gemspec).sort
71
71
  assert_equal entry_names, some_tree_obj.entry_names.sort
72
- lookedup_entry = TreeObject::TreeEntry.new("Rakefile", 0100644, StringUtils.unhexlify("53bbb0b38868a1bd2059a1174f54de63764013af"))
72
+ lookedup_entry = TreeObject::TreeEntry.new("Rakefile", 0100644, NodeId.from_hex("53bbb0b38868a1bd2059a1174f54de63764013af"))
73
73
  assert_equal lookedup_entry, some_tree_obj.tree_lookup("Rakefile")
74
74
  end
75
75
 
@@ -23,7 +23,7 @@ class TestGitCommitObject < AmpTestCase
23
23
  "Michael Edgar <michael.j.edgar@dartmouth.edu> 1273865360 -0400\n\n"+
24
24
  "Removed the gemspec from the repo\n"
25
25
  @commit_obj = Amp::Core::Repositories::Git::CommitObject.new(
26
- Amp::Core::Support::StringUtils.sha1(@content), nil, @content)
26
+ Amp::Core::Repositories::Git::NodeId.sha1(@content), nil, @content)
27
27
  end
28
28
 
29
29
  def test_correct_type
@@ -35,11 +35,11 @@ class TestGitCommitObject < AmpTestCase
35
35
  end
36
36
 
37
37
  def test_tree_ref
38
- assert_equal unhexlify("ecb7b4460825bed7c0bc6d17004816d15ae32c5e"), @commit_obj.tree_ref
38
+ assert_equal NodeId.from_hex("ecb7b4460825bed7c0bc6d17004816d15ae32c5e"), @commit_obj.tree_ref
39
39
  end
40
40
 
41
41
  def test_parent_refs
42
- assert_equal [unhexlify("8c27219d73786aa2e91d5ae964624ef36696c307")], @commit_obj.parent_refs
42
+ assert_equal [NodeId.from_hex("8c27219d73786aa2e91d5ae964624ef36696c307")], @commit_obj.parent_refs
43
43
  end
44
44
 
45
45
  def test_author
@@ -8,8 +8,6 @@ require 'test/unit'
8
8
  require 'minitest/unit'
9
9
  require 'tmpdir'
10
10
 
11
- Amp::Plugins::Core.new.load!
12
- Amp::Plugins::Git.new.load!
13
11
  class AmpTestCase < MiniTest::Unit::TestCase
14
12
  def setup
15
13
  super
@@ -27,14 +25,8 @@ class AmpTestCase < MiniTest::Unit::TestCase
27
25
  FileUtils.rm_rf @tempdir if defined?(@tempdir) && @tempdir && File.exist?(@tempdir)
28
26
  end
29
27
 
30
- def hexlify(input)
31
- Amp::Core::Support::StringUtils.hexlify(input)
32
- end
33
-
34
- def unhexlify(input)
35
- Amp::Core::Support::StringUtils.unhexlify(input)
36
- end
37
-
28
+ NodeId = Amp::Core::Repositories::Git::NodeId unless const_defined?(:NodeId)
29
+
38
30
  # taken from rubygems
39
31
  def write_file(path)
40
32
  path = File.join(@tempdir, path)
@@ -33,7 +33,7 @@ nLE/L9aUXdWeTFPron96DLA=
33
33
  -----END PGP SIGNATURE-----
34
34
  EOF
35
35
  @tag_obj = Amp::Core::Repositories::Git::TagObject.new(
36
- Amp::Core::Support::StringUtils.sha1(@content), nil, @content)
36
+ NodeId.sha1(@content), nil, @content)
37
37
  end
38
38
 
39
39
  def test_correct_type
@@ -45,7 +45,7 @@ EOF
45
45
  end
46
46
 
47
47
  def test_object
48
- assert_equal unhexlify("437b1b20df4b356c9342dac8d38849f24ef44f27"), @tag_obj.object_ref
48
+ assert_equal NodeId.from_hex("437b1b20df4b356c9342dac8d38849f24ef44f27"), @tag_obj.object_ref
49
49
  end
50
50
 
51
51
  def test_reffed_type
@@ -1,4 +1,3 @@
1
- ##################################################################
2
1
  # Licensing Information #
3
2
  # #
4
3
  # The following code is licensed, as standalone code, under #
@@ -21,7 +20,7 @@ class TestGitTreeObject < AmpTestCase
21
20
  "\xE3\xC3\nK\xCD<!\xEA-_\x9E\xDC=40000 examples\x00"+
22
21
  "\xAE\xCB\xE9d!|\xB9\xA6\x96\x024],U\xEE\x99\xA2\xEE\xD4\x92"
23
22
  @tree_obj = Amp::Core::Repositories::Git::TreeObject.new(
24
- Amp::Core::Support::StringUtils.sha1(@content), nil,@content)
23
+ NodeId.sha1(@content), nil,@content)
25
24
  end
26
25
 
27
26
  def test_correct_type
@@ -47,8 +46,8 @@ class TestGitTreeObject < AmpTestCase
47
46
  end
48
47
 
49
48
  def test_parses_refs
50
- expected_first = "\xD3\xD5\xED\x9DA4_\xE3\xC3\nK\xCD<!\xEA-_\x9E\xDC="
51
- expected_second = "\xAE\xCB\xE9d!|\xB9\xA6\x96\x024],U\xEE\x99\xA2\xEE\xD4\x92"
49
+ expected_first = NodeId.from_bin("\xD3\xD5\xED\x9DA4_\xE3\xC3\nK\xCD<!\xEA-_\x9E\xDC=")
50
+ expected_second = NodeId.from_bin("\xAE\xCB\xE9d!|\xB9\xA6\x96\x024],U\xEE\x99\xA2\xEE\xD4\x92")
52
51
  assert_equal expected_first, @tree_obj.tree_lookup("example_helper.rb").ref
53
52
  assert_equal expected_second, @tree_obj.tree_lookup("examples").ref
54
53
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 0.1.0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Michael Edgar
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-03 00:00:00 -04:00
17
+ date: 2010-11-11 00:00:00 -06:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -123,6 +123,7 @@ files:
123
123
  - .document
124
124
  - .gitignore
125
125
  - Gemfile
126
+ - Gemfile.lock
126
127
  - LICENSE
127
128
  - README.rdoc
128
129
  - Rakefile
@@ -131,11 +132,13 @@ files:
131
132
  - features/step_definitions/amp-git_steps.rb
132
133
  - features/support/env.rb
133
134
  - lib/amp-git.rb
135
+ - lib/amp-git/amp_plugin.rb
134
136
  - lib/amp-git/encoding/binary_delta.rb
135
137
  - lib/amp-git/repo_format/changeset.rb
136
138
  - lib/amp-git/repo_format/commit_object.rb
137
139
  - lib/amp-git/repo_format/index.rb
138
140
  - lib/amp-git/repo_format/loose_object.rb
141
+ - lib/amp-git/repo_format/node_id.rb
139
142
  - lib/amp-git/repo_format/packfile.rb
140
143
  - lib/amp-git/repo_format/packfile_index.rb
141
144
  - lib/amp-git/repo_format/raw_object.rb
@@ -145,8 +148,9 @@ files:
145
148
  - lib/amp-git/repo_format/versioned_file.rb
146
149
  - lib/amp-git/repositories/local_repository.rb
147
150
  - lib/amp-git/repository.rb
148
- - lib/amp_plugin.rb
149
151
  - spec/amp-git_spec.rb
152
+ - spec/repo_format/node_id_spec.rb
153
+ - spec/repo_format/spec_helper.rb
150
154
  - spec/repository_spec.rb
151
155
  - spec/spec.opts
152
156
  - spec/spec_helper.rb
@@ -199,6 +203,8 @@ specification_version: 3
199
203
  summary: The git plugin for Amp.
200
204
  test_files:
201
205
  - spec/amp-git_spec.rb
206
+ - spec/repo_format/node_id_spec.rb
207
+ - spec/repo_format/spec_helper.rb
202
208
  - spec/repository_spec.rb
203
209
  - spec/spec_helper.rb
204
210
  - test/index_tests/test_helper.rb
@@ -1 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), 'amp-git'))