summaryrefslogtreecommitdiffstats
path: root/test/unit/issue_test.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2011-03-13 13:00:55 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2011-03-13 13:00:55 +0000
commit9375f1c3a4ea42a7175febf75da404dbf59aa7b0 (patch)
tree91774cefde8759c751b9fc31db05a6717ac45c67 /test/unit/issue_test.rb
parent72d6b2c8df4f46ac37ceec3563251ab2cdcdb2aa (diff)
downloadredmine-9375f1c3a4ea42a7175febf75da404dbf59aa7b0.tar.gz
redmine-9375f1c3a4ea42a7175febf75da404dbf59aa7b0.zip
Prevent SystemStackError on Issue#all_dependent_issues with mutiple circular dependencies (#7320).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5104 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/unit/issue_test.rb')
-rw-r--r--test/unit/issue_test.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
index 8dcee3847..f4dcf6625 100644
--- a/test/unit/issue_test.rb
+++ b/test/unit/issue_test.rb
@@ -686,6 +686,18 @@ class IssueTest < ActiveSupport::TestCase
assert_equal [2, 3], Issue.find(1).all_dependent_issues.collect(&:id).sort
end
+
+ def test_all_dependent_issues_with_persistent_multiple_circular_dependencies
+ IssueRelation.delete_all
+ assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_RELATES)
+ assert IssueRelation.create!(:issue_from => Issue.find(2), :issue_to => Issue.find(3), :relation_type => IssueRelation::TYPE_RELATES)
+ assert IssueRelation.create!(:issue_from => Issue.find(3), :issue_to => Issue.find(8), :relation_type => IssueRelation::TYPE_RELATES)
+ # Validation skipping
+ assert IssueRelation.new(:issue_from => Issue.find(8), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_RELATES).save(false)
+ assert IssueRelation.new(:issue_from => Issue.find(3), :issue_to => Issue.find(1), :relation_type => IssueRelation::TYPE_RELATES).save(false)
+
+ assert_equal [2, 3, 8], Issue.find(1).all_dependent_issues.collect(&:id).sort
+ end
context "#done_ratio" do
setup do