aboutsummaryrefslogtreecommitdiff
path: root/lib/leap_cli/config/object_list.rb
diff options
context:
space:
mode:
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