require File.dirname(__FILE__) + '/../test_helper' class ProjectsController attr_accessor :url end class BuildsHelperTest < Test::Unit::TestCase include FileSandbox include BuildsHelper include ApplicationHelper include ActionView::Helpers::UrlHelper include ActionView::Helpers::TagHelper include ActionView::Helpers::FormTagHelper def setup @work_path = File.expand_path('/Users/jeremy/src/cruisecontrolrb/builds/CruiseControl/work') @project = Project.new('mine') end def test_format_build_log_makes_test_summaries_bold assert_equal "limes
5 tests, 20 assertions, 10 failures, 2 errors
foo", format_build_log("limes 5 tests, 20 assertions, 10 failures, 2 errors foo") end def test_format_build_log_links_to_code_inside_project expected = <<-EOL /Users/jeremy/src/cruisecontrolrb/builds/CruiseControl/work/config/../vendor/rails/actionpack/lib/../../activesupport/lib/active_support/dependencies.rb:477:in `const_missing' ./test/unit/builder_status_test.rb:8:in `setup' EOL log = <<-EOL /Users/jeremy/src/cruisecontrolrb/builds/CruiseControl/work/config/../vendor/rails/actionpack/lib/../../activesupport/lib/active_support/dependencies.rb:477:in `const_missing' ./test/unit/builder_status_test.rb:8:in `setup' EOL assert_equal expected, format_build_log(log) end def test_format_build_log_links_to_code_knows_about_rails_root expected = <<-EOL test/unit/builder_status_test.rb:8:in `setup' \#{RAILS_ROOT}/test/unit/builder_status_test.rb:8:in `setup' EOL log = <<-EOL test/unit/builder_status_test.rb:8:in `setup' \#{RAILS_ROOT}/test/unit/builder_status_test.rb:8:in `setup' EOL assert_equal expected, format_build_log(log) end def test_format_build_log_doesnt_link_to_code_outside_project expected = <<-EOL ../foo:20 ../work/index.html:30 /ruby/gems/ruby.rb:25 EOL log = <<-EOL ../foo:20 ../work/index.html:30 /ruby/gems/ruby.rb:25 EOL assert_equal expected, format_build_log(log) end # this is tested elsewhere in depth, this is a functional test def test_parse_test_results log = <<-EOL 1) Error: test_build_loop_failed_creates_file__build_loop_failed__(BuilderStatusTest): NameError: uninitialized constant BuilderStatusTest::BuilderStatus ./test/unit/builder_status_test.rb:8:in `setup' 2) Error: test_build_started_creates_file__building__(BuilderStatusTest): NameError: uninitialized constant BuilderStatusTest::BuilderStatus /active_support/dependencies.rb:477:in `const_missing' ./test/unit/builder_status_test.rb:8:in `setup' EOL expected = <<-EOL Name: test_build_loop_failed_creates_file__build_loop_failed__(BuilderStatusTest) Type: Error Message: NameError: uninitialized constant BuilderStatusTest::BuilderStatus ./test/unit/builder_status_test.rb:8:in `setup' Name: test_build_started_creates_file__building__(BuilderStatusTest) Type: Error Message: NameError: uninitialized constant BuilderStatusTest::BuilderStatus /active_support/dependencies.rb:477:in `const_missing' ./test/unit/builder_status_test.rb:8:in `setup' EOL assert_equal expected, get_test_failures_and_errors_if_any(log) end BuildStub = Struct.new :label, :time, :state # failed, incomplete class BuildStub def failed?() @state == 'failed' end def incomplete?() @state == 'incomplete' end end def test_select_builds @build = BuildStub.new(4) assert_equal "", select_builds([]) assert_equal "", select_builds([BuildStub.new(1, Date.new(2006,1,1).to_time)]) @build = BuildStub.new(3) assert_equal "", select_builds([BuildStub.new(1, Date.new(2006,1,1).to_time), BuildStub.new(3, Date.new(2006,1,5).to_time), BuildStub.new(5, Date.new(2006,1,10).to_time)]) end def test_builds_except_last with_sandbox_project do |sandbox, project| project.stubs(:builds).returns((1..10).to_a.map {|i| Build.new(project, i)}) assert_builds [10,9,8,7,6,5,4,3,2,1], builds_except_last(project, 0) assert_builds [], builds_except_last(project, 10) assert_builds [5,4,3,2,1], builds_except_last(project, 5) end end private def assert_builds(expected, actual) assert_equal expected, actual.map{|b| b.label} end def h(text) text end end