mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Remove legacy repo specs as they are doubled in svn/git model spec
This commit is contained in:
@@ -28,72 +28,6 @@
|
||||
#++
|
||||
|
||||
namespace :test do
|
||||
desc 'Run unit and functional scm tests'
|
||||
task :scm do
|
||||
errors = %w(test:scm:units test:scm:functionals).collect { |task|
|
||||
begin
|
||||
Rake::Task[task].invoke
|
||||
nil
|
||||
rescue => e
|
||||
task
|
||||
end
|
||||
}.compact
|
||||
abort "Errors running #{errors.to_sentence(locale: :en)}!" if errors.any?
|
||||
end
|
||||
|
||||
namespace :scm do
|
||||
namespace :setup do
|
||||
desc 'Creates directory for test repositories'
|
||||
task :create_dir do
|
||||
FileUtils.mkdir_p Rails.root + '/tmp/test'
|
||||
end
|
||||
|
||||
supported_scms = [:subversion, :git]
|
||||
|
||||
desc 'Creates a test subversion repository'
|
||||
supported_scms.each do |scm|
|
||||
desc "Creates a test #{scm} repository"
|
||||
task scm => :create_dir do
|
||||
repo_path = File.join(Rails.root, "tmp/test/#{scm}_repository")
|
||||
FileUtils.mkdir_p repo_path
|
||||
# system "gunzip < spec/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test"
|
||||
system "tar -xvz -C #{repo_path} -f spec/fixtures/repositories/#{scm}_repository.tar.gz"
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Creates all test repositories'
|
||||
task all: supported_scms
|
||||
end
|
||||
|
||||
desc 'Updates installed test repositories'
|
||||
task :update do
|
||||
require 'fileutils'
|
||||
Dir.glob('tmp/test/*_repository').each do |dir|
|
||||
next unless File.basename(dir) =~ %r{\A(.+)_repository\z} && File.directory?(dir)
|
||||
scm = $1
|
||||
next unless fixture = Dir.glob("spec/fixtures/repositories/#{scm}_repository.*").first
|
||||
next if File.stat(dir).ctime > File.stat(fixture).mtime
|
||||
|
||||
FileUtils.rm_rf dir
|
||||
Rake::Task["test:scm:setup:#{scm}"].execute
|
||||
end
|
||||
end
|
||||
|
||||
Rake::TestTask.new(units: 'db:test:prepare') do |t|
|
||||
t.libs << 'test'
|
||||
t.verbose = true
|
||||
t.test_files = FileList['test/unit/repository*_test.rb'] + FileList['test/unit/lib/redmine/scm/**/*_test.rb']
|
||||
end
|
||||
Rake::Task['test:scm:units'].comment = 'Run the scm unit tests'
|
||||
|
||||
Rake::TestTask.new(functionals: 'db:test:prepare') do |t|
|
||||
t.libs << 'test'
|
||||
t.verbose = true
|
||||
t.test_files = FileList['test/functional/repositories*_test.rb']
|
||||
end
|
||||
Rake::Task['test:scm:functionals'].comment = 'Run the scm functional tests'
|
||||
end
|
||||
|
||||
desc 'runs all tests'
|
||||
namespace :suite do
|
||||
task run: [:cucumber, :spec, 'spec:legacy']
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ if [ $1 = 'units' ]; then
|
||||
fi
|
||||
|
||||
if [ $1 = 'spec_legacy' ]; then
|
||||
run "bundle exec rake test:scm:setup:all"
|
||||
run "bundle exec rake"
|
||||
fi
|
||||
|
||||
run "cp -rp public/assets/frontend_assets.manifest.json config/frontend_assets.manifest.json"
|
||||
|
||||
@@ -1,338 +0,0 @@
|
||||
#-- encoding: UTF-8
|
||||
#-- copyright
|
||||
# OpenProject is a project management system.
|
||||
# Copyright (C) 2012-2018 the OpenProject Foundation (OPF)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2017 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# See docs/COPYRIGHT.rdoc for more details.
|
||||
#++
|
||||
require 'legacy_spec_helper'
|
||||
|
||||
describe Repository::Git, type: :model do
|
||||
fixtures :all
|
||||
|
||||
# No '..' in the repository path
|
||||
let(:git_repository_path) {
|
||||
path = Rails.root.to_s.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
|
||||
path.gsub!(/\//, '\\') if Redmine::Platform.mswin?
|
||||
path
|
||||
}
|
||||
|
||||
FELIX_HEX2 = "Felix Sch\xC3\xA4fer"
|
||||
CHAR_1_HEX2 = "\xc3\x9c"
|
||||
|
||||
## Ruby uses ANSI api to fork a process on Windows.
|
||||
## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
|
||||
## and these are incompatible with ASCII.
|
||||
# WINDOWS_PASS = Redmine::Platform.mswin?
|
||||
WINDOWS_PASS = false
|
||||
|
||||
before do
|
||||
skip 'Git test repository NOT FOUND. Skipping unit tests !!!' unless File.directory?(git_repository_path)
|
||||
|
||||
@project = Project.find(3)
|
||||
@repository = Repository::Git.create(
|
||||
project: @project,
|
||||
scm_type: 'local',
|
||||
url: git_repository_path,
|
||||
path_encoding: 'ISO-8859-1'
|
||||
)
|
||||
assert @repository
|
||||
@char_1 = CHAR_1_HEX2.dup
|
||||
if @char_1.respond_to?(:force_encoding)
|
||||
@char_1.force_encoding('UTF-8')
|
||||
end
|
||||
end
|
||||
|
||||
it 'should fetch changesets from scratch' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
||||
assert_equal 22, @repository.changesets.count
|
||||
file_count = @repository.file_changes.count
|
||||
assert([33,34].include? file_count) # Mac OS X reports one file less changed
|
||||
|
||||
commit = @repository.changesets.reorder(Arel.sql('committed_on ASC')).first
|
||||
assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments
|
||||
assert_equal 'jsmith <jsmith@foo.bar>', commit.committer
|
||||
assert_equal User.find_by_login('jsmith'), commit.user
|
||||
# TODO: add a commit with commit time <> author time to the test repository
|
||||
assert_equal '2007-12-14 09:22:52 +0000'.to_time, commit.committed_on
|
||||
assert_equal '2007-12-14'.to_date, commit.commit_date
|
||||
assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', commit.revision
|
||||
assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', commit.scmid
|
||||
assert_equal 3, commit.file_changes.count
|
||||
change = commit.file_changes.sort_by(&:path).first
|
||||
assert_equal 'README', change.path
|
||||
assert_equal 'A', change.action
|
||||
end
|
||||
|
||||
it 'should fetch changesets incremental' do
|
||||
@repository.fetch_changesets
|
||||
# Remove the 3 latest changesets
|
||||
@repository.changesets.order(Arel.sql('committed_on DESC')).limit(8).each(&:destroy)
|
||||
@repository.reload
|
||||
cs1 = @repository.changesets
|
||||
assert_equal 14, cs1.count
|
||||
|
||||
rev_a_commit = @repository.changesets.order(Arel.sql('committed_on DESC')).first
|
||||
assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', rev_a_commit.revision
|
||||
# Mon Jul 5 22:34:26 2010 +0200
|
||||
rev_a_committed_on = Time.gm(2010, 9, 18, 19, 59, 46)
|
||||
assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', rev_a_commit.scmid
|
||||
assert_equal rev_a_committed_on, rev_a_commit.committed_on
|
||||
latest_rev = @repository.latest_changeset
|
||||
assert_equal rev_a_committed_on, latest_rev.committed_on
|
||||
|
||||
@repository.fetch_changesets
|
||||
assert_equal 22, @repository.changesets.count
|
||||
end
|
||||
|
||||
it 'should latest changesets' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
# with limit
|
||||
changesets = @repository.latest_changesets('', nil, 2)
|
||||
assert_equal 2, changesets.size
|
||||
|
||||
# with path
|
||||
changesets = @repository.latest_changesets('images', nil)
|
||||
assert_equal [
|
||||
'deff712f05a90d96edbd70facc47d944be5897e3',
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
'7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('README', nil)
|
||||
assert_equal [
|
||||
'32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf',
|
||||
'4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8',
|
||||
'713f4944648826f558cf548222f813dabe7cbb04',
|
||||
'61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
'7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
# with path, revision and limit
|
||||
changesets = @repository.latest_changesets('images', '899a15dba')
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
'7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('images', '899a15dba', 1)
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('README', '899a15dba')
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
'7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('README', '899a15dba', 1)
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
# with path, tag and limit
|
||||
changesets = @repository.latest_changesets('images', 'tag01.annotated')
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
'7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('images', 'tag01.annotated', 1)
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('README', 'tag01.annotated')
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
'7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('README', 'tag01.annotated', 1)
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
# with path, branch and limit
|
||||
changesets = @repository.latest_changesets('images', 'test_branch')
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
'7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('images', 'test_branch', 1)
|
||||
assert_equal [
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('README', 'test_branch')
|
||||
assert_equal [
|
||||
'713f4944648826f558cf548222f813dabe7cbb04',
|
||||
'61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
|
||||
'899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
|
||||
'7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets('README', 'test_branch', 2)
|
||||
assert_equal [
|
||||
'713f4944648826f558cf548222f813dabe7cbb04',
|
||||
'61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
# latin-1 encoding path
|
||||
changesets = @repository.latest_changesets(
|
||||
"latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89')
|
||||
assert_equal [
|
||||
'64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
|
||||
'4fc55c43bf3d3dc2efb66145365ddc17639ce81e',
|
||||
], changesets.map(&:revision)
|
||||
|
||||
changesets = @repository.latest_changesets(
|
||||
"latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89', 1)
|
||||
assert_equal [
|
||||
'64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
|
||||
], changesets.map(&:revision)
|
||||
end
|
||||
|
||||
it 'should latest changesets latin 1 dir' do
|
||||
if WINDOWS_PASS
|
||||
#
|
||||
else
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
changesets = @repository.latest_changesets(
|
||||
"latin-1-dir/test-#{@char_1}-subdir", '1ca7f5ed')
|
||||
assert_equal [
|
||||
'1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127',
|
||||
], changesets.map(&:revision)
|
||||
end
|
||||
end
|
||||
|
||||
it 'should find changeset by name' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r|
|
||||
assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518',
|
||||
@repository.find_changeset_by_name(r).revision
|
||||
end
|
||||
end
|
||||
|
||||
it 'should find changeset by empty name' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
['', ' ', nil].each do |r|
|
||||
assert_nil @repository.find_changeset_by_name(r)
|
||||
end
|
||||
end
|
||||
|
||||
it 'should identifier' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
c = @repository.changesets.find_by(revision: '7234cb2750b63f47bff735edc50a1c0a433c2518')
|
||||
assert_equal c.scmid, c.identifier
|
||||
end
|
||||
|
||||
it 'should format identifier' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
c = @repository.changesets.find_by(revision: '7234cb2750b63f47bff735edc50a1c0a433c2518')
|
||||
assert_equal '7234cb27', c.format_identifier
|
||||
end
|
||||
|
||||
it 'should activities' do
|
||||
c = Changeset.create(repository: @repository,
|
||||
committed_on: Time.now,
|
||||
revision: 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
|
||||
scmid: 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
|
||||
comments: 'test')
|
||||
|
||||
event = find_events(User.find(2)).first # manager
|
||||
assert event.event_title.include?('abc7234c:')
|
||||
assert event.event_path =~ /\?rev=abc7234cb2750b63f47bff735edc50a1c0a433c2$/
|
||||
end
|
||||
|
||||
it 'should log utf8' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
str_felix_hex = FELIX_HEX2.dup
|
||||
if str_felix_hex.respond_to?(:force_encoding)
|
||||
str_felix_hex.force_encoding('UTF-8')
|
||||
end
|
||||
c = @repository.changesets.find_by(revision: 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
|
||||
assert_equal "#{str_felix_hex} <felix@fachschaften.org>", c.committer
|
||||
end
|
||||
|
||||
it 'should previous' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
%w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
|
||||
changeset = @repository.find_changeset_by_name(r1)
|
||||
%w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
|
||||
assert_equal @repository.find_changeset_by_name(r2), changeset.previous
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it 'should previous nil' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
%w|7234cb2750b63f47bff735edc50a1c0a433c2518 7234cb2|.each do |r1|
|
||||
changeset = @repository.find_changeset_by_name(r1)
|
||||
assert_nil changeset.previous
|
||||
end
|
||||
end
|
||||
|
||||
it 'should next' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
%w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
|
||||
changeset = @repository.find_changeset_by_name(r2)
|
||||
%w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
|
||||
assert_equal @repository.find_changeset_by_name(r1), changeset.next
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it 'should next nil' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
%w|71e5c1d3dca6304805b143b9d0e6695fb3895ea4 71e5c1d3|.each do |r1|
|
||||
changeset = @repository.find_changeset_by_name(r1)
|
||||
assert_nil changeset.next
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def find_events(user, options = {})
|
||||
fetcher = Redmine::Activity::Fetcher.new(user, options)
|
||||
fetcher.scope = ['changesets']
|
||||
fetcher.events(Date.today - 30, Date.today + 1)
|
||||
end
|
||||
end
|
||||
@@ -1,212 +0,0 @@
|
||||
#-- encoding: UTF-8
|
||||
#-- copyright
|
||||
# OpenProject is a project management system.
|
||||
# Copyright (C) 2012-2018 the OpenProject Foundation (OPF)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2017 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# See docs/COPYRIGHT.rdoc for more details.
|
||||
#++
|
||||
require 'legacy_spec_helper'
|
||||
|
||||
describe Repository::Subversion, type: :model do
|
||||
fixtures :all
|
||||
|
||||
before do
|
||||
skip 'Subversion test repository NOT FOUND. Skipping unit tests !!!' unless repository_configured?('subversion')
|
||||
|
||||
@project = Project.find(3)
|
||||
@repository = Repository::Subversion.create(project: @project,
|
||||
scm_type: 'existing',
|
||||
url: self.class.subversion_repository_url)
|
||||
assert @repository
|
||||
end
|
||||
|
||||
it 'should fetch changesets from scratch' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
||||
assert_equal 14, @repository.changesets.count
|
||||
assert_equal 34, @repository.file_changes.count
|
||||
assert_equal 'Initial import.', @repository.changesets.find_by(revision: '1').comments
|
||||
end
|
||||
|
||||
it 'should fetch changesets incremental' do
|
||||
@repository.fetch_changesets
|
||||
# Remove changesets with revision > 5
|
||||
@repository.changesets.each do |c| c.destroy if c.revision.to_i > 5 end
|
||||
@repository.reload
|
||||
assert_equal 5, @repository.changesets.count
|
||||
|
||||
@repository.fetch_changesets
|
||||
assert_equal 14, @repository.changesets.count
|
||||
end
|
||||
|
||||
it 'should latest changesets' do
|
||||
@repository.fetch_changesets
|
||||
|
||||
# with limit
|
||||
changesets = @repository.latest_changesets('', nil, 2)
|
||||
assert_equal 2, changesets.size
|
||||
assert_equal @repository.latest_changesets('', nil).take(2), changesets
|
||||
|
||||
# with path
|
||||
changesets = @repository.latest_changesets('subversion_test/folder', nil)
|
||||
assert_equal ['10', '9', '7', '6', '5', '2'], changesets.map(&:revision)
|
||||
|
||||
# with path and revision
|
||||
changesets = @repository.latest_changesets('subversion_test/folder', 8)
|
||||
assert_equal ['7', '6', '5', '2'], changesets.map(&:revision)
|
||||
end
|
||||
|
||||
it 'should directory listing with square brackets in path' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
||||
entries = @repository.entries('subversion_test/[folder_with_brackets]')
|
||||
refute_nil entries, 'Expect to find entries in folder_with_brackets'
|
||||
assert_equal 1, entries.size, 'Expect one entry in folder_with_brackets'
|
||||
assert_equal 'README.txt', entries.first.name
|
||||
end
|
||||
|
||||
it 'should directory listing with square brackets in base' do
|
||||
@project = Project.find(3)
|
||||
@repository = Repository::Subversion.create(
|
||||
project: @project,
|
||||
scm_type: 'local',
|
||||
url: "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]")
|
||||
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
||||
assert_equal 1, @repository.changesets.count, 'Expected to see 1 revision'
|
||||
assert_equal 2, @repository.file_changes.count, 'Expected to see 2 changes, dir add and file add'
|
||||
|
||||
entries = @repository.entries('')
|
||||
refute_nil entries, 'Expect to find entries'
|
||||
assert_equal 1, entries.size, 'Expect a single entry'
|
||||
assert_equal 'README.txt', entries.first.name
|
||||
end
|
||||
|
||||
it 'should identifier' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
c = @repository.changesets.find_by(revision: '1')
|
||||
assert_equal c.revision, c.identifier
|
||||
end
|
||||
|
||||
it 'should find changeset by empty name' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
['', ' ', nil].each do |r|
|
||||
assert_nil @repository.find_changeset_by_name(r)
|
||||
end
|
||||
end
|
||||
|
||||
it 'should identifier nine digit' do
|
||||
c = Changeset.new(repository: @repository, committed_on: Time.now,
|
||||
revision: '123456789', comments: 'test')
|
||||
assert_equal c.identifier, c.revision
|
||||
end
|
||||
|
||||
it 'should format identifier' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
c = @repository.changesets.find_by(revision: '1')
|
||||
assert_equal c.format_identifier, c.revision
|
||||
end
|
||||
|
||||
it 'should format identifier nine digit' do
|
||||
c = Changeset.new(repository: @repository, committed_on: Time.now,
|
||||
revision: '123456789', comments: 'test')
|
||||
assert_equal c.format_identifier, c.revision
|
||||
end
|
||||
|
||||
it 'should activities' do
|
||||
c = Changeset.create(repository: @repository, committed_on: Time.now,
|
||||
revision: '1', comments: 'test')
|
||||
event = find_events(User.find(2)).first # manager
|
||||
assert event.event_title.include?('1:')
|
||||
assert event.event_path =~ /\?rev=1$/
|
||||
end
|
||||
|
||||
it 'should activities nine digit' do
|
||||
c = Changeset.create(repository: @repository, committed_on: Time.now,
|
||||
revision: '123456789', comments: 'test')
|
||||
event = find_events(User.find(2)).first # manager
|
||||
assert event.event_title.include?('123456789:')
|
||||
assert event.event_path =~ /\?rev=123456789$/
|
||||
end
|
||||
|
||||
it 'should log encoding ignore setting' do
|
||||
Setting.commit_logs_encoding = 'windows-1252'
|
||||
s1 = "\xC2\x80"
|
||||
s2 = "\xc3\x82\xc2\x80"
|
||||
if s1.respond_to?(:force_encoding)
|
||||
s1.force_encoding('ISO-8859-1')
|
||||
s2.force_encoding('UTF-8')
|
||||
assert_equal s1.encode('UTF-8'), s2
|
||||
end
|
||||
c = Changeset.new(repository: @repository,
|
||||
comments: s2,
|
||||
revision: '123',
|
||||
committed_on: Time.now)
|
||||
assert c.save
|
||||
assert_equal s2, c.comments
|
||||
end
|
||||
|
||||
it 'should previous' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
changeset = @repository.find_changeset_by_name('3')
|
||||
assert_equal @repository.find_changeset_by_name('2'), changeset.previous
|
||||
end
|
||||
|
||||
it 'should previous nil' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
changeset = @repository.find_changeset_by_name('1')
|
||||
assert_nil changeset.previous
|
||||
end
|
||||
|
||||
it 'should next' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
changeset = @repository.find_changeset_by_name('2')
|
||||
assert_equal @repository.find_changeset_by_name('3'), changeset.next
|
||||
end
|
||||
|
||||
it 'should next nil' do
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
changeset = @repository.find_changeset_by_name('14')
|
||||
assert_nil changeset.next
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def find_events(user, options = {})
|
||||
fetcher = Redmine::Activity::Fetcher.new(user, options)
|
||||
fetcher.scope = ['changesets']
|
||||
fetcher.events(Date.today - 30, Date.today + 1)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user