Migrate acceptance tests to rspec (#1513)

Move existing tests executed with the help of bats to use rspec directly
combined with tags to filter them out from being executed by default.

This allows for more complex assertions as well as easier debug as the
code supports use of setting 'VAGRANT_SPEC_SKIP_CLEANUP' to prevent the
tests from removing the temporary directory created for home and work
directories.

Extend a number of classes from vagrant-spec to override default
behaviour to allow passing of additional environment variables for
packaging tests, as well as supporting the skip cleanup. Given the use
of after to perform the cleanup, need to vendor the vagrant-spec
acceptance context in order to modify it easily.
This commit is contained in:
Darragh Bailey
2022-06-13 23:43:06 +01:00
committed by GitHub
parent 66e0fa7dda
commit 41bd20269e
31 changed files with 546 additions and 350 deletions

View File

@@ -0,0 +1,54 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'provider settings', acceptance: true do
include_context 'libvirt_acceptance'
after do
assert_execute('vagrant', 'destroy', '--force')
end
context 'with defaults' do
before do
environment.skeleton('default_settings')
end
it 'should succeed' do
status('Test: machine is created successfully')
result = environment.execute('vagrant', 'up')
expect(result).to exit_with(0)
status('Test: CPU matches default')
expect(result.stdout).to match(/Cpus:\s+1$/)
status('Test: memory matches default')
expect(result.stdout).to match(/Memory:\s+512M/)
status('Test: default prefix is used')
expect(result.stdout).to match(/Name:\s+work_default$/)
end
end
context 'with modified config' do
before do
environment.skeleton('adjusted_settings')
end
it 'should succeed' do
status('Test: machine is created successfully')
result = environment.execute('vagrant', 'up')
expect(result).to exit_with(0)
status('Test: CPUs are changed')
expect(result.stdout).to match(/Cpus:\s+2$/)
status('Test: memory is changed')
expect(result.stdout).to match(/Memory:\s+1000M$/)
status('Test: default prefix is changed')
expect(result.stdout).to match(/Name:\s+changed_default_prefixdefault$/)
expect(result.stdout).to match(/\(vda\).*changed_default_prefixdefault\.img/)
end
end
end