Mercurial > hg > soundsoftware-site
comparison test/unit/repository_cvs_test.rb @ 441:cbce1fd3b1b7 redmine-1.2
Update to Redmine 1.2-stable branch (Redmine SVN rev 6000)
author | Chris Cannam |
---|---|
date | Mon, 06 Jun 2011 14:24:13 +0100 |
parents | 051f544170fe |
children | cbb26bc654de |
comparison
equal
deleted
inserted
replaced
245:051f544170fe | 441:cbce1fd3b1b7 |
---|---|
1 # redMine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2007 Jean-Philippe Lang | 2 # Copyright (C) 2006-2011 Jean-Philippe Lang |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or | 4 # This program is free software; you can redistribute it and/or |
5 # modify it under the terms of the GNU General Public License | 5 # modify it under the terms of the GNU General Public License |
6 # as published by the Free Software Foundation; either version 2 | 6 # as published by the Free Software Foundation; either version 2 |
7 # of the License, or (at your option) any later version. | 7 # of the License, or (at your option) any later version. |
8 # | 8 # |
9 # This program is distributed in the hope that it will be useful, | 9 # This program is distributed in the hope that it will be useful, |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 # GNU General Public License for more details. | 12 # GNU General Public License for more details. |
13 # | 13 # |
14 # You should have received a copy of the GNU General Public License | 14 # You should have received a copy of the GNU General Public License |
15 # along with this program; if not, write to the Free Software | 15 # along with this program; if not, write to the Free Software |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
17 | 17 |
18 require File.expand_path('../../test_helper', __FILE__) | 18 require File.expand_path('../../test_helper', __FILE__) |
19 require 'pp' | 19 require 'pp' |
20 class RepositoryCvsTest < ActiveSupport::TestCase | 20 class RepositoryCvsTest < 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/cvs_repository' | 24 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository' |
25 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? | 25 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? |
26 # CVS module | 26 # CVS module |
27 MODULE_NAME = 'test' | 27 MODULE_NAME = 'test' |
28 | 28 CHANGESETS_NUM = 7 |
29 | |
29 def setup | 30 def setup |
30 @project = Project.find(3) | 31 @project = Project.find(3) |
31 @repository = Repository::Cvs.create(:project => @project, | 32 @repository = Repository::Cvs.create(:project => @project, |
32 :root_url => REPOSITORY_PATH, | 33 :root_url => REPOSITORY_PATH, |
33 :url => MODULE_NAME, | 34 :url => MODULE_NAME, |
34 :log_encoding => 'UTF-8') | 35 :log_encoding => 'UTF-8') |
35 assert @repository | 36 assert @repository |
36 end | 37 end |
37 | 38 |
38 if File.directory?(REPOSITORY_PATH) | 39 if File.directory?(REPOSITORY_PATH) |
39 def test_fetch_changesets_from_scratch | 40 def test_fetch_changesets_from_scratch |
40 assert_equal 0, @repository.changesets.count | 41 assert_equal 0, @repository.changesets.count |
41 @repository.fetch_changesets | 42 @repository.fetch_changesets |
42 @repository.reload | 43 @repository.reload |
43 | 44 |
44 assert_equal 5, @repository.changesets.count | 45 assert_equal CHANGESETS_NUM, @repository.changesets.count |
45 assert_equal 14, @repository.changes.count | 46 assert_equal 16, @repository.changes.count |
46 assert_not_nil @repository.changesets.find_by_comments('Two files changed') | 47 assert_not_nil @repository.changesets.find_by_comments('Two files changed') |
47 | 48 |
48 r2 = @repository.changesets.find_by_revision('2') | 49 r2 = @repository.changesets.find_by_revision('2') |
49 assert_equal 'v1-20071213-162510', r2.scmid | 50 assert_equal 'v1-20071213-162510', r2.scmid |
50 end | 51 end |
51 | 52 |
52 def test_fetch_changesets_incremental | 53 def test_fetch_changesets_incremental |
53 assert_equal 0, @repository.changesets.count | 54 assert_equal 0, @repository.changesets.count |
54 @repository.fetch_changesets | 55 @repository.fetch_changesets |
55 # Remove changesets with revision > 3 | 56 # Remove changesets with revision > 3 |
56 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3} | 57 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3} |
67 latest_rev = @repository.latest_changeset | 68 latest_rev = @repository.latest_changeset |
68 assert_equal rev3_committed_on, latest_rev.committed_on | 69 assert_equal rev3_committed_on, latest_rev.committed_on |
69 | 70 |
70 @repository.fetch_changesets | 71 @repository.fetch_changesets |
71 @repository.reload | 72 @repository.reload |
72 assert_equal 5, @repository.changesets.count | 73 assert_equal CHANGESETS_NUM, @repository.changesets.count |
73 | 74 |
74 assert_equal %w|5 4 3 2 1|, @repository.changesets.collect(&:revision) | 75 assert_equal %w|7 6 5 4 3 2 1|, @repository.changesets.collect(&:revision) |
75 rev5_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') | 76 rev5_commit = @repository.changesets.find_by_revision('5') |
76 assert_equal 'HEAD-20071213-163001', rev5_commit.scmid | 77 assert_equal 'HEAD-20071213-163001', rev5_commit.scmid |
77 # 2007-12-14 01:30:01 +0900 | 78 # 2007-12-14 01:30:01 +0900 |
78 rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1) | 79 rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1) |
79 assert_equal rev5_committed_on, rev5_commit.committed_on | 80 assert_equal rev5_committed_on, rev5_commit.committed_on |
80 end | 81 end |
81 | 82 |
82 def test_deleted_files_should_not_be_listed | 83 def test_deleted_files_should_not_be_listed |
83 assert_equal 0, @repository.changesets.count | 84 assert_equal 0, @repository.changesets.count |
84 @repository.fetch_changesets | 85 @repository.fetch_changesets |
85 @repository.reload | 86 @repository.reload |
86 assert_equal 5, @repository.changesets.count | 87 assert_equal CHANGESETS_NUM, @repository.changesets.count |
87 | 88 |
88 entries = @repository.entries('sources') | 89 entries = @repository.entries('sources') |
89 assert entries.detect {|e| e.name == 'watchers_controller.rb'} | 90 assert entries.detect {|e| e.name == 'watchers_controller.rb'} |
90 assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'} | 91 assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'} |
91 end | 92 end |
93 | |
94 def test_entries_rev3 | |
95 @repository.fetch_changesets | |
96 @repository.reload | |
97 entries = @repository.entries('', '3') | |
98 assert_equal 3, entries.size | |
99 assert_equal entries[2].name, "README" | |
100 assert_equal entries[2].lastrev.time, Time.gm(2007, 12, 13, 16, 27, 22) | |
101 assert_equal entries[2].lastrev.identifier, '3' | |
102 assert_equal entries[2].lastrev.revision, '3' | |
103 assert_equal entries[2].lastrev.author, 'LANG' | |
104 end | |
105 | |
106 def test_entries_invalid_path | |
107 @repository.fetch_changesets | |
108 @repository.reload | |
109 assert_nil @repository.entries('missing') | |
110 assert_nil @repository.entries('missing', '3') | |
111 end | |
112 | |
113 def test_entries_invalid_revision | |
114 @repository.fetch_changesets | |
115 @repository.reload | |
116 assert_nil @repository.entries('', '123') | |
117 end | |
118 | |
119 def test_cat | |
120 @repository.fetch_changesets | |
121 @repository.reload | |
122 buf = @repository.cat('README') | |
123 assert buf | |
124 lines = buf.split("\n") | |
125 assert_equal 3, lines.length | |
126 buf = lines[1].gsub(/\r$/, "") | |
127 assert_equal 'with one change', buf | |
128 buf = @repository.cat('README', '1') | |
129 assert buf | |
130 lines = buf.split("\n") | |
131 assert_equal 1, lines.length | |
132 buf = lines[0].gsub(/\r$/, "") | |
133 assert_equal 'CVS test repository', buf | |
134 assert_nil @repository.cat('missing.rb') | |
135 | |
136 # sources/welcome_controller.rb is removed at revision 5. | |
137 assert @repository.cat('sources/welcome_controller.rb', '4') | |
138 assert @repository.cat('sources/welcome_controller.rb', '5').blank? | |
139 | |
140 # invalid revision | |
141 assert @repository.cat('README', '123').blank? | |
142 end | |
143 | |
144 def test_annotate | |
145 @repository.fetch_changesets | |
146 @repository.reload | |
147 ann = @repository.annotate('README') | |
148 assert ann | |
149 assert_equal 3, ann.revisions.length | |
150 assert_equal '1.2', ann.revisions[1].revision | |
151 assert_equal 'LANG', ann.revisions[1].author | |
152 assert_equal 'with one change', ann.lines[1] | |
153 | |
154 ann = @repository.annotate('README', '1') | |
155 assert ann | |
156 assert_equal 1, ann.revisions.length | |
157 assert_equal '1.1', ann.revisions[0].revision | |
158 assert_equal 'LANG', ann.revisions[0].author | |
159 assert_equal 'CVS test repository', ann.lines[0] | |
160 | |
161 # invalid revision | |
162 assert_nil @repository.annotate('README', '123') | |
163 end | |
164 | |
92 else | 165 else |
93 puts "CVS test repository NOT FOUND. Skipping unit tests !!!" | 166 puts "CVS test repository NOT FOUND. Skipping unit tests !!!" |
94 def test_fake; assert true end | 167 def test_fake; assert true end |
95 end | 168 end |
96 end | 169 end |