##// END OF EJS Templates
scm: cvs: replace RAILS_ROOT to Rails.root in unit model test....
Toshi MARUYAMA -
r5940:ee2418f07618
parent child
Show More
@@ -1,169 +1,168
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 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 REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s
24 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
25 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
24 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
26 # CVS module
25 # CVS module
27 MODULE_NAME = 'test'
26 MODULE_NAME = 'test'
28 CHANGESETS_NUM = 7
27 CHANGESETS_NUM = 7
29
28
30 def setup
29 def setup
31 @project = Project.find(3)
30 @project = Project.find(3)
32 @repository = Repository::Cvs.create(:project => @project,
31 @repository = Repository::Cvs.create(:project => @project,
33 :root_url => REPOSITORY_PATH,
32 :root_url => REPOSITORY_PATH,
34 :url => MODULE_NAME,
33 :url => MODULE_NAME,
35 :log_encoding => 'UTF-8')
34 :log_encoding => 'UTF-8')
36 assert @repository
35 assert @repository
37 end
36 end
38
37
39 if File.directory?(REPOSITORY_PATH)
38 if File.directory?(REPOSITORY_PATH)
40 def test_fetch_changesets_from_scratch
39 def test_fetch_changesets_from_scratch
41 assert_equal 0, @repository.changesets.count
40 assert_equal 0, @repository.changesets.count
42 @repository.fetch_changesets
41 @repository.fetch_changesets
43 @repository.reload
42 @repository.reload
44
43
45 assert_equal CHANGESETS_NUM, @repository.changesets.count
44 assert_equal CHANGESETS_NUM, @repository.changesets.count
46 assert_equal 16, @repository.changes.count
45 assert_equal 16, @repository.changes.count
47 assert_not_nil @repository.changesets.find_by_comments('Two files changed')
46 assert_not_nil @repository.changesets.find_by_comments('Two files changed')
48
47
49 r2 = @repository.changesets.find_by_revision('2')
48 r2 = @repository.changesets.find_by_revision('2')
50 assert_equal 'v1-20071213-162510', r2.scmid
49 assert_equal 'v1-20071213-162510', r2.scmid
51 end
50 end
52
51
53 def test_fetch_changesets_incremental
52 def test_fetch_changesets_incremental
54 assert_equal 0, @repository.changesets.count
53 assert_equal 0, @repository.changesets.count
55 @repository.fetch_changesets
54 @repository.fetch_changesets
56 # Remove changesets with revision > 3
55 # Remove changesets with revision > 3
57 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3}
56 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3}
58 @repository.reload
57 @repository.reload
59 assert_equal 3, @repository.changesets.count
58 assert_equal 3, @repository.changesets.count
60 assert_equal %w|3 2 1|, @repository.changesets.collect(&:revision)
59 assert_equal %w|3 2 1|, @repository.changesets.collect(&:revision)
61
60
62 rev3_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
61 rev3_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
63 assert_equal '3', rev3_commit.revision
62 assert_equal '3', rev3_commit.revision
64 # 2007-12-14 01:27:22 +0900
63 # 2007-12-14 01:27:22 +0900
65 rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
64 rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
66 assert_equal 'HEAD-20071213-162722', rev3_commit.scmid
65 assert_equal 'HEAD-20071213-162722', rev3_commit.scmid
67 assert_equal rev3_committed_on, rev3_commit.committed_on
66 assert_equal rev3_committed_on, rev3_commit.committed_on
68 latest_rev = @repository.latest_changeset
67 latest_rev = @repository.latest_changeset
69 assert_equal rev3_committed_on, latest_rev.committed_on
68 assert_equal rev3_committed_on, latest_rev.committed_on
70
69
71 @repository.fetch_changesets
70 @repository.fetch_changesets
72 @repository.reload
71 @repository.reload
73 assert_equal CHANGESETS_NUM, @repository.changesets.count
72 assert_equal CHANGESETS_NUM, @repository.changesets.count
74
73
75 assert_equal %w|7 6 5 4 3 2 1|, @repository.changesets.collect(&:revision)
74 assert_equal %w|7 6 5 4 3 2 1|, @repository.changesets.collect(&:revision)
76 rev5_commit = @repository.changesets.find_by_revision('5')
75 rev5_commit = @repository.changesets.find_by_revision('5')
77 assert_equal 'HEAD-20071213-163001', rev5_commit.scmid
76 assert_equal 'HEAD-20071213-163001', rev5_commit.scmid
78 # 2007-12-14 01:30:01 +0900
77 # 2007-12-14 01:30:01 +0900
79 rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1)
78 rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1)
80 assert_equal rev5_committed_on, rev5_commit.committed_on
79 assert_equal rev5_committed_on, rev5_commit.committed_on
81 end
80 end
82
81
83 def test_deleted_files_should_not_be_listed
82 def test_deleted_files_should_not_be_listed
84 assert_equal 0, @repository.changesets.count
83 assert_equal 0, @repository.changesets.count
85 @repository.fetch_changesets
84 @repository.fetch_changesets
86 @repository.reload
85 @repository.reload
87 assert_equal CHANGESETS_NUM, @repository.changesets.count
86 assert_equal CHANGESETS_NUM, @repository.changesets.count
88
87
89 entries = @repository.entries('sources')
88 entries = @repository.entries('sources')
90 assert entries.detect {|e| e.name == 'watchers_controller.rb'}
89 assert entries.detect {|e| e.name == 'watchers_controller.rb'}
91 assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'}
90 assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'}
92 end
91 end
93
92
94 def test_entries_rev3
93 def test_entries_rev3
95 @repository.fetch_changesets
94 @repository.fetch_changesets
96 @repository.reload
95 @repository.reload
97 entries = @repository.entries('', '3')
96 entries = @repository.entries('', '3')
98 assert_equal 3, entries.size
97 assert_equal 3, entries.size
99 assert_equal entries[2].name, "README"
98 assert_equal entries[2].name, "README"
100 assert_equal entries[2].lastrev.time, Time.gm(2007, 12, 13, 16, 27, 22)
99 assert_equal entries[2].lastrev.time, Time.gm(2007, 12, 13, 16, 27, 22)
101 assert_equal entries[2].lastrev.identifier, '3'
100 assert_equal entries[2].lastrev.identifier, '3'
102 assert_equal entries[2].lastrev.revision, '3'
101 assert_equal entries[2].lastrev.revision, '3'
103 assert_equal entries[2].lastrev.author, 'LANG'
102 assert_equal entries[2].lastrev.author, 'LANG'
104 end
103 end
105
104
106 def test_entries_invalid_path
105 def test_entries_invalid_path
107 @repository.fetch_changesets
106 @repository.fetch_changesets
108 @repository.reload
107 @repository.reload
109 assert_nil @repository.entries('missing')
108 assert_nil @repository.entries('missing')
110 assert_nil @repository.entries('missing', '3')
109 assert_nil @repository.entries('missing', '3')
111 end
110 end
112
111
113 def test_entries_invalid_revision
112 def test_entries_invalid_revision
114 @repository.fetch_changesets
113 @repository.fetch_changesets
115 @repository.reload
114 @repository.reload
116 assert_nil @repository.entries('', '123')
115 assert_nil @repository.entries('', '123')
117 end
116 end
118
117
119 def test_cat
118 def test_cat
120 @repository.fetch_changesets
119 @repository.fetch_changesets
121 @repository.reload
120 @repository.reload
122 buf = @repository.cat('README')
121 buf = @repository.cat('README')
123 assert buf
122 assert buf
124 lines = buf.split("\n")
123 lines = buf.split("\n")
125 assert_equal 3, lines.length
124 assert_equal 3, lines.length
126 buf = lines[1].gsub(/\r$/, "")
125 buf = lines[1].gsub(/\r$/, "")
127 assert_equal 'with one change', buf
126 assert_equal 'with one change', buf
128 buf = @repository.cat('README', '1')
127 buf = @repository.cat('README', '1')
129 assert buf
128 assert buf
130 lines = buf.split("\n")
129 lines = buf.split("\n")
131 assert_equal 1, lines.length
130 assert_equal 1, lines.length
132 buf = lines[0].gsub(/\r$/, "")
131 buf = lines[0].gsub(/\r$/, "")
133 assert_equal 'CVS test repository', buf
132 assert_equal 'CVS test repository', buf
134 assert_nil @repository.cat('missing.rb')
133 assert_nil @repository.cat('missing.rb')
135
134
136 # sources/welcome_controller.rb is removed at revision 5.
135 # sources/welcome_controller.rb is removed at revision 5.
137 assert @repository.cat('sources/welcome_controller.rb', '4')
136 assert @repository.cat('sources/welcome_controller.rb', '4')
138 assert @repository.cat('sources/welcome_controller.rb', '5').blank?
137 assert @repository.cat('sources/welcome_controller.rb', '5').blank?
139
138
140 # invalid revision
139 # invalid revision
141 assert @repository.cat('README', '123').blank?
140 assert @repository.cat('README', '123').blank?
142 end
141 end
143
142
144 def test_annotate
143 def test_annotate
145 @repository.fetch_changesets
144 @repository.fetch_changesets
146 @repository.reload
145 @repository.reload
147 ann = @repository.annotate('README')
146 ann = @repository.annotate('README')
148 assert ann
147 assert ann
149 assert_equal 3, ann.revisions.length
148 assert_equal 3, ann.revisions.length
150 assert_equal '1.2', ann.revisions[1].revision
149 assert_equal '1.2', ann.revisions[1].revision
151 assert_equal 'LANG', ann.revisions[1].author
150 assert_equal 'LANG', ann.revisions[1].author
152 assert_equal 'with one change', ann.lines[1]
151 assert_equal 'with one change', ann.lines[1]
153
152
154 ann = @repository.annotate('README', '1')
153 ann = @repository.annotate('README', '1')
155 assert ann
154 assert ann
156 assert_equal 1, ann.revisions.length
155 assert_equal 1, ann.revisions.length
157 assert_equal '1.1', ann.revisions[0].revision
156 assert_equal '1.1', ann.revisions[0].revision
158 assert_equal 'LANG', ann.revisions[0].author
157 assert_equal 'LANG', ann.revisions[0].author
159 assert_equal 'CVS test repository', ann.lines[0]
158 assert_equal 'CVS test repository', ann.lines[0]
160
159
161 # invalid revision
160 # invalid revision
162 assert_nil @repository.annotate('README', '123')
161 assert_nil @repository.annotate('README', '123')
163 end
162 end
164
163
165 else
164 else
166 puts "CVS test repository NOT FOUND. Skipping unit tests !!!"
165 puts "CVS test repository NOT FOUND. Skipping unit tests !!!"
167 def test_fake; assert true end
166 def test_fake; assert true end
168 end
167 end
169 end
168 end
General Comments 0
You need to be logged in to leave comments. Login now