summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-06-07 09:19:50 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-06-07 09:19:50 +0000
commitaa9d04a4a7ec1232477f0823a584da49aae11d58 (patch)
treea9b7932865849c950106b6bee901cb09f3c2a940 /test
parenta6da479a63c9c5add6b6d81adfca99fbaa73d0a7 (diff)
downloadredmine-aa9d04a4a7ec1232477f0823a584da49aae11d58.tar.gz
redmine-aa9d04a4a7ec1232477f0823a584da49aae11d58.zip
Mercurial adapter improvements (patch #1199 by Pierre Paysant-Le Roux).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1499 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test')
-rw-r--r--test/unit/mercurial_adapter_test.rb49
-rw-r--r--test/unit/repository_mercurial_test.rb20
2 files changed, 69 insertions, 0 deletions
diff --git a/test/unit/mercurial_adapter_test.rb b/test/unit/mercurial_adapter_test.rb
new file mode 100644
index 000000000..b4aaaec61
--- /dev/null
+++ b/test/unit/mercurial_adapter_test.rb
@@ -0,0 +1,49 @@
+require File.dirname(__FILE__) + '/../test_helper'
+begin
+ require 'mocha'
+
+ class MercurialAdapterTest < Test::Unit::TestCase
+
+ TEMPLATES_DIR = "#{RAILS_ROOT}/extra/mercurial"
+ TEMPLATE_NAME = "hg-template"
+ TEMPLATE_EXTENSION = "tmpl"
+
+ REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
+
+
+ def test_version_template_0_9_5
+ # 0.9.5
+ test_version_template_for("0.9.5", [0,9,5], "0.9.5")
+ end
+
+ def test_version_template_1_0
+ # 1.0
+ test_version_template_for("1.0", [1,0], "1.0")
+ end
+
+ def test_version_template_1_0_win
+ test_version_template_for("1e4ddc9ac9f7+20080325", "Unknown version", "1.0")
+ end
+
+ def test_version_template_1_0_1_win
+ test_version_template_for("1.0.1+20080525", [1,0,1], "1.0")
+ end
+
+ def test_version_template_changeset_id
+ test_version_template_for("1916e629a29d", "Unknown version", "1.0")
+ end
+
+ private
+
+ def test_version_template_for(hgversion, version, templateversion)
+ Redmine::Scm::Adapters::MercurialAdapter.any_instance.stubs(:hgversion_from_command_line).returns(hgversion)
+ adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH)
+ assert_equal version, adapter.hgversion
+ assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{templateversion}.#{TEMPLATE_EXTENSION}", adapter.template_path
+ assert File.exist?(adapter.template_path)
+ end
+ end
+
+rescue LoadError
+ def test_fake; assert(false, "Requires mocha to run those tests") end
+end
diff --git a/test/unit/repository_mercurial_test.rb b/test/unit/repository_mercurial_test.rb
index 21ddf1e3a..0f993ac16 100644
--- a/test/unit/repository_mercurial_test.rb
+++ b/test/unit/repository_mercurial_test.rb
@@ -48,6 +48,26 @@ class RepositoryMercurialTest < Test::Unit::TestCase
@repository.fetch_changesets
assert_equal 6, @repository.changesets.count
end
+
+ def test_entries
+ assert_equal 2, @repository.entries("sources", 2).size
+ assert_equal 1, @repository.entries("sources", 3).size
+ end
+
+ def test_locate_on_outdated_repository
+ # Change the working dir state
+ %x{hg -R #{REPOSITORY_PATH} up -r 0}
+ assert_equal 1, @repository.entries("images", 0).size
+ assert_equal 2, @repository.entries("images").size
+ assert_equal 2, @repository.entries("images", 2).size
+ end
+
+
+ def test_cat
+ assert @repository.scm.cat("sources/welcome_controller.rb", 2)
+ assert_nil @repository.scm.cat("sources/welcome_controller.rb")
+ end
+
else
puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end