From e95d6f53fe53f704b65b1892e9bbc897024732f8 Mon Sep 17 00:00:00 2001 From: Sean Millichamp Date: Thu, 24 Jan 2019 11:27:05 -0500 Subject: [PATCH] Add glob support for modulepath Recent versions of Puppet support glob expansion in the environment specified modulepath. This change is required for environments which take advantage of this support. --- lib/octocatalog-diff/catalog-util/fileresources.rb | 2 +- .../tests/catalog-util/fileresources_spec.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/octocatalog-diff/catalog-util/fileresources.rb b/lib/octocatalog-diff/catalog-util/fileresources.rb index bd77c2f9..8621b0a0 100644 --- a/lib/octocatalog-diff/catalog-util/fileresources.rb +++ b/lib/octocatalog-diff/catalog-util/fileresources.rb @@ -59,7 +59,7 @@ def self.module_path(dir) result = [] Regexp.last_match(1).split(/:/).map(&:strip).each do |path| next if path.start_with?('$') - result << File.expand_path(path, dir) + result.concat(Dir.glob(File.expand_path(path, dir))) end result else diff --git a/spec/octocatalog-diff/tests/catalog-util/fileresources_spec.rb b/spec/octocatalog-diff/tests/catalog-util/fileresources_spec.rb index 76f7b218..1bb4cef3 100644 --- a/spec/octocatalog-diff/tests/catalog-util/fileresources_spec.rb +++ b/spec/octocatalog-diff/tests/catalog-util/fileresources_spec.rb @@ -83,9 +83,22 @@ def catalog_from_fixture(path) it 'should return proper entries from environment.conf modulepath' do allow(File).to receive(:file?).with('/a/environment.conf').and_return(true) allow(File).to receive(:read).with('/a/environment.conf').and_return('modulepath=modules:site:$basemoduledir') + allow(Dir).to receive(:glob).with('/a/modules').and_return(['/a/modules']) + allow(Dir).to receive(:glob).with('/a/site').and_return(['/a/site']) result = OctocatalogDiff::CatalogUtil::FileResources.module_path('/a') expect(result).to eq(['/a/modules', '/a/site']) end + + it 'should expand globs in modulepath, if present' do + allow(File).to receive(:file?).with('/a/environment.conf').and_return(true) + allow(File).to receive(:read).with('/a/environment.conf') + .and_return('modulepath=modules:extra_mods/*/modules:$basemoduledir') + allow(Dir).to receive(:glob).with('/a/modules').and_return(['/a/modules']) + allow(Dir).to receive(:glob).with('/a/extra_mods/*/modules') + .and_return(['/a/extra_mods/a/modules', '/a/extra_mods/b/modules']) + result = OctocatalogDiff::CatalogUtil::FileResources.module_path('/a') + expect(result).to eq(['/a/modules', '/a/extra_mods/a/modules', '/a/extra_mods/b/modules']) + end end context 'with mixed files and directories' do