start working through tests

This commit is contained in:
Zachary Flower 2018-02-16 13:00:39 -07:00
parent 17f13785ce
commit f16751a46d
2 changed files with 63 additions and 5 deletions

View File

@ -9,13 +9,12 @@ module Vagrant
aliases_file = env.home_path.join("aliases") aliases_file = env.home_path.join("aliases")
if aliases_file.file? if aliases_file.file?
aliases_file.readlines.each do |line| aliases_file.readlines.each do |line|
# skip comments
next if line.strip.start_with?("#")
# separate keyword-command pairs # separate keyword-command pairs
keyword, command = line.split("=").collect(&:strip) keyword, command = interpret(line)
register(keyword, command) if keyword && command
register(keyword, command)
end
end end
end end
end end
@ -25,6 +24,16 @@ module Vagrant
@aliases @aliases
end end
# This interprets a raw line from the aliases file.
def interpret(line)
# is it a comment?
return nil if line.strip.start_with?("#")
keyword, command = line.split("=", 2).collect(&:strip)
[keyword, command]
end
# This registers an alias. # This registers an alias.
def register(keyword, command) def register(keyword, command)
@aliases.register(keyword.to_sym) do @aliases.register(keyword.to_sym) do

View File

@ -0,0 +1,49 @@
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 "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
end
end