File: //usr/local/rvm/src/ruby-3.0.2/spec/mspec/spec/commands/mspec_ci_spec.rb
require 'spec_helper'
require 'mspec/runner/mspec'
require 'mspec/runner/filters/tag'
require 'mspec/commands/mspec-ci'
describe MSpecCI, "#options" do
before :each do
@options, @config = new_option
MSpecOptions.stub(:new).and_return(@options)
@script = MSpecCI.new
@script.stub(:config).and_return(@config)
@script.stub(:files).and_return([])
end
it "enables the chdir option" do
@options.should_receive(:chdir)
@script.options []
end
it "enables the prefix option" do
@options.should_receive(:prefix)
@script.options []
end
it "enables the config option" do
@options.should_receive(:configure)
@script.options []
end
it "provides a custom action (block) to the config option" do
@script.should_receive(:load).with("cfg.mspec")
@script.options ["-B", "cfg.mspec"]
end
it "enables the dry run option" do
@options.should_receive(:pretend)
@script.options []
end
it "enables the unguarded option" do
@options.should_receive(:unguarded)
@script.options []
end
it "enables the interrupt single specs option" do
@options.should_receive(:interrupt)
@script.options []
end
it "enables the formatter options" do
@options.should_receive(:formatters)
@script.options []
end
it "enables the verbose option" do
@options.should_receive(:verbose)
@script.options []
end
it "enables the action options" do
@options.should_receive(:actions)
@script.options []
end
it "enables the action filter options" do
@options.should_receive(:action_filters)
@script.options []
end
it "enables the version option" do
@options.should_receive(:version)
@script.options []
end
it "enables the help option" do
@options.should_receive(:help)
@script.options []
end
it "calls #custom_options" do
@script.should_receive(:custom_options).with(@options)
@script.options []
end
end
describe MSpecCI, "#run" do
before :each do
MSpec.stub(:process)
@filter = double("TagFilter")
TagFilter.stub(:new).and_return(@filter)
@filter.stub(:register)
@tags = ["fails", "critical", "unstable", "incomplete", "unsupported"]
@config = { :ci_files => ["one", "two"] }
@script = MSpecCI.new
@script.stub(:exit)
@script.stub(:config).and_return(@config)
@script.stub(:files).and_return(["one", "two"])
@script.options []
end
it "registers the tags patterns" do
@config[:tags_patterns] = [/spec/, "tags"]
MSpec.should_receive(:register_tags_patterns).with([/spec/, "tags"])
@script.run
end
it "registers the files to process" do
MSpec.should_receive(:register_files).with(["one", "two"])
@script.run
end
it "registers a tag filter for 'fails', 'unstable', 'incomplete', 'critical', 'unsupported'" do
filter = double("fails filter")
TagFilter.should_receive(:new).with(:exclude, *@tags).and_return(filter)
filter.should_receive(:register)
@script.run
end
it "registers an additional exclude tag specified by :ci_xtags" do
@config[:ci_xtags] = "windows"
filter = double("fails filter")
TagFilter.should_receive(:new).with(:exclude, *(@tags + ["windows"])).and_return(filter)
filter.should_receive(:register)
@script.run
end
it "registers additional exclude tags specified by a :ci_xtags array" do
@config[:ci_xtags] = ["windows", "windoze"]
filter = double("fails filter")
TagFilter.should_receive(:new).with(:exclude,
*(@tags + ["windows", "windoze"])).and_return(filter)
filter.should_receive(:register)
@script.run
end
it "processes the files" do
MSpec.should_receive(:process)
@script.run
end
it "exits with the exit code registered with MSpec" do
MSpec.stub(:exit_code).and_return(7)
@script.should_receive(:exit).with(7)
@script.run
end
end