1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require File.expand_path('../../test_helper', __FILE__)
class RepositoryBazaarTest < ActiveSupport::TestCase
fixtures :projects
include Redmine::I18n
REPOSITORY_PATH = Rails.root.join('tmp/test/bazaar_repository/trunk').to_s
REPOSITORY_PATH.gsub!(/\/+/, '/')
NUM_REV = 4
def setup
@project = Project.find(3)
@repository = Repository::Bazaar.create(
:project => @project, :url => "file:///#{REPOSITORY_PATH}",
:log_encoding => 'UTF-8')
assert @repository
end
def test_blank_path_to_repository_error_message
set_language_if_valid 'en'
repo = Repository::Bazaar.new(
:project => @project,
:identifier => 'test',
:log_encoding => 'UTF-8'
)
assert !repo.save
assert_include "Path to repository can't be blank",
repo.errors.full_messages
end
def test_blank_path_to_repository_error_message_fr
set_language_if_valid 'fr'
str = "Chemin du d\xc3\xa9p\xc3\xb4t doit \xc3\xaatre renseign\xc3\xa9(e)"
str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
repo = Repository::Bazaar.new(
:project => @project,
:url => "",
:identifier => 'test',
:log_encoding => 'UTF-8'
)
assert !repo.save
assert_include str, repo.errors.full_messages
end
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
assert_equal 9, @repository.changes.count
assert_equal 'Initial import', @repository.changesets.find_by_revision('1').comments
end
def test_fetch_changesets_incremental
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
# Remove changesets with revision > 5
@repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 2}
@project.reload
assert_equal 2, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
end
def test_entries
entries = @repository.entries
assert_equal 2, entries.size
assert_equal 'dir', entries[0].kind
assert_equal 'directory', entries[0].name
assert_equal 'file', entries[1].kind
assert_equal 'doc-mkdir.txt', entries[1].name
end
def test_entries_in_subdirectory
entries = @repository.entries('directory')
assert_equal 3, entries.size
assert_equal 'file', entries.last.kind
assert_equal 'edit.png', entries.last.name
end
def test_previous
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
changeset = @repository.find_changeset_by_name('3')
assert_equal @repository.find_changeset_by_name('2'), changeset.previous
end
def test_previous_nil
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
changeset = @repository.find_changeset_by_name('1')
assert_nil changeset.previous
end
def test_next
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
changeset = @repository.find_changeset_by_name('2')
assert_equal @repository.find_changeset_by_name('3'), changeset.next
end
def test_next_nil
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
changeset = @repository.find_changeset_by_name('4')
assert_nil changeset.next
end
else
puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
end
end
|