From 5fa3c5866ca794af821ef84f95c86810af39e2a7 Mon Sep 17 00:00:00 2001 From: Brian Cain Date: Mon, 3 Dec 2018 14:45:26 -0800 Subject: [PATCH] Ensure tmp dir for validate is removed once command exits --- plugins/commands/validate/command.rb | 7 ++++++- test/unit/plugins/commands/validate/command_test.rb | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/commands/validate/command.rb b/plugins/commands/validate/command.rb index ab2b9740f..a68deb87a 100644 --- a/plugins/commands/validate/command.rb +++ b/plugins/commands/validate/command.rb @@ -30,7 +30,7 @@ module VagrantPlugins action_env = {} if options[:ignore_provider] action_env[:ignore_provider] = true - mockup_providers! + tmp_data_dir = mockup_providers! end # Validate the configuration of all machines @@ -42,6 +42,8 @@ module VagrantPlugins # Success, exit status 0 0 + ensure + FileUtils.remove_entry tmp_data_dir if tmp_data_dir end protected @@ -51,6 +53,8 @@ module VagrantPlugins # It essentially ignores that there are no installed or usable prodivers so # that Vagrant can go along and validate the rest of the Vagrantfile and ignore # any provider blocks. + # + # return [String] tmp_data_dir - Temporary dir used to store guest metadata during validation def mockup_providers! require 'log4r' logger = Log4r::Logger.new("vagrant::validate") @@ -93,6 +97,7 @@ module VagrantPlugins end end end + tmp_data_dir end end end diff --git a/test/unit/plugins/commands/validate/command_test.rb b/test/unit/plugins/commands/validate/command_test.rb index 98443a0d2..0bcd45cbc 100644 --- a/test/unit/plugins/commands/validate/command_test.rb +++ b/test/unit/plugins/commands/validate/command_test.rb @@ -138,7 +138,8 @@ describe VagrantPlugins::CommandValidate::Command do VF end it "ignores provider specific configurations with the flag" do - allow(subject).to receive(:mockup_providers!).and_return(true) + allow(subject).to receive(:mockup_providers!).and_return("") + allow(FileUtils).to receive(:remove_entry).and_return(true) expect(iso_env.ui).to receive(:info).with(any_args) { |message, _| expect(message).to include("Vagrantfile validated successfully.") }