diff options
| author | Robert | 2017-11-27 10:25:43 +0100 | 
|---|---|---|
| committer | Robert | 2017-12-14 15:34:46 +0100 | 
| commit | e82600d2efcc90f327b90d04239fe41b80031ad4 (patch) | |
| tree | 1db02ac294eb3a44bc47d81582c60bf98077dd67 /spec/support/helpers | |
| parent | 695d6604f12515507e2e8d435370d30df5fc820d (diff) | |
| download | chouette-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.rb | 15 | 
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  | 
