69 lines
1.9 KiB
Ruby
69 lines
1.9 KiB
Ruby
require_relative "../base"
|
|
|
|
require "vagrant/alias"
|
|
|
|
describe Vagrant::Alias do
|
|
include_context "unit"
|
|
include_context "command plugin helpers"
|
|
|
|
let(:iso_env) { isolated_environment }
|
|
let(:env) { iso_env.create_vagrant_env }
|
|
|
|
describe "#interpret" do
|
|
let(:interpreter) { described_class.new(env) }
|
|
|
|
it "returns nil for comments" do
|
|
comments = [
|
|
"# this is a comment",
|
|
"# so is this ",
|
|
" # and this",
|
|
" # this too "
|
|
]
|
|
|
|
comments.each do |comment|
|
|
expect(interpreter.interpret(comment)).to be_nil
|
|
end
|
|
end
|
|
|
|
it "raises an error on invalid keywords" do
|
|
keywords = [
|
|
"keyword with a space = command",
|
|
"keyword\twith a tab = command",
|
|
"keyword\nwith a newline = command",
|
|
]
|
|
|
|
keywords.each do |keyword|
|
|
expect { interpreter.interpret(keyword) }.to raise_error(Vagrant::Errors::AliasInvalidError)
|
|
end
|
|
end
|
|
|
|
it "properly interprets a simple alias" do
|
|
keyword, command = interpreter.interpret("keyword=command")
|
|
|
|
expect(keyword).to eq("keyword")
|
|
expect(command).to eq("command")
|
|
end
|
|
|
|
it "properly interprets an alias with excess whitespace" do
|
|
keyword, command = interpreter.interpret(" keyword = command ")
|
|
|
|
expect(keyword).to eq("keyword")
|
|
expect(command).to eq("command")
|
|
end
|
|
|
|
it "properly interprets an alias with an equals sign in the command" do
|
|
keyword, command = interpreter.interpret(" keyword = command = command ")
|
|
|
|
expect(keyword).to eq("keyword")
|
|
expect(command).to eq("command = command")
|
|
end
|
|
|
|
it "allows keywords with non-alpha-numeric characters" do
|
|
keyword, command = interpreter.interpret("keyword! = command")
|
|
|
|
expect(keyword).to eq("keyword!")
|
|
expect(command).to eq("command")
|
|
end
|
|
end
|
|
end
|