From 62e0bc305b7a9e5d119ecaa06d9daaeba4372bae Mon Sep 17 00:00:00 2001 From: Kyle VanderBeek Date: Thu, 30 Jul 2015 15:38:23 -0700 Subject: [PATCH] Allow users to specify a package_glob we will search. In some cases, eligible package or package-like objects may be laying around (particularly .gem files in .bundle/ from a bundler driven test suite). This allows the user to specify the glob(s) for the paths we will search rather than a recursive search of everything. This adds the option package_glob to the provider. It takes a string or list of strings. It defaults to "**/*" (search everthing for package files). --- lib/dpl/provider/packagecloud.rb | 2 +- spec/provider/packagecloud_spec.rb | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/dpl/provider/packagecloud.rb b/lib/dpl/provider/packagecloud.rb index ee8af73cf..f200ec792 100644 --- a/lib/dpl/provider/packagecloud.rb +++ b/lib/dpl/provider/packagecloud.rb @@ -86,7 +86,7 @@ def get_source_files_for(orig_filename) def push_app packages = [] - glob_args = ["**/*"] + glob_args = Array(options.fetch(:package_glob, '**/*')) Dir.chdir(options.fetch(:local_dir, Dir.pwd)) do Dir.glob(*glob_args) do |filename| unless File.directory?(filename) diff --git a/spec/provider/packagecloud_spec.rb b/spec/provider/packagecloud_spec.rb index b9acd8e0c..a0560807c 100644 --- a/spec/provider/packagecloud_spec.rb +++ b/spec/provider/packagecloud_spec.rb @@ -32,4 +32,25 @@ end -end \ No newline at end of file + describe "#push_app" do + it 'defaults to searching everywhere' do + expect(Dir).to receive(:glob).with('**/*') + expect { provider.push_app }.to raise_error(DPL::Error) + end + + it 'accepts and uses a string glob' do + provider.options.update(:package_glob => 'foo*.gem') + + expect(Dir).to receive(:glob).with('foo*.gem') + expect { provider.push_app }.to raise_error(DPL::Error) + end + + it 'accepts and uses an array of globs' do + provider.options.update(:package_glob => ['*.rpm', '**/*.deb']) + + expect(Dir).to receive(:glob).with('*.rpm', '**/*.deb') + expect { provider.push_app }.to raise_error(DPL::Error) + end + end + +end