require File.dirname(__FILE__) + "/spec_helper" describe Jenkins::JobConfigBuilder do include ConfigFixtureLoaders describe "explicit steps to match a ruby job" do before do @config = Jenkins::JobConfigBuilder.new(:rails) do |c| c.scm = "git://codebasehq.com/mocra/misc/mocra-web.git" c.steps = [ [:build_shell_step, "step 1"], [:build_shell_step, "step 2"] ] end end it "builds config.xml" do steps = Hpricot.XML(@config.to_xml).search("command") steps.map(&:inner_text).should == ["step 1", "step 2"] end end describe "rails job; single axis" do before do @config = Jenkins::JobConfigBuilder.new(:rails) do |c| c.scm = "git://codebasehq.com/mocra/misc/mocra-web.git" end end it "builds config.xml" do config_xml("rails", "single").should == @config.to_xml end end describe "many rubies" do before do @config = Jenkins::JobConfigBuilder.new(:ruby) do |c| c.scm = "http://github.com/drnic/picasa_plucker.git" c.rubies = %w[1.8.7 1.9.2 rbx-head jruby] end end it "have have explicit rubies" do config_xml("ruby", "multi").should == @config.to_xml end it "and many labels/assigned_nodes" do @config.node_labels = %w[1.8.7 ubuntu] config_xml("ruby", "multi-ruby-multi-labels").should == @config.to_xml end end describe "assigned slave nodes for slave usage" do before do @config = Jenkins::JobConfigBuilder.new(:rails) do |c| c.assigned_node = "my-slave" end end it "builds config.xml" do Hpricot.XML(@config.to_xml).search("assignedNode").size.should == 1 Hpricot.XML(@config.to_xml).search("assignedNode").text.should == "my-slave" Hpricot.XML(@config.to_xml).search("canRoam").text.should == "false" end end describe "no specific slave nodes" do before do @config = Jenkins::JobConfigBuilder.new(:rails) do |c| end end it "builds config.xml" do Hpricot.XML(@config.to_xml).search("assignedNode").size.should == 0 end end describe "SCM behaviour" do describe "#public_scm = true => convert git@ into git:// until we have deploy keys" do before do @config = Jenkins::JobConfigBuilder.new(:rails) do |c| c.scm = "git@codebasehq.com:mocra/misc/mocra-web.git" c.public_scm = true end end it "builds config.xml" do config_xml("rails", "single").should == @config.to_xml end end # # # master # # # other # # describe "#scm-branches - set branches" do before do @config = Jenkins::JobConfigBuilder.new(:rails) do |c| c.scm = "git@codebasehq.com:mocra/misc/mocra-web.git" end end it "defaults to 'master'" do branch_names = Hpricot.XML(@config.to_xml).search("branches name") branch_names.size.should == 1 branch_names.text.should == "master" branch_names.first.parent.name.should == "hudson.plugins.git.BranchSpec" end it "can have specific branches" do branches = @config.scm_branches = %w[master other branches] branch_names = Hpricot.XML(@config.to_xml).search("branches name") branch_names.size.should == 3 branch_names.map(&:inner_text).should == branches end end end describe "setup ENV variables via envfile plugin" do before do @config = Jenkins::JobConfigBuilder.new(:rails) do |c| c.scm = "git://codebasehq.com/mocra/misc/mocra-web.git" c.steps = [] c.envfile = "/path/to/env/file" end end it "builds config.xml" do xml_bite = <<-XML.gsub(/^ /, '') /path/to/env/file XML Hpricot.XML(@config.to_xml).search("buildWrappers").to_s.should == xml_bite.strip end end describe "erlang job; single axis" do before do @config = Jenkins::JobConfigBuilder.new(:erlang) do |c| c.scm = "git://codebasehq.com/mocra/misc/mocra-web.git" end end it "builds config.xml" do config_xml("erlang", "single").should == @config.to_xml end end end