aboutsummaryrefslogtreecommitdiff
path: root/lib/leap_cli/config/object_list.rb
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2014-03-08 23:05:10 -0800
committerelijah <elijah@riseup.net>2014-03-08 23:05:10 -0800
commit4e7e6b8dfe6363469f700260cf191a6fca6c202e (patch)
treec6d9a91b1358f6519c3483bdf47b2b24badfe561 /lib/leap_cli/config/object_list.rb
parentf041c31a469a423d0a587ecccc3d4726caa630de (diff)
downloadleap_cli-4e7e6b8dfe6363469f700260cf191a6fca6c202e.tar.gz
leap_cli-4e7e6b8dfe6363469f700260cf191a6fca6c202e.tar.bz2
added support for specifying what order nodes should be tested in.
Diffstat (limited to 'lib/leap_cli/config/object_list.rb')
-rw-r--r--lib/leap_cli/config/object_list.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/leap_cli/config/object_list.rb b/lib/leap_cli/config/object_list.rb
index 9ca4697..910e2f7 100644
--- a/lib/leap_cli/config/object_list.rb
+++ b/lib/leap_cli/config/object_list.rb
@@ -1,9 +1,12 @@
+require 'tsort'
+
module LeapCli
module Config
#
# A list of Config::Object instances (internally stored as a hash)
#
class ObjectList < Hash
+ include TSort
def initialize(config=nil)
if config
@@ -171,6 +174,21 @@ module LeapCli
end
end
+ #
+ # topographical sort based on test dependency
+ #
+ def tsort_each_node(&block)
+ self.each_key(&block)
+ end
+
+ def tsort_each_child(node_name, &block)
+ self[node_name].test_dependencies.each(&block)
+ end
+
+ def names_in_test_dependency_order
+ self.tsort
+ end
+
end
end
end