diff --git a/spec/acceptance/sanity_check_spec.rb b/spec/acceptance/sanity_check_spec.rb deleted file mode 100644 index c3c4d97..0000000 --- a/spec/acceptance/sanity_check_spec.rb +++ /dev/null @@ -1,111 +0,0 @@ -require 'acceptance_helper' - -describe 'Sanity check' do - after(:all) { destroy_container } - - context 'running `vagrant up` from scratch' do - before(:all) do - destroy_container - vagrant_up - end - - it 'creates a container' do - containers = `sudo lxc-ls`.chomp.split(/\s+/).uniq - expect(containers).to include vagrant_container_name - end - - it 'starts the newly created container' do - status = `sudo lxc-info -n #{vagrant_container_name}` - expect(status).to include 'RUNNING' - end - - it "is able to be SSH'ed" do - expect(vagrant_ssh('hostname')).to eq 'lxc-test-box' - end - - it 'mounts shared folders with the right permissions' do - vagrant_ssh 'mkdir -p /vagrant/tmp && echo -n "Shared" > /vagrant/tmp/shared' - shared_file_contents = File.read('/vagrant/spec/tmp/shared') - expect(shared_file_contents).to eq 'Shared' - end - - it 'provisions the container based on Vagrantfile configs' do - provisioned_file_contents = File.read('/vagrant/spec/tmp/provisioning') - expect(provisioned_file_contents).to eq 'Provisioned' - end - - it 'forwards configured ports' do - output = `curl -s localhost:8080`.strip.chomp - expect(output).to include 'It works!' - end - end - - context '`vagrant halt` on a running container' do - before(:all) do - destroy_container - vagrant_up - vagrant_ssh 'touch /tmp/{some,files}' - vagrant_halt - end - - it 'shuts down the container' do - status = `sudo lxc-info -n #{vagrant_container_name}` - expect(status).to include 'STOPPED' - end - - it 'clears forwarded ports' do - `curl -s localhost:8080 --connect-timeout 2` - expect($?.exitstatus).to_not eq 0 - end - - it 'kills redir processes' do - processes = `pgrep redir` - expect($?.exitstatus).to_not eq 0 - end - - xit 'removes files under `/tmp`' do - container_tmp_files = `sudo ls -l "/var/lib/lxc/#{vagrant_container_name}/rootfs/tmp"`.split("\n") - puts container_tmp_files.join("\n") - expect(container_tmp_files).to be_empty - end - end - - context '`vagrant destroy`' do - before(:all) do - destroy_container - vagrant_up - @container_name = vagrant_container_name - vagrant_destroy - end - - it 'destroys the underlying container' do - containers = `sudo lxc-ls`.chomp.split(/\s+/).uniq - expect(containers).to_not include @container_name - end - end - - pending 'box packaging' do - before(:all) do - destroy_container - vagrant_box_remove('new-box') - vagrant_up - vagrant_package - @box_name = ENV['BOX_NAME'] - # This will make - ENV["BOX_NAME"] = 'new-box' - ENV['BOX_URL'] = '/vagrant/spec/tmp/package.box' - end - - after(:all) do - vagrant_box_remove('new-box') - ENV["BOX_NAME"] = @box_name - ENV['BOX_URL'] = nil - end - - it 'creates a package that can be successfully brought up on a later `vagrant up`' do - vagrant_up - # Just to make sure we packaged it properly - expect(vagrant_ssh('cat /home/vagrant/original-box')).to eq @box_name - end - end -end diff --git a/spec/acceptance/support/acceptance_example_group.rb b/spec/acceptance/support/acceptance_example_group.rb deleted file mode 100644 index 7042117..0000000 --- a/spec/acceptance/support/acceptance_example_group.rb +++ /dev/null @@ -1,76 +0,0 @@ -module AcceptanceExampleGroup - def self.included(base) - base.metadata[:type] = :acceptance - end - - ID_FILE = "/vagrant/spec/.vagrant/machines/default/lxc/id" - def vagrant_container_name - File.read(ID_FILE).strip.chomp if File.exists?(ID_FILE) - end - - def destroy_container - if name = vagrant_container_name - `sudo lxc-shutdown -n #{name} 2>/dev/null` - `sudo lxc-wait -n #{name} --state STOPPED 2>/dev/null` - `sudo lxc-destroy -n #{name} 2>/dev/null` - `rm -rf /vagrant/spec/.vagrant/` - end - `sudo killall -9 redir 2>/dev/null` - end - - def with_vagrant_environment - opts = { cwd: '/vagrant/spec', ui_class: TestUI } - env = Vagrant::Environment.new(opts) - yield env - env.unload - end - - def vagrant_up - with_vagrant_environment do |env| - env.cli('up', '--provider', 'lxc') - end - end - - def vagrant_halt - with_vagrant_environment do |env| - env.cli('halt') - end - end - - def vagrant_destroy - with_vagrant_environment do |env| - env.cli('destroy', '-f') - end - end - - def vagrant_ssh(cmd) - output = nil - with_vagrant_environment do |env| - result = env.cli('ssh', '-c', cmd) - if result.to_i != 0 - raise "SSH command failed: '#{cmd}'\n#{env.ui.messages.inspect}" - end - output = env.ui.messages[:info].join("\n").chomp - end - output - end - - def vagrant_package - with_vagrant_environment do |env| - pkg = '/vagrant/spec/tmp/package.box' - `rm -f #{pkg}` - env.cli('package', '--output', pkg) - end - end - - def vagrant_box_remove(name) - with_vagrant_environment do |env| - env.cli('box', 'list') - output = env.ui.messages[:info].join("\n").chomp - - if output.include?(name) - env.cli('box', 'remove', name) - end - end - end -end diff --git a/spec/acceptance/support/machine_ext.rb b/spec/acceptance/support/machine_ext.rb deleted file mode 100644 index 9b28a61..0000000 --- a/spec/acceptance/support/machine_ext.rb +++ /dev/null @@ -1,12 +0,0 @@ -# Monkey patch vagrant in order to reuse the UI test object that is set on -# our Vagrant::Environments -# -require 'vagrant/machine' -Vagrant::Machine.class_eval do - alias :old_action :action - - define_method :action do |action_name, extra_env = nil| - extra_env = { ui: @env.ui }.merge(extra_env || {}) - old_action action_name, extra_env - end -end diff --git a/spec/acceptance/support/test_ui.rb b/spec/acceptance/support/test_ui.rb deleted file mode 100644 index 9fc1ff6..0000000 --- a/spec/acceptance/support/test_ui.rb +++ /dev/null @@ -1,22 +0,0 @@ -class TestUI < Vagrant::UI::Interface - attr_reader :messages - - METHODS = [:clear_line, :report_progress, :warn, :error, :info, :success] - - def initialize - super - @messages = METHODS.each_with_object({}) { |m, h| h[m] = [] } - end - - def ask(*args) - super - # Automated tests should not depend on user input, obviously. - raise Errors::UIExpectsTTY - end - - METHODS.each do |method| - define_method(method) do |*args|#message, *opts| - @messages[method].push args[0] - end - end -end diff --git a/spec/acceptance_helper.rb b/spec/acceptance_helper.rb deleted file mode 100644 index ff45967..0000000 --- a/spec/acceptance_helper.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'spec_helper' - -unless ENV['USER'] == 'vagrant' - puts 'Acceptance specs are supposed to run from one of the vagrant-lxc dev machines' - exit 1 -end - -if defined? SimpleCov - SimpleCov.command_name 'acceptance' -end - -require 'vagrant' -require 'vagrant-lxc' - -Dir[File.dirname(__FILE__) + "/acceptance/support/**/*.rb"].each { |f| require f } - -RSpec.configure do |config| - config.include AcceptanceExampleGroup, :type => :acceptance, :example_group => { - :file_path => /\bspec\/acceptance\// - } -end