PageRenderTime 59ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/test/unit/builds_helper_test.rb

http://github.com/benburkert/cruisecontrolrb
Ruby | 153 lines | 121 code | 31 blank | 1 comment | 2 complexity | 2c0486385eb8f32265a99513311b1db4 MD5 | raw file
Possible License(s): Apache-2.0
  1. require File.dirname(__FILE__) + '/../test_helper'
  2. class ProjectsController
  3. attr_accessor :url
  4. end
  5. class BuildsHelperTest < Test::Unit::TestCase
  6. include FileSandbox
  7. include BuildsHelper
  8. include ApplicationHelper
  9. include ActionView::Helpers::UrlHelper
  10. include ActionView::Helpers::TagHelper
  11. include ActionView::Helpers::FormTagHelper
  12. def setup
  13. @work_path = File.expand_path('/Users/jeremy/src/cruisecontrolrb/builds/CruiseControl/work')
  14. @project = Project.new('mine')
  15. end
  16. def test_format_build_log_makes_test_summaries_bold
  17. assert_equal "limes <div class=\"test-results\">5 tests, 20 assertions, 10 failures, 2 errors</div> foo",
  18. format_build_log("limes 5 tests, 20 assertions, 10 failures, 2 errors foo")
  19. end
  20. def test_format_build_log_links_to_code_inside_project
  21. expected = <<-EOL
  22. <a href="/projects/code/mine/vendor/rails/activesupport/lib/active_support/dependencies.rb?line=477#477">/Users/jeremy/src/cruisecontrolrb/builds/CruiseControl/work/config/../vendor/rails/actionpack/lib/../../activesupport/lib/active_support/dependencies.rb:477</a>:in `const_missing'
  23. <a href="/projects/code/mine/test/unit/builder_status_test.rb?line=8#8">./test/unit/builder_status_test.rb:8</a>:in `setup'
  24. EOL
  25. log = <<-EOL
  26. /Users/jeremy/src/cruisecontrolrb/builds/CruiseControl/work/config/../vendor/rails/actionpack/lib/../../activesupport/lib/active_support/dependencies.rb:477:in `const_missing'
  27. ./test/unit/builder_status_test.rb:8:in `setup'
  28. EOL
  29. assert_equal expected, format_build_log(log)
  30. end
  31. def test_format_build_log_links_to_code_knows_about_rails_root
  32. expected = <<-EOL
  33. <a href="/projects/code/mine/test/unit/builder_status_test.rb?line=8#8">test/unit/builder_status_test.rb:8</a>:in `setup'
  34. <a href="/projects/code/mine/test/unit/builder_status_test.rb?line=8#8">\#{RAILS_ROOT}/test/unit/builder_status_test.rb:8</a>:in `setup'
  35. EOL
  36. log = <<-EOL
  37. test/unit/builder_status_test.rb:8:in `setup'
  38. \#{RAILS_ROOT}/test/unit/builder_status_test.rb:8:in `setup'
  39. EOL
  40. assert_equal expected, format_build_log(log)
  41. end
  42. def test_format_build_log_doesnt_link_to_code_outside_project
  43. expected = <<-EOL
  44. ../foo:20
  45. <a href="/projects/code/mine/index.html?line=30#30">../work/index.html:30</a>
  46. /ruby/gems/ruby.rb:25
  47. EOL
  48. log = <<-EOL
  49. ../foo:20
  50. ../work/index.html:30
  51. /ruby/gems/ruby.rb:25
  52. EOL
  53. assert_equal expected, format_build_log(log)
  54. end
  55. # this is tested elsewhere in depth, this is a functional test
  56. def test_parse_test_results
  57. log = <<-EOL
  58. 1) Error:
  59. test_build_loop_failed_creates_file__build_loop_failed__(BuilderStatusTest):
  60. NameError: uninitialized constant BuilderStatusTest::BuilderStatus
  61. ./test/unit/builder_status_test.rb:8:in `setup'
  62. 2) Error:
  63. test_build_started_creates_file__building__(BuilderStatusTest):
  64. NameError: uninitialized constant BuilderStatusTest::BuilderStatus
  65. /active_support/dependencies.rb:477:in `const_missing'
  66. ./test/unit/builder_status_test.rb:8:in `setup'
  67. EOL
  68. expected = <<-EOL
  69. Name: test_build_loop_failed_creates_file__build_loop_failed__(BuilderStatusTest)
  70. Type: Error
  71. Message: NameError: uninitialized constant BuilderStatusTest::BuilderStatus
  72. <span class=\"error\"> <a href=\"/projects/code/mine/test/unit/builder_status_test.rb?line=8#8\">./test/unit/builder_status_test.rb:8</a>:in `setup'</span>
  73. Name: test_build_started_creates_file__building__(BuilderStatusTest)
  74. Type: Error
  75. Message: NameError: uninitialized constant BuilderStatusTest::BuilderStatus
  76. <span class=\"error\"> /active_support/dependencies.rb:477:in `const_missing'
  77. <a href=\"/projects/code/mine/test/unit/builder_status_test.rb?line=8#8\">./test/unit/builder_status_test.rb:8</a>:in `setup'</span>
  78. EOL
  79. assert_equal expected, failures_and_errors_if_any(log)
  80. end
  81. BuildStub = Struct.new :label, :time, :state # failed, incomplete
  82. class BuildStub
  83. def failed?() @state == 'failed' end
  84. def incomplete?() @state == 'incomplete' end
  85. end
  86. def test_select_builds
  87. @build = BuildStub.new(4)
  88. assert_equal "", select_builds([])
  89. assert_equal "<select id=\"build\" name=\"build\" onChange=\"this.form.submit();\">" +
  90. "<option value=''>Older Builds...</option>" +
  91. "<option value='1'>1 (1 Jan 06)</option>" +
  92. "</select>", select_builds([BuildStub.new(1, Date.new(2006,1,1).to_time)])
  93. @build = BuildStub.new(3)
  94. assert_equal "<select id=\"build\" name=\"build\" onChange=\"this.form.submit();\">" +
  95. "<option value=''>Older Builds...</option>" +
  96. "<option value='1'>1 (1 Jan 06)</option>" +
  97. "<option value='3'>3 (5 Jan 06)</option>" +
  98. "<option value='5'>5 (10 Jan 06)</option>" +
  99. "</select>", select_builds([BuildStub.new(1, Date.new(2006,1,1).to_time),
  100. BuildStub.new(3, Date.new(2006,1,5).to_time),
  101. BuildStub.new(5, Date.new(2006,1,10).to_time)])
  102. end
  103. def test_builds_except_last
  104. with_sandbox_project do |sandbox, project|
  105. project.stubs(:builds).returns((1..10).to_a.map {|i| Build.new(project, i)})
  106. assert_builds %w(10 9 8 7 6 5 4 3 2 1), builds_except_last(project, 0)
  107. assert_builds [], builds_except_last(project, 10)
  108. assert_builds %w(5 4 3 2 1), builds_except_last(project, 5)
  109. end
  110. end
  111. private
  112. def assert_builds(expected, actual)
  113. assert_equal expected, actual.map{|b| b.label}
  114. end
  115. def h(text)
  116. text
  117. end
  118. end