Remove legacy repo specs as they are doubled in svn/git model spec

This commit is contained in:
Oliver Günther
2019-02-18 15:38:12 +01:00
parent e57d9d04ba
commit 1dab873e7b
4 changed files with 1 additions and 617 deletions
-66
View File
@@ -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
View File
@@ -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"
-338
View File
@@ -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