Sha256: 8f5294ae79adb32300fee08c857a8b62f22b9480ce6435bc40d5792d57091734

Contents?: true

Size: 1.93 KB

Versions: 54

Compression:

Stored size: 1.93 KB

Contents

module VagrantTests
  module DummyCommunicator
    class Communicator < Vagrant.plugin("2", :communicator)
      def ready?
        true
      end

      attr_reader :known_commands

      def initialize(machine)
        @known_commands = Hash.new do |hash, key|
          hash[key] = { expected: 0, received: 0, response: nil }
        end
      end

      def expected_commands
        known_commands.select do |command, info|
          info[:expected] > 0
        end
      end

      def received_commands
        known_commands.select do |command, info|
          info[:received] > 0
        end.keys
      end

      def stub_command(command, response)
        known_commands[command][:response] = response
      end

      def expect_command(command)
        known_commands[command][:expected] += 1
      end

      def received_summary
        received_commands.map { |cmd| " - #{cmd}" }.unshift('received:').join("\n")
      end

      def verify_expectations!
        expected_commands.each do |command, info|
          if info[:expected] != info[:received]
            fail([
              "expected to receive '#{command}' #{info[:expected]} times",
              "got #{info[:received]} times instead",
              received_summary
            ].join("\n"))
          end
        end
      end

      def execute(command, opts=nil)
        known = known_commands[command]
        known[:received] += 1
        response = known[:response]
        return unless response

        if block_given?
          [:stdout, :stderr].each do |type|
            Array(response[type]).each do |line|
              yield type, line
            end
          end
        end

        if response[:raise]
          raise response[:raise]
        end

        response[:exit_code]
      end

      def sudo(command, opts=nil, &block)
        execute(command, opts, &block)
      end

      def test(command, opts=nil)
        execute(command, opts) == 0
      end
    end
  end
end

Version data entries

54 entries across 47 versions & 9 rubygems

Version Path
tamtam-vagrant-reload-1.2.1 vendor/cache/vagrant-2092df529ae7/test/unit/support/dummy_communicator.rb
vagrant-aws-mkubenka-0.7.2.pre.24 vendor/bundle/ruby/2.7.0/bundler/gems/vagrant-22795b161bf6/test/unit/support/dummy_communicator.rb
vagrant-packet-0.1.2 vendor/bundle/ruby/2.5.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/support/dummy_communicator.rb
vagrant-packet-0.1.2 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/support/dummy_communicator.rb
vagrant-packet-0.1.2 vendor/bundle/ruby/2.4.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/support/dummy_communicator.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/support/dummy_communicator.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/support/dummy_communicator.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/support/dummy_communicator.rb
vagrant-aws-detiber-0.7.2.pre.4 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-419afb4dcffe/test/unit/support/dummy_communicator.rb
vagrant-aws-detiber-0.7.2.pre.3 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-419afb4dcffe/test/unit/support/dummy_communicator.rb
vagrant-aws-detiber-0.7.2.pre.2 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-419afb4dcffe/test/unit/support/dummy_communicator.rb
vagrant-unbundled-2.0.2.0 test/unit/support/dummy_communicator.rb
vagrant-unbundled-2.0.1.0 test/unit/support/dummy_communicator.rb
vagrant-aws-mkubenka-0.7.2.pre.22 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-f3fdbf414272/test/unit/support/dummy_communicator.rb
vagrant-aws-mkubenka-0.7.2.pre.16 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-1ee58c40e3f5/test/unit/support/dummy_communicator.rb
vagrant-unbundled-2.0.0.1 test/unit/support/dummy_communicator.rb
vagrant-unbundled-1.9.8.1 test/unit/support/dummy_communicator.rb
vagrant-unbundled-1.9.7.1 test/unit/support/dummy_communicator.rb
vagrant-aws-mkubenka-0.7.2.pre.14 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-5333e60e2d38/test/unit/support/dummy_communicator.rb
vagrant-aws-mkubenka-0.7.2.pre.11 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-5333e60e2d38/test/unit/support/dummy_communicator.rb