Implement `mkdir' task action
This commit is contained in:
parent
f147ce7d65
commit
7f5d1a4085
14
features/actions/mkdir.feature
Normal file
14
features/actions/mkdir.feature
Normal file
@ -0,0 +1,14 @@
|
||||
@sshd
|
||||
Feature: `mkdir' task action
|
||||
|
||||
Scenario: creates directory given as argument
|
||||
Given a recipe with:
|
||||
"""
|
||||
target 'some_host.test'
|
||||
|
||||
task :create_some_dir do
|
||||
mkdir 'some_directory'
|
||||
end
|
||||
"""
|
||||
When I successfully execute the recipe
|
||||
Then the remote directory "some_directory" must exists
|
@ -6,6 +6,10 @@ Given /^a remote file named "([^"]+)"$/ do |file_name|
|
||||
write_file file_name, ''
|
||||
end
|
||||
|
||||
Then /^the remote directory "([^"]+)" should exists$/ do |path|
|
||||
check_directory_presence([path], true)
|
||||
end
|
||||
|
||||
Then /^the remote file "([^"]+)" should contain "([^"]+)"/ do |path, content|
|
||||
check_file_content path, content, true
|
||||
end
|
||||
|
@ -2,6 +2,7 @@
|
||||
require 'producer/core/action'
|
||||
require 'producer/core/actions/echo'
|
||||
require 'producer/core/actions/shell_command'
|
||||
require 'producer/core/actions/mkdir'
|
||||
require 'producer/core/actions/file_writer'
|
||||
|
||||
# condition tests (need to be defined before the condition DSL)
|
||||
|
15
lib/producer/core/actions/mkdir.rb
Normal file
15
lib/producer/core/actions/mkdir.rb
Normal file
@ -0,0 +1,15 @@
|
||||
module Producer
|
||||
module Core
|
||||
module Actions
|
||||
class Mkdir < Action
|
||||
def apply
|
||||
fs.mkdir path
|
||||
end
|
||||
|
||||
def path
|
||||
arguments.first
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -26,6 +26,10 @@ module Producer
|
||||
false
|
||||
end
|
||||
|
||||
def mkdir(path)
|
||||
sftp.mkdir! path
|
||||
end
|
||||
|
||||
def file_write(path, content)
|
||||
sftp.file.open path, 'w' do |f|
|
||||
f.write content
|
||||
|
@ -13,6 +13,7 @@ module Producer
|
||||
define_action :echo, Actions::Echo
|
||||
define_action :sh, Actions::ShellCommand
|
||||
|
||||
define_action :mkdir, Actions::Mkdir
|
||||
define_action :file_write, Actions::FileWriter
|
||||
|
||||
attr_reader :env, :block, :actions
|
||||
|
23
spec/producer/core/actions/mkdir_spec.rb
Normal file
23
spec/producer/core/actions/mkdir_spec.rb
Normal file
@ -0,0 +1,23 @@
|
||||
require 'spec_helper'
|
||||
|
||||
module Producer::Core
|
||||
describe Actions::Mkdir do
|
||||
let(:env) { Env.new }
|
||||
let(:path) { 'some_path' }
|
||||
subject(:mkdir) { Actions::Mkdir.new(env, path) }
|
||||
|
||||
describe '#apply' do
|
||||
it 'creates directory on remote filesystem' do
|
||||
expect(mkdir.fs).to receive(:mkdir).with(path)
|
||||
mkdir.apply
|
||||
end
|
||||
end
|
||||
|
||||
describe '#path' do
|
||||
it 'returns the path' do
|
||||
expect(mkdir.path).to eq path
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -112,6 +112,18 @@ module Producer::Core
|
||||
end
|
||||
end
|
||||
|
||||
describe '#mkdir' do
|
||||
let(:sftp) { double 'sftp' }
|
||||
let(:path) { 'some_directory_path' }
|
||||
|
||||
before { allow(fs).to receive(:sftp) { sftp } }
|
||||
|
||||
it 'creates the directory' do
|
||||
expect(sftp).to receive(:mkdir!).with(path)
|
||||
fs.mkdir path
|
||||
end
|
||||
end
|
||||
|
||||
describe '#file_write' do
|
||||
let(:sftp) { double('sftp').as_null_object }
|
||||
let(:file) { double('sftp').as_null_object }
|
||||
|
@ -6,7 +6,7 @@ module Producer::Core
|
||||
let(:env) { Env.new }
|
||||
subject(:dsl) { Task::DSL.new(env, &block) }
|
||||
|
||||
%w[echo sh file_write].each do |action|
|
||||
%w[echo sh mkdir file_write].each do |action|
|
||||
it "has `#{action}' action defined" do
|
||||
expect(dsl).to respond_to action.to_sym
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user