aboutsummaryrefslogtreecommitdiffstats
path: root/spec/support/helpers
diff options
context:
space:
mode:
authorRobert2017-11-27 10:25:43 +0100
committerRobert2017-12-14 15:34:46 +0100
commite82600d2efcc90f327b90d04239fe41b80031ad4 (patch)
tree1db02ac294eb3a44bc47d81582c60bf98077dd67 /spec/support/helpers
parent695d6604f12515507e2e8d435370d30df5fc820d (diff)
downloadchouette-core-e82600d2efcc90f327b90d04239fe41b80031ad4.tar.bz2
Refs: #5006@3h;
Zip Support for Specs, allowing to create zip archives in memory * create zip archive from hash or directory tree * Metaspecs -- commented out - for potential refactoring of Zip Support - as readable documentation on how to use Zip Support
Diffstat (limited to 'spec/support/helpers')
-rw-r--r--spec/support/helpers/tree_walker.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/spec/support/helpers/tree_walker.rb b/spec/support/helpers/tree_walker.rb
new file mode 100644
index 000000000..b86c3a8e1
--- /dev/null
+++ b/spec/support/helpers/tree_walker.rb
@@ -0,0 +1,15 @@
+module TreeWalker extend self
+ MAX_LEVEL = 5
+ def walk_tree path, max_level: MAX_LEVEL, level: 0, yield_dirs: :no, &blk
+ raise RuntimeError, "too many levels in tree walk, > #{max_level}" if level > max_level
+ Dir.glob(File.join(path, '*')) do | file |
+ if File.directory?( file )
+ blk.(:dir, file) if yield_dirs == :before
+ walk_tree(file, max_level: max_level, level: level.succ, yield_dirs: yield_dirs, &blk)
+ blk.(:dir, file) if yield_dirs == :after
+ else
+ blk.(:file, file)
+ end
+ end
+ end
+end