summaryrefslogtreecommitdiff
path: root/test/lib
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-02-18 12:26:34 +0200
committerPaul Buetow <paul@buetow.org>2025-02-18 12:26:34 +0200
commitdeda72cb08e1177b15a5506c20fa75edeb876eb6 (patch)
tree75ff4767bd096bfc21a065adc5bd1269a47809ff /test/lib
parent703fd14764974ba1513c987dcb461e4a23d633e1 (diff)
parent614a3b5062d3a37d7f1eb59ad47e4ec5d791edc6 (diff)
Merge branch 'main' of codeberg.org:snonux/rcm
Diffstat (limited to 'test/lib')
-rw-r--r--test/lib/dslkeywords/dependency_test.rb50
1 files changed, 44 insertions, 6 deletions
diff --git a/test/lib/dslkeywords/dependency_test.rb b/test/lib/dslkeywords/dependency_test.rb
index 324a756..aeb2790 100644
--- a/test/lib/dslkeywords/dependency_test.rb
+++ b/test/lib/dslkeywords/dependency_test.rb
@@ -5,25 +5,63 @@ require_relative '../../../lib/dsl'
class RCMDependencyTest < Minitest::Test
def test_depends_on
+ foo = nil
+ bar = nil
+ baz = nil
+
configure_from_scratch do
- notify 'foo' do
- depends_on notify['bar'], notify['baz']
+ foo = notify 'foo' do
+ depends_on notify 'bar', 'baz'
:foo_message
end
- notify 'bar'
+ bar = notify 'bar'
- notify 'baz' do
- depends_on notify['bar']
+ baz = notify 'baz' do
+ depends_on notify 'bar'
:baz_message
end
end
+
+ assert_equal 2, foo.depends_on.count
+ assert foo.depends_on?("notify('bar')", "notify('baz')")
+
+ assert_equal 0, bar.depends_on.count
+ refute bar.depends_on?('foo')
+
+ assert_equal 1, baz.depends_on.count
+ assert baz.depends_on?("notify('bar')")
end
def test_depends_on_invalid_resource
assert_raises(RCM::ResourceDependencies::NoSuchResourceType) do
configure_from_scratch do
- notify { depends_on invalid['baz'] }
+ notify { depends_on invalid('baz') }
+ end
+ end
+ end
+
+ def test_depends_on_non_existant_dependency
+ assert_raises(RCM::Resource::NoSuchResourceObject) do
+ configure_from_scratch do
+ notify { depends_on notify('nonexistant') }
+ end
+ end
+ end
+
+ def test_dependency_loop
+ assert_raises(RCM::DependencyEvaluator::DependencyLoop) do
+ configure_from_scratch do
+ notify('loop') { depends_on notify('loop') }
+ end
+ end
+ end
+
+ def test_dependency_loop_indirect
+ assert_raises(RCM::DependencyEvaluator::DependencyLoop) do
+ configure_from_scratch do
+ notify('loop') { depends_on notify('pool') }
+ notify('pool') { depends_on notify('loop') }
end
end
end