# Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: BUSL-1.1 require File.expand_path("../../base", __FILE__) describe Vagrant::Config do it "should not execute the proc on configuration" do described_class.run do raise Exception, "Failure." end end it "should capture calls to `Vagrant.configure`" do receiver = double() procs = described_class.capture_configures do Vagrant.configure("1") do receiver.one end Vagrant.configure("2") do receiver.two end end expect(procs).to be_kind_of(Array) expect(procs.length).to eq(2) expect(procs[0][0]).to eq("1") expect(procs[1][0]).to eq("2") # Verify the proper procs were captured expect(receiver).to receive(:one).once.ordered expect(receiver).to receive(:two).once.ordered procs[0][1].call procs[1][1].call end it "should work with integer configurations "do receiver = double() procs = described_class.capture_configures do Vagrant.configure(1) do receiver.one end Vagrant.configure("2") do receiver.two end end expect(procs).to be_kind_of(Array) expect(procs.length).to eq(2) expect(procs[0][0]).to eq("1") expect(procs[1][0]).to eq("2") # Verify the proper procs were captured expect(receiver).to receive(:one).once.ordered expect(receiver).to receive(:two).once.ordered procs[0][1].call procs[1][1].call end it "should capture configuration procs" do receiver = double() procs = described_class.capture_configures do described_class.run do receiver.hello! end end # Verify the structure of the result expect(procs).to be_kind_of(Array) expect(procs.length).to eq(1) # Verify that the proper proc was captured expect(receiver).to receive(:hello!).once expect(procs[0][0]).to eq("1") procs[0][1].call end it "should capture the proper version" do procs = described_class.capture_configures do described_class.run("1") {} described_class.run("2") {} end # Verify the structure of the result expect(procs).to be_kind_of(Array) expect(procs.length).to eq(2) expect(procs[0][0]).to eq("1") expect(procs[1][0]).to eq("2") end end