diff --git a/REFERENCE.md b/REFERENCE.md index 2aac08b3..7cc88c03 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -1163,7 +1163,7 @@ Alias of `Enum['debug', 'info', 'warning', 'error', 'critical']` Match all valid package ensures for python -Alias of `Enum['absent', 'present', 'latest']` +Alias of `Enum['absent', 'present', 'installed', 'latest']` ### `Python::Provider` diff --git a/manifests/requirements.pp b/manifests/requirements.pp index 0b191ea0..f2743509 100644 --- a/manifests/requirements.pp +++ b/manifests/requirements.pp @@ -89,6 +89,8 @@ content => '# Puppet will install and/or update pip packages listed here', } + $local_subscribe = File[$requirements] + } elsif File[$requirements] and $manage_requirements == true { $local_subscribe = File[$requirements] } else { $local_subscribe = undef diff --git a/spec/acceptance/declared_requirements_install_spec.rb b/spec/acceptance/declared_requirements_install_spec.rb new file mode 100644 index 00000000..bc9c07d4 --- /dev/null +++ b/spec/acceptance/declared_requirements_install_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'spec_helper_acceptance' + +describe 'requirements' do + it 'checks declared requirements file is installed to venv' do + pp = <<-EOS + file { '/tmp/requirements.txt': + ensure => 'present', + content => 'requests', + } + + python::pyvenv { '/tmp/pyvenv': + ensure => 'present', + } + + python::requirements { '/tmp/requirements.txt': + virtualenv => '/tmp/pyvenv' + } + EOS + + apply_manifest(pp, catch_failures: true) + + expect(shell('/tmp/pyvenv/bin/pip3 list --no-index | grep requests').stdout).to match(%r{requests +\d+.\d+.\d+}) + end +end diff --git a/types/package/ensure.pp b/types/package/ensure.pp index 34189e4b..9fa54968 100644 --- a/types/package/ensure.pp +++ b/types/package/ensure.pp @@ -1,3 +1,3 @@ # @summary Match all valid package ensures for python # -type Python::Package::Ensure = Enum['absent', 'present', 'latest'] +type Python::Package::Ensure = Enum['absent', 'present', 'installed', 'latest']