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