comparison test/unit/repository_mercurial_test.rb @ 245:051f544170fe

* Update to SVN trunk revision 4993
author Chris Cannam
date Thu, 03 Mar 2011 11:42:28 +0000
parents 8661b858af72
children eeebe205a056 cbce1fd3b1b7
comparison
equal deleted inserted replaced
244:8972b600f4fb 245:051f544170fe
20 class RepositoryMercurialTest < ActiveSupport::TestCase 20 class RepositoryMercurialTest < ActiveSupport::TestCase
21 fixtures :projects 21 fixtures :projects
22 22
23 # No '..' in the repository path 23 # No '..' in the repository path
24 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository' 24 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
25 25
26 def setup 26 def setup
27 @project = Project.find(1) 27 @project = Project.find(3)
28 assert @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH) 28 @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH)
29 assert @repository
29 end 30 end
30 31
31 if File.directory?(REPOSITORY_PATH) 32 if File.directory?(REPOSITORY_PATH)
32 def test_fetch_changesets_from_scratch 33 def test_fetch_changesets_from_scratch
33 @repository.fetch_changesets 34 @repository.fetch_changesets
34 @repository.reload 35 @repository.reload
35
36 assert_equal 17, @repository.changesets.count 36 assert_equal 17, @repository.changesets.count
37 assert_equal 25, @repository.changes.count 37 assert_equal 25, @repository.changes.count
38 assert_equal "Initial import.\nThe repository contains 3 files.", 38 assert_equal "Initial import.\nThe repository contains 3 files.",
39 @repository.changesets.find_by_revision('0').comments 39 @repository.changesets.find_by_revision('0').comments
40 end 40 end
41 41
42 def test_fetch_changesets_incremental 42 def test_fetch_changesets_incremental
43 @repository.fetch_changesets 43 @repository.fetch_changesets
44 # Remove changesets with revision > 2 44 # Remove changesets with revision > 2
45 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 2} 45 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 2}
46 @repository.reload 46 @repository.reload
47 assert_equal 3, @repository.changesets.count 47 assert_equal 3, @repository.changesets.count
48 48
49 @repository.fetch_changesets 49 @repository.fetch_changesets
50 assert_equal 17, @repository.changesets.count 50 assert_equal 17, @repository.changesets.count
51 end
52
53 def test_entries
54 assert_equal 2, @repository.entries("sources", 2).size
55 assert_equal 2, @repository.entries("sources", '400bb8672109').size
56 assert_equal 1, @repository.entries("sources", 3).size
57 assert_equal 1, @repository.entries("sources", 'b3a615152df8').size
58 end
59
60 def test_locate_on_outdated_repository
61 assert_equal 1, @repository.entries("images", 0).size
62 assert_equal 2, @repository.entries("images").size
63 assert_equal 2, @repository.entries("images", 2).size
64 end 51 end
65 52
66 def test_isodatesec 53 def test_isodatesec
67 # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher 54 # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher
68 if @repository.scm.class.client_version_above?([1, 0]) 55 if @repository.scm.class.client_version_above?([1, 0])
169 :scmid => 'abc400bb8672', 156 :scmid => 'abc400bb8672',
170 :comments => 'test') 157 :comments => 'test')
171 assert c.event_title.include?('123:abc400bb8672:') 158 assert c.event_title.include?('123:abc400bb8672:')
172 assert_equal 'abc400bb8672', c.event_url[:rev] 159 assert_equal 'abc400bb8672', c.event_url[:rev]
173 end 160 end
161
162 def test_latest_changesets_with_limit
163 @repository.fetch_changesets
164 @repository.reload
165 changesets = @repository.latest_changesets('', nil, 2)
166 assert_equal @repository.latest_changesets('', nil)[0, 2], changesets
167 end
168
169 def test_latest_changesets_with_filepath
170 @repository.fetch_changesets
171 @repository.reload
172 changesets = @repository.latest_changesets('README', nil)
173 assert_equal %w|8 6 1 0|, changesets.collect(&:revision)
174
175 path = 'sql_escape/percent%dir/percent%file1.txt'
176 changesets = @repository.latest_changesets(path, nil)
177 assert_equal %w|11 10 9|, changesets.collect(&:revision)
178
179 path = 'sql_escape/underscore_dir/understrike_file.txt'
180 changesets = @repository.latest_changesets(path, nil)
181 assert_equal %w|12 9|, changesets.collect(&:revision)
182 end
183
184 def test_latest_changesets_with_dirpath
185 @repository.fetch_changesets
186 @repository.reload
187 changesets = @repository.latest_changesets('images', nil)
188 assert_equal %w|1 0|, changesets.collect(&:revision)
189
190 path = 'sql_escape/percent%dir'
191 changesets = @repository.latest_changesets(path, nil)
192 assert_equal %w|13 11 10 9|, changesets.collect(&:revision)
193
194 path = 'sql_escape/underscore_dir'
195 changesets = @repository.latest_changesets(path, nil)
196 assert_equal %w|13 12 9|, changesets.collect(&:revision)
197 end
174 else 198 else
175 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" 199 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
176 def test_fake; assert true end 200 def test_fake; assert true end
177 end 201 end
178 end 202 end