From 6e9e33d48e41c3b30b76176c05e057c3a8d3b236 Mon Sep 17 00:00:00 2001 From: Matt Chu Date: Tue, 28 Nov 2017 07:00:06 -0800 Subject: [PATCH] Prepping for 0.7.x, with many changes to support latest versions; see CHANGELOG.md --- .kitchen.yml | 28 ++++----- CHANGELOG.md | 55 +++++++++++++++- Gemfile | 8 ++- README.md | 23 ++++--- Vagrantfile | 33 +++++----- attributes/.gitkeep | 0 attributes/default.rb | 54 +++++++++++----- chefignore | 3 + docker/.gitignore | 1 + metadata.rb | 36 +++++------ providers/nbservice.rb | 16 ++--- providers/package.rb | 6 +- recipes/default.rb | 62 +++++++++++-------- recipes/notebook_server.rb | 10 +-- recipes/shell_conveniences.rb | 4 +- spec/default_spec.rb | 20 +++--- .../default/serverspec/default_spec.rb | 4 +- 17 files changed, 228 insertions(+), 135 deletions(-) delete mode 100644 attributes/.gitkeep create mode 100644 docker/.gitignore diff --git a/.kitchen.yml b/.kitchen.yml index fb4964d..02acbb2 100644 --- a/.kitchen.yml +++ b/.kitchen.yml @@ -3,6 +3,8 @@ driver: # you can restore this if you want, but it'll be slooooooow #name: vagrant name: docker + # https://github.com/test-kitchen/kitchen-docker/issues/207 + use_sudo: false driver_config: binary: /usr/local/bin/docker # install latest if not present @@ -14,21 +16,12 @@ provisioner: name: chef_solo platforms: - # ubuntu: 2 LTS, and the latest - - name: ubuntu-12.04 - name: ubuntu-14.04 - - name: ubuntu-15.04 - # debian: stable, oldstable - # TODO 7.9 and 8.2 were recently released - - name: debian-7.8 - - name: debian-8.1 - # centos - - name: centos-5.11 - # TODO 6.7 is the latest - - name: centos-6.6 - - name: centos-7.1.1503 - # redhat: 5.9, 6.6, 7.1 - # TODO what's the platform name in docker? + - name: ubuntu-16.04 + - name: debian-8.9 + - name: debian-9.2 + - name: centos-6.9 + - name: centos-7.4 suites: - name: default @@ -38,3 +31,10 @@ suites: anaconda: flavor: 'x86_64' accept_license: 'yes' + - name: nbservice + run_list: + - recipe[anaconda::default] + attributes: + anaconda: + flavor: 'x86_64' + accept_license: 'yes' diff --git a/CHANGELOG.md b/CHANGELOG.md index 8eed1d8..88a9f28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,59 @@ # CHANGELOG -## 0.6.0 +## 0.7.0 + +Many, many changes and fixes to support both the latest Chef version and the +latest Anaconda versions. + +Adds support for Anaconda 4.4.0 and 5.0.1! 5.0.1 is now the default. + +### Cookbook changes: + +- Adds a `system_path` attribute, for adding Anaconda's bin path to `PATH`. + +### Chef changes: + +- Dot notation attributes (eg `node.attr1.prop1`) have been deprecated and is + now an error; converted everything to hash/bracket notation (eg + `node['attr1']['prop1']`). +- Cleanups to metadata.rb. + +### Updated tested list of OSes + +The list of tested OSes has been refined to the latest and penultimate (major) +stable versions. Note that just because an OS is not on the tested list does +not mean it won't work, it just means it is not part of the official test +suite. My experience has been it generally will. + +- Ubuntu: + - Removed tests for: 12.04, 15.04 + - Added tests for: 16.04 +- Debian: + - Removed tests for: 7.8, 8.1 + - Added tests for: 8.9, 9.1 +- CentOS: + - Removed tests for: 5.11, 6.6, 7.1 + - Added tests for: 6.9, 7.4 +- Red Hat: completed removed from test suite, in favor of CentOS only + +### Development, fixes: + +- Gemfile now annotated with rvm metadata for ruby version and gemset. +- Fixed vagrant-trigger to correctly populate /var/chef/cache on provision. +- Fixed bad call to `Chef::Log` with `fatal`. + +## 0.6.2 + +First official 0.6.x release; see 0.6.0 changelog for details. + +Note that this reverts the release process back to using Chef 11.x/ChefDK 0.3.6 +because of . + +## 0.6.1 (broken, untagged release thanks to ChefDK) + +Do not use. + +## 0.6.0 (unreleased thanks to ChefDK) **This is a backwards-INCOMPATIBLE release** diff --git a/Gemfile b/Gemfile index 34bf0b0..6d56a3d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,15 +1,17 @@ +# for rvm: https://rvm.io/workflow/projects +#ruby=2.4.2 +#ruby-gemset=chef-continuum-anaconda + source 'https://rubygems.org' gem 'berkshelf' gem 'chefspec' gem 'test-kitchen' -# removed in favor of kitchen-docker -#gem 'kitchen-vagrant' gem 'kitchen-docker' gem 'foodcritic' gem 'chef-rewind' -gem 'nokogiri', '~> 1.5.0' +gem 'nokogiri' diff --git a/README.md b/README.md index 52d08d5..3a01c36 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Chef cookbook for installing [Continuum Analytic](http://continuum.io/)'s distribution for large-scale data processing, predictive analytics, and scientific computing". Specifically: -- Anaconda 2.2 or 2.3 +- Anaconda 2.2, 2.3, 4.4.0, 5.0.1 (the default) - python2 or python3 - x86 or x86_64 - Miniconda @@ -31,6 +31,8 @@ uses: - RSpec/[Chefspec](https://github.com/sethvargo/chefspec) for rapid testing; 3.3.2 +**Note that the release process uses Chef 11 because of ** + In addition: - [Vagrant](https://www.vagrantup.com) to provide an out-of-the-box working @@ -65,13 +67,13 @@ installer itself. # means conda is already in PATH via /etc/profile.d $> vagrant ssh $vagrant> conda --version - conda 3.14.1 + conda 4.3.30 # or you add it to PATH manually $> vagrant ssh - $vagrant> export PATH=/opt/anaconda/2.3.0/bin:${PATH} + $vagrant> export PATH=/opt/anaconda/5.0.1/bin:${PATH} $vagrant> conda --version - conda 3.14.1 + conda 4.3.30 ``` It includes a Jupyter (IPython) notebook server accessible at @@ -101,6 +103,8 @@ The following are user-configurable attributes. Check - `version`: the Anaconda version to install. Valid values are: - 2.2.0 - 2.3.0 + - 4.4.0 + - 5.0.1 - latest (for miniconda only) - `python`: which version of Python to install for. Valid values are: - python2 @@ -118,6 +122,7 @@ The following are user-configurable attributes. Check no defaults)**; any other value will reject the license. - `owner`: the user who owns the install - `group`: the group who owns the install + - `system_path`: adds the bin path to the system's profile.d directory ### `recipe[anaconda::shell_conveniences]` @@ -183,7 +188,13 @@ your own run service template: end ``` -## Tests +## Developer setup and config + +install chef-dk; i installed using homebrew: https://github.com/chef/chef-dk + +eval "$(chef shell-init bash)" && script/cibuild + +### Tests To run the full test suite: @@ -233,8 +244,6 @@ Standard stuff: ## TODO -- add a pre-provision for kitchen tests to avoid redownloading the installer on - every test (really slows down the tests) - https://github.com/poise/python is now deprecated, in favor of https://github.com/poise/poise-python; see if the python workaround is still necessary diff --git a/Vagrantfile b/Vagrantfile index 7eb7f49..4275d07 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -23,24 +23,21 @@ Vagrant.configure('2') do |config| # provisioning - # dev optimization: anaconda's big, so put it in the cache for development if - # it's already been downloaded - [ - 'Anaconda-2.2.0-Linux-x86.sh', - 'Anaconda-2.2.0-Linux-x86_64.sh', - 'Anaconda3-2.2.0-Linux-x86.sh', - 'Anaconda3-2.2.0-Linux-x86_64.sh', - 'Anaconda-2.3.0-Linux-x86.sh', - 'Anaconda-2.3.0-Linux-x86_64.sh', - 'Anaconda3-2.3.0-Linux-x86.sh', - 'Anaconda3-2.3.0-Linux-x86_64.sh', - ].each do |f| - if File.exists?(f) - config.vm.provision :shell do |shell| - shell.inline = 'if [[ ! -f $1 ]]; then cp $1 $2; fi' - shell.args = [ "/vagrant/#{f}", '/var/chef/cache' ] - end - end + # dev optimization: anaconda installers are big, so put it in the guest's + # chef cache if it's available on the host + config.trigger.before :provision, :stdout => true do + run_remote <<-SCRIPT + VAGRANT_MOUNT=/vagrant/docker/container/installers + + for f in $(ls ${VAGRANT_MOUNT}); do + echo "checking for ${f} in cache" + if [[ ! -f /var/chef/cache/${f} ]]; then + cp -v ${VAGRANT_MOUNT}/${f} /var/chef/cache + else + echo "${f} already in cache" + fi + done + SCRIPT end config.vm.provision :chef_solo do |chef| diff --git a/attributes/.gitkeep b/attributes/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/attributes/default.rb b/attributes/default.rb index 66e321c..4f320ef 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -1,13 +1,15 @@ # for miniconda this must be 'latest' -default.anaconda.version = '2.3.0' +default['anaconda']['version'] = '5.0.1' # the version of python: either 'python2' or 'python3' -default.anaconda.python = 'python2' +default['anaconda']['python'] = 'python2' # the architecture: nil to autodetect, or either 'x86' or 'x86_64' -default.anaconda.flavor = nil +default['anaconda']['flavor'] = nil # either 'anaconda' or 'miniconda' -default.anaconda.install_type = 'anaconda' +default['anaconda']['install_type'] = 'anaconda' +# add system-wide path to profile.d? +default['anaconda']['system_path'] = false -default.anaconda.installer_info = { +default['anaconda']['installer_info'] = { 'anaconda' => { '2.2.0' => { 'python2' => { @@ -33,6 +35,30 @@ 'x86_64' => '3be5410b2d9db45882c7de07c554cf4f1034becc274ec9074b23fd37a5c87a6f', }, }, + '4.4.0' => { + 'python2' => { + 'uri_prefix' => 'https://repo.continuum.io/archive', + 'x86' => nil, + 'x86_64' => nil, + }, + 'python3' => { + 'uri_prefix' => 'https://3230d63b5fc54e62148e-c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com', + 'x86' => '4cc10d65c303191004ada2b6d75562c8ed84e42bf9871af06440dd956077b555', + 'x86_64' => '3be5410b2d9db45882c7de07c554cf4f1034becc274ec9074b23fd37a5c87a6f', + }, + }, + '5.0.1' => { + 'python2' => { + 'uri_prefix' => 'https://repo.continuum.io/archive', + 'x86' => nil, + 'x86_64' => nil, + }, + 'python3' => { + 'uri_prefix' => 'https://repo.continuum.io/archive', + 'x86' => nil, + 'x86_64' => nil, + }, + }, }, 'miniconda' => { 'latest' => { @@ -51,20 +77,20 @@ } # specific versions are installed _under_ this directory -default.anaconda.install_root = '/opt/anaconda' -default.anaconda.accept_license = 'no' -default.anaconda.package_logfile = nil +default['anaconda']['install_root'] = '/opt/anaconda' +default['anaconda']['accept_license'] = 'no' +default['anaconda']['package_logfile'] = nil -default.anaconda.owner = 'anaconda' -default.anaconda.group = 'anaconda' -default.anaconda.home = "/home/#{node.anaconda.owner}" +default['anaconda']['owner'] = 'anaconda' +default['anaconda']['group'] = 'anaconda' +default['anaconda']['home'] = "/home/#{node['anaconda']['owner']}" -default.anaconda.notebook = { +default['anaconda']['notebook'] = { # by default, listens on all interfaces; there will be a warning since # security is disabled 'ip' => '*', 'port' => 8888, - 'owner' => node.anaconda.owner, - 'group' => node.anaconda.group, + 'owner' => node['anaconda']['owner'], + 'group' => node['anaconda']['group'], 'install_dir' => '/opt/ipython/server', } diff --git a/chefignore b/chefignore index a6de142..9f1a900 100644 --- a/chefignore +++ b/chefignore @@ -94,3 +94,6 @@ Vagrantfile # Travis # ########## .travis.yml + +# local anaconda installers should not be part of the cookbook +Anaconda*-*-Linux-*.sh diff --git a/docker/.gitignore b/docker/.gitignore new file mode 100644 index 0000000..5d3a370 --- /dev/null +++ b/docker/.gitignore @@ -0,0 +1 @@ +container diff --git a/metadata.rb b/metadata.rb index 0b263ae..65ab02c 100644 --- a/metadata.rb +++ b/metadata.rb @@ -1,26 +1,24 @@ -name 'anaconda' -maintainer 'Matt Chu' -maintainer_email 'matt.chu@gmail.com' -license 'MIT' -description 'Installs/Configures anaconda' -long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version '0.6.0' +name 'anaconda' +maintainer 'Matt Chu' +maintainer_email 'matt.chu@gmail.com' +license 'MIT' +description 'Installs/Configures anaconda' +long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) +version '0.7.0' -supports 'ubuntu', '= 12.04' -supports 'ubuntu', '= 14.04' -supports 'ubuntu', '= 15.04' +source_url 'https://github.com/thmttch/chef-continuum-anaconda' +issues_url 'https://github.com/thmttch/chef-continuum-anaconda/issues' + +chef_version '>= 13' -supports 'debian', '= 7.8' -supports 'debian', '= 8.1' +supports 'ubuntu', '= 14.04' +supports 'ubuntu', '= 16.04' -supports 'centos', '= 5.11' -supports 'centos', '= 6.6' -supports 'centos', '= 7.1.1503' +supports 'debian', '= 8.9' +supports 'debian', '= 9.2' -# TODO -#supports 'redhat', '= 5.9' -#supports 'redhat', '= 6.6' -#supports 'redhat', '= 7.1' +supports 'centos', '= 6.9' +supports 'centos', '= 7.4' depends 'apt' depends 'runit' diff --git a/providers/nbservice.rb b/providers/nbservice.rb index d4a02ff..a516d6b 100644 --- a/providers/nbservice.rb +++ b/providers/nbservice.rb @@ -3,7 +3,7 @@ def whyrun_supported? end def cmd_ipython - "#{node.anaconda.install_root}/#{node.anaconda.version}/bin/ipython" + "#{node['anaconda']['install_root']}/#{node['anaconda']['version']}/bin/ipython" end def is_installed?(package_name) @@ -11,8 +11,8 @@ def is_installed?(package_name) end def log_opts(node) - if node.anaconda.install_log - "2>&1 >#{node.anaconda.install_log}" + if node['anaconda']['install_log'] + "2>&1 >#{node['anaconda']['install_log']}" else '' end @@ -21,11 +21,11 @@ def log_opts(node) action :create do r = new_resource # fill in any missing attributes with the defaults - ip = r.ip || node.anaconda.notebook.ip - port = r.port || node.anaconda.notebook.port - owner = r.owner || node.anaconda.notebook.owner - group = r.group || node.anaconda.notebook.group - install_dir = r.install_dir || node.anaconda.notebook.install_dir + ip = r.ip || node['anaconda']['notebook']['ip'] + port = r.port || node['anaconda']['notebook']['port'] + owner = r.owner || node['anaconda']['notebook']['owner'] + group = r.group || node['anaconda']['notebook']['group'] + install_dir = r.install_dir || node['anaconda']['notebook']['install_dir'] directory install_dir do owner owner diff --git a/providers/package.rb b/providers/package.rb index d95b495..7b2fd79 100644 --- a/providers/package.rb +++ b/providers/package.rb @@ -3,7 +3,7 @@ def whyrun_supported? end def cmd_conda - "#{node.anaconda.install_root}/#{node.anaconda.version}/bin/conda" + "#{node['anaconda']['install_root']}/#{node['anaconda']['version']}/bin/conda" end def is_installed?(package_name) @@ -11,8 +11,8 @@ def is_installed?(package_name) end def log_opts(node) - if node.anaconda.package_logfile - "2>&1 >#{node.anaconda.package_logfile}" + if node['anaconda']['package_logfile'] + "2>&1 >#{node['anaconda']['package_logfile']}" else '' end diff --git a/recipes/default.rb b/recipes/default.rb index 5b2adb7..f3c09b5 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -15,45 +15,45 @@ include_recipe 'tar::default' # make sure the desired user and group exists -group node.anaconda.group -user node.anaconda.owner do - gid node.anaconda.group +group node['anaconda']['group'] +user node['anaconda']['owner'] do + gid node['anaconda']['group'] end -version = node.anaconda.version -python_version = node.anaconda.python -flavor = node.anaconda.flavor || ( - case node.kernel.machine +version = node['anaconda']['version'] +python_version = node['anaconda']['python'] +flavor = node['anaconda']['flavor'] || ( + case node['kernel']['machine'] when 'i386', 'i686' 'x86' when 'x86_64' 'x86_64' else - Chef::Log.fatal!("Unrecognized node.kernel.machine=#{node.kernel.machine}; please explicitly node.anaconda.flavor", 1) + Chef::Log.fatal("Unrecognized node['kernel']['machine']=#{node['kernel']['machine']}; please explicitly node['anaconda']['flavor']") end ) -Chef::Log.debug "Autodetected node.kernel.machine=#{node.kernel.machine}, implying flavor=#{flavor}" -install_type = node.anaconda.install_type -installer_info = node.anaconda.installer_info[install_type][version][python_version] +Chef::Log.debug "Autodetected node['kernel']['machine']=#{node['kernel']['machine']}, implying flavor=#{flavor}" +install_type = node['anaconda']['install_type'] +installer_info = node['anaconda']['installer_info'][install_type][version][python_version] # e.g. -# Anaconda-2.3.0-Linux-x86 -# Anaconda3-2.3.0-Linux-x86 +# Anaconda-5.0.1-Linux-x86 +# Anaconda3-5.0.1-Linux-x86 # Miniconda-latest-Linux-x86 # Miniconda3-latest-Linux-x86 installer_basename = if install_type == 'anaconda' - "Anaconda#{python_version == 'python3' ? '3' : ''}-#{version}-Linux-#{flavor}.sh" + "Anaconda#{python_version == 'python3' ? '3' : (Gem::Version.new(version) >= Gem::Version.new('4.0.0') ? '2' : '')}-#{version}-Linux-#{flavor}.sh" else Chef::Log.debug "miniconda installs ONLY have version = latest; setting it now" - node.anaconda.version = 'latest' + node.default['anaconda']['version'] = 'latest' version = 'latest' - "Miniconda#{python_version == 'python3' ? '3' : ''}-#{version}-Linux-#{flavor}.sh" + "Miniconda#{python_version == 'python3' ? '3' : '2'}-#{version}-Linux-#{flavor}.sh" end Chef::Log.debug "installer_basename = #{installer_basename}" # where the installer will install to -anaconda_install_dir = "#{node.anaconda.install_root}/#{version}" +anaconda_install_dir = "#{node['anaconda']['install_root']}/#{version}" # where the installer is downloaded to locally installer_path = "#{Chef::Config[:file_cache_path]}/#{installer_basename}" # where to download the installer from @@ -66,8 +66,8 @@ remote_file installer_path do source installer_source checksum installer_checksum - user node.anaconda.owner - group node.anaconda.group + user node['anaconda']['owner'] + group node['anaconda']['group'] mode 0755 action :create_if_missing notifies :run, 'bash[run anaconda installer]', :delayed @@ -75,27 +75,35 @@ template installer_config_path do source "#{installer_config}.erb" - user node.anaconda.owner - group node.anaconda.group + user node['anaconda']['owner'] + group node['anaconda']['group'] variables({ :version => version, :flavor => flavor, :anaconda_install_dir => anaconda_install_dir, - :accept_license => node.anaconda.accept_license, + :accept_license => node['anaconda']['accept_license'], :add_to_shell_path => 'no', }) end -directory node.anaconda.install_root do - owner node.anaconda.owner - group node.anaconda.group +directory node['anaconda']['install_root'] do + owner node['anaconda']['owner'] + group node['anaconda']['group'] recursive true end bash 'run anaconda installer' do code "cat #{installer_config_path} | bash #{installer_path}" - user node.anaconda.owner - group node.anaconda.group + user node['anaconda']['owner'] + group node['anaconda']['group'] action :run not_if { File.directory?(anaconda_install_dir) } end + +# Add system-wide path to profile.d +file '/etc/profile.d/anaconda.sh' do + content "export PATH=$PATH:#{anaconda_install_dir}/bin" + mode '0755' + owner 'root' + only_if { node['anaconda']['system_path'] } +end diff --git a/recipes/notebook_server.rb b/recipes/notebook_server.rb index 39c42be..42c6cd7 100644 --- a/recipes/notebook_server.rb +++ b/recipes/notebook_server.rb @@ -10,13 +10,13 @@ include_recipe 'runit::default' anaconda_nbservice 'notebook-server' do - ip node.anaconda.notebook.ip - port node.anaconda.notebook.port + ip node['anaconda']['notebook']['ip'] + port node['anaconda']['notebook']['port'] - owner node.anaconda.notebook.owner - group node.anaconda.notebook.group + owner node['anaconda']['notebook']['owner'] + group node['anaconda']['notebook']['group'] - install_dir node.anaconda.notebook.install_dir + install_dir node['anaconda']['notebook']['install_dir'] service_action [ :enable, :start ] end diff --git a/recipes/shell_conveniences.rb b/recipes/shell_conveniences.rb index e013143..dc98641 100644 --- a/recipes/shell_conveniences.rb +++ b/recipes/shell_conveniences.rb @@ -10,7 +10,7 @@ template '/etc/profile.d/anaconda-env.sh' do source 'source-me.sh.erb' variables({ - :install_root => node.anaconda.install_root, - :version => node.anaconda.version, + :install_root => node['anaconda']['install_root'], + :version => node['anaconda']['version'], }) end diff --git a/spec/default_spec.rb b/spec/default_spec.rb index 70b77d8..5f69950 100644 --- a/spec/default_spec.rb +++ b/spec/default_spec.rb @@ -8,14 +8,12 @@ let(:chef_run) do ChefSpec::SoloRunner.new( platform: platform, - # TODO get this working; that is, figure out how to stub this properly - #version: platform_version, - #step_into: [ 'anaconda_package' ]) do |node| version: platform_version ) do |node| - # explicitly set the flavor for tests + # explicitly set the flavor and python version for tests # TODO test autodetection of x86 versus x86_64 - node.set['anaconda']['flavor'] = 'x86_64' + node.normal['anaconda']['flavor'] = 'x86_64' + node.normal['anaconda']['python_version'] = 'python2' end end @@ -75,10 +73,11 @@ expect(chef_run).to create_template('/etc/profile.d/anaconda-env.sh') end + # TODO add a version of this test for python3 it 'caches the installer template' do chef_run.converge(described_recipe) - installer = "Anaconda-#{chef_run.node.anaconda.version}-Linux-#{chef_run.node.anaconda.flavor}.sh" + installer = "Anaconda2-#{chef_run.node['anaconda']['version']}-Linux-#{chef_run.node['anaconda']['flavor']}.sh" installer_path = "#{Chef::Config[:file_cache_path]}/#{installer}" expect(chef_run).to create_remote_file_if_missing(installer_path) @@ -100,12 +99,9 @@ describe 'anaconda::default' do # https://github.com/customink/fauxhai/tree/master/lib/fauxhai/platforms platforms = { - 'ubuntu' => [ '12.04', '14.04', '15.04' ], - # TODO 7.9 and 8.2 were recently released - 'debian' => [ '7.8', '8.1' ], - # TODO 6.7 is the latest - 'centos' => [ '5.11', '6.6', '7.1.1503' ], - 'redhat' => [ '5.9', '6.6', '7.1' ], + 'ubuntu' => [ '14.04', '16.04' ], + 'debian' => [ '8.9', '9.1' ], + 'centos' => [ '6.9', '7.4.1708' ], } platforms.each do |platform, versions| diff --git a/test/integration/default/serverspec/default_spec.rb b/test/integration/default/serverspec/default_spec.rb index 0df6772..0104545 100644 --- a/test/integration/default/serverspec/default_spec.rb +++ b/test/integration/default/serverspec/default_spec.rb @@ -2,7 +2,7 @@ set :backend, :exec -describe command('/opt/anaconda/2.3.0/bin/conda --version') do - its(:stderr) { should match /conda 3.14.1/ } +describe command('/opt/anaconda/5.0.1/bin/conda --version') do + its(:stderr) { should match /conda 4.3.30/ } its(:exit_status) { should eq 0 } end