File tree Expand file tree Collapse file tree 7 files changed +63
-18
lines changed Expand file tree Collapse file tree 7 files changed +63
-18
lines changed Original file line number Diff line number Diff line change 1010
1111* [ ` python ` ] ( #python ) : Installs and manages python, python-dev and gunicorn.
1212* [ ` python::install::dev ` ] ( #python--install--dev ) : Installs python development packages
13+ * [ ` python::install::venv ` ] ( #python--install--venv ) : Installs python virtualenv packages
1314* [ ` python::pip::bootstrap ` ] ( #python--pip--bootstrap ) : allow to bootstrap pip when python is managed from other module
1415
1516#### Private Classes
@@ -294,6 +295,10 @@ Default value: `'/opt/python'`
294295
295296Installs python development packages
296297
298+ ### <a name =" python--install--venv " ></a >` python::install::venv `
299+
300+ Installs python virtualenv packages
301+
297302### <a name =" python--pip--bootstrap " ></a >` python::pip::bootstrap `
298303
299304allow to bootstrap pip when python is managed from other module
Original file line number Diff line number Diff line change 3232 }
3333
3434 if $python::manage_venv_package {
35- # #
36- # # CentOS has no extra package for venv
37- # #
38- unless $facts [' os' ][' family' ] == ' RedHat' {
39- package { 'python-venv' :
40- ensure => $python::venv ,
41- name => " ${python} -venv" ,
42- require => Package[' python' ],
43- }
44- }
35+ contain python::install::venv
4536 }
4637
4738 case $python::provider {
Original file line number Diff line number Diff line change 1+ # @summary Installs python virtualenv packages
2+ class python::install::venv {
3+ include python
4+
5+ # Main python package bundle venv on some operating systems
6+ unless $facts [' os' ][' family' ] in [' Archlinux' , ' FreeBSD' , ' RedHat' ] {
7+ package { 'python-venv' :
8+ ensure => $python::venv ,
9+ name => " ${python::install::python} -venv" ,
10+ require => Package[' python' ],
11+ }
12+ }
13+ }
Original file line number Diff line number Diff line change 4040 }
4141 $manage_venv_package = $facts [' os' ][' family' ] ? {
4242 ' Archlinux' => false ,
43+ ' FreeBSD' => false ,
44+ ' RedHat' => false ,
4345 default => true ,
4446 }
4547}
Original file line number Diff line number Diff line change 3636 Python::Venv::PipVersion $pip_version = ' latest' ,
3737) {
3838 include python
39+ include python::install::venv
3940
4041 if $ensure == ' present' {
4142 $python_version = $version ? {
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require 'spec_helper'
4+
5+ describe 'python::install::venv' do
6+ on_supported_os . each do |os , facts |
7+ context "on #{ os } " do
8+ let :facts do
9+ facts
10+ end
11+
12+ context 'with default settings' do
13+ if %w[ Archlinux FreeBSD RedHat ] . include? ( facts [ :os ] [ 'family' ] )
14+ it { is_expected . not_to contain_package ( 'python-venv' ) }
15+ else
16+ it { is_expected . to contain_package ( 'python-venv' ) . with ( ensure : 'absent' ) }
17+ end
18+ end
19+
20+ context 'when ensuring venv is setup' do
21+ let ( :pre_condition ) do
22+ <<~PP
23+ class { 'python':
24+ venv => present,
25+ }
26+ PP
27+ end
28+
29+ if %w[ Archlinux FreeBSD RedHat ] . include? ( facts [ :os ] [ 'family' ] )
30+ it { is_expected . not_to contain_package ( 'python-venv' ) }
31+ else
32+ it { is_expected . to contain_package ( 'python-venv' ) . with ( ensure : 'present' ) }
33+ end
34+ end
35+ end
36+ end
37+ end
Original file line number Diff line number Diff line change 2323 it { is_expected . to contain_package ( 'pip' ) }
2424 end
2525
26- if %w[ Archlinux RedHat ] . include? ( facts [ :os ] [ 'family' ] )
27- it { is_expected . not_to contain_package ( 'python- venv' ) }
26+ if %w[ Archlinux FreeBSD RedHat ] . include? ( facts [ :os ] [ 'family' ] )
27+ it { is_expected . not_to contain_class ( 'python::install:: venv' ) }
2828 else
29- it { is_expected . to contain_package ( 'python- venv' ) }
29+ it { is_expected . to contain_class ( 'python::install:: venv' ) }
3030 end
3131 end
3232
4444 it { is_expected . not_to contain_package ( 'python' ) }
4545 it { is_expected . not_to contain_package ( 'python-dev' ) }
4646 it { is_expected . not_to contain_package ( 'pip' ) }
47- it { is_expected . not_to contain_package ( 'python- venv' ) }
47+ it { is_expected . not_to contain_class ( 'python::install:: venv' ) }
4848 end
4949
5050 context 'with packages present' do
5151 let :params do
5252 {
5353 manage_pip_package : true ,
54- manage_venv_package : true ,
5554 pip : 'present' ,
56- venv : 'present'
5755 }
5856 end
5957
6058 it { is_expected . to compile . with_all_deps }
6159 it { is_expected . to contain_package ( 'pip' ) . with ( ensure : 'present' ) }
62-
63- it { is_expected . to contain_package ( 'python-venv' ) . with ( ensure : 'present' ) } unless facts [ :os ] [ 'family' ] == 'RedHat'
6460 end
6561
6662 case facts [ :os ] [ 'family' ]
You can’t perform that action at this time.
0 commit comments