-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathproject_spec.rb
110 lines (96 loc) · 5.67 KB
/
project_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Copyright 2017 Brainsware
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require 'spec_helper'
describe 'composer::project' do
context 'supported operating systems' do
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts
end
context 'it should create a project' do
let(:title) { 'yolo' }
let(:params) { { target: '/srv/web/yolo' } }
it { is_expected.to contain_composer__project('yolo').with('ensure' => 'present') }
it do
is_expected.to contain_exec('composer_install_yolo').with('command' => '/usr/local/bin/composer install --no-interaction --quiet --no-progress --no-dev --prefer-dist',
'cwd' => '/srv/web/yolo')
end
end
context 'composer project with ensure => latest' do
let(:title) { 'yolo' }
let(:params) { { target: '/srv/web/yolo', ensure: 'latest' } }
it { is_expected.to contain_composer__project('yolo').with('ensure' => 'latest') }
it do
is_expected.to contain_exec('composer_install_yolo').with('command' => '/usr/local/bin/composer install --no-interaction --quiet --no-progress --no-dev --prefer-dist',
'cwd' => '/srv/web/yolo')
end
it do
is_expected.to contain_exec('composer_update_yolo').with('command' => '/usr/local/bin/composer update --no-interaction --quiet --no-progress --no-dev --prefer-dist',
'cwd' => '/srv/web/yolo')
end
end
context 'Keep composer project up-to-date with dev dependencies' do
let(:title) { 'yolo' }
let(:params) { { target: '/srv/web/yolo', ensure: 'latest', dev: true } }
it { is_expected.to contain_composer__project('yolo').with('ensure' => 'latest') }
it do
is_expected.to contain_exec('composer_install_yolo').with('command' => '/usr/local/bin/composer install --no-interaction --quiet --no-progress --dev --prefer-dist',
'cwd' => '/srv/web/yolo')
end
it do
is_expected.to contain_exec('composer_update_yolo').with('command' => '/usr/local/bin/composer update --no-interaction --quiet --no-progress --dev --prefer-dist',
'cwd' => '/srv/web/yolo')
end
end
context 'Keep composer project up-to-date with dev dependencies, ignoring composer.lock' do
let(:title) { 'yolo' }
let(:params) { { target: '/srv/web/yolo', ensure: 'latest', dev: true, lock: true } }
it { is_expected.to contain_composer__project('yolo').with('ensure' => 'latest') }
it do
is_expected.to contain_exec('composer_install_yolo').with('command' => '/usr/local/bin/composer install --no-interaction --quiet --no-progress --dev --prefer-dist',
'cwd' => '/srv/web/yolo')
end
it do
is_expected.to contain_exec('composer_update_yolo').with('command' => '/usr/local/bin/composer update --no-interaction --quiet --no-progress --dev --prefer-dist --lock',
'cwd' => '/srv/web/yolo')
end
end
context 'Create project from source' do
let(:title) { 'yolo' }
let(:params) { { target: '/srv/web/yolo', ensure: 'present', source: 'foo/bar' } }
it { is_expected.to contain_composer__project('yolo').with('ensure' => 'present') }
it do
is_expected.to contain_exec('composer_create_project_yolo').with('command' => '/usr/local/bin/composer create-project --no-interaction --quiet --no-progress --no-dev --prefer-dist --keep-vcs foo/bar .',
'creates' => '/srv/web/yolo/composer.json',
'cwd' => '/srv/web/yolo')
end
it do
is_expected.to contain_exec('composer_install_yolo').with('command' => '/usr/local/bin/composer install --no-interaction --quiet --no-progress --no-dev --prefer-dist',
'cwd' => '/srv/web/yolo')
end
end
context 'it should create a project with a specific php version' do
let(:title) { 'yolo' }
let(:params) { { target: '/srv/web/yolo', php_bin: '/usr/local/bin/php' } }
it { is_expected.to contain_composer__project('yolo').with('ensure' => 'present') }
it do
is_expected.to contain_exec('composer_install_yolo').with('command' => '/usr/local/bin/php /usr/local/bin/composer install --no-interaction --quiet --no-progress --no-dev --prefer-dist',
'cwd' => '/srv/web/yolo')
end
end
end
end
end
end