diff --git a/doc/README_DEVELOPERS b/doc/README_DEVELOPERS
index 685a7efc..b0a98d3e 100644
--- a/doc/README_DEVELOPERS
+++ b/doc/README_DEVELOPERS
@@ -8,6 +8,8 @@ Tracks is using
See README for links to the respective sites
+Also see the Development pages on the wiki for details on installing, upgrading, etc.
+
2. Dependencies
The dependencies are maintained by Tracks. For development we try not to vendor them
diff --git a/features/recurring_todos.feature b/features/recurring_todos.feature
index 2792bec8..9369510e 100644
--- a/features/recurring_todos.feature
+++ b/features/recurring_todos.feature
@@ -62,11 +62,26 @@ Feature: Manage recurring todos
Then the pattern "I'm done" should be in the state list "active"
And the state list "completed" should be empty
+ @selenium @wip
Scenario: Following the recurring todo link of a todo takes me to the recurring todos page
- Given this is a pending scenario
+ When I go to the home page
+ Then I should see the todo "run tests"
+ When I follow the recurring todo link of "run tests"
+ Then I should be on the repeating todos page
+ @selenium @wip
Scenario: Deleting a recurring todo with ending pattern will show message
- Given this is a pending scenario
+ When I go to the repeating todos page
+ And I mark the pattern "run tests" as complete
+ And I go to the home page
+ Then I should see "run tests"
+ When I delete the action "run tests"
+ Then I should see "@@message@@"
+ @selenium @wip
Scenario: Deleting a recurring todo with active pattern will show new todo
- Given this is a pending scenario
+ When I go to the home page
+ Then I should see "run tests"
+ When I delete the action "run tests"
+ Then I should see "@@message@@"
+ And I should see "run tests" in the context container for "test context"
\ No newline at end of file
diff --git a/features/step_definitions/recurring_todo_steps.rb b/features/step_definitions/recurring_todo_steps.rb
index 48a0a864..eb68e0c1 100644
--- a/features/step_definitions/recurring_todo_steps.rb
+++ b/features/step_definitions/recurring_todo_steps.rb
@@ -84,6 +84,14 @@ When /^I mark the pattern "([^"]*)" as active$/ do |pattern_name|
wait_for_ajax
end
+When /^I follow the recurring todo link of "([^"]*)"$/ do |action_description|
+ todo = @current_user.todos.find_by_description(action_description)
+ todo.should_not be_nil
+
+ recurring_todo_link = "div.todo_#{todo.id} div a.recurring_icon"
+ click_link recurring_todo_link
+end
+
Then /^the state list "([^"]*)" should be empty$/ do |state|
empty_id = "recurring-todos-empty-nd" if state.downcase == "active"
empty_id = "completed-empty-nd" if state.downcase == "completed"
diff --git a/vendor/rails/actionmailer/Rakefile b/vendor/rails/actionmailer/Rakefile
index ba85056e..7e0a0239 100644
--- a/vendor/rails/actionmailer/Rakefile
+++ b/vendor/rails/actionmailer/Rakefile
@@ -54,7 +54,7 @@ spec = Gem::Specification.new do |s|
s.rubyforge_project = "actionmailer"
s.homepage = "http://www.rubyonrails.org"
- s.add_dependency('actionpack', '= 2.3.12' + PKG_BUILD)
+ s.add_dependency('actionpack', '= 2.3.14' + PKG_BUILD)
s.requirements << 'none'
s.require_path = 'lib'
diff --git a/vendor/rails/actionmailer/lib/action_mailer/version.rb b/vendor/rails/actionmailer/lib/action_mailer/version.rb
index ce0b782e..7627ff22 100644
--- a/vendor/rails/actionmailer/lib/action_mailer/version.rb
+++ b/vendor/rails/actionmailer/lib/action_mailer/version.rb
@@ -2,7 +2,7 @@ module ActionMailer
module VERSION #:nodoc:
MAJOR = 2
MINOR = 3
- TINY = 12
+ TINY = 14
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff --git a/vendor/rails/actionpack/CHANGELOG b/vendor/rails/actionpack/CHANGELOG
index af6b0be2..3270c72f 100644
--- a/vendor/rails/actionpack/CHANGELOG
+++ b/vendor/rails/actionpack/CHANGELOG
@@ -1935,7 +1935,7 @@ superclass' view_paths. [Rick Olson]
* Update documentation for erb trim syntax. #5651 [matt@mattmargolis.net]
-* Pass :id => nil or :class => nil to error_messages_for to supress that html attribute. #3586 [olivier_ansaldi@yahoo.com, sebastien@goetzilla.info]
+* Pass :id => nil or :class => nil to error_messages_for to supress that html attribute. #3586 [olivier_ansaldi@yahoo.com]
* Reset @html_document between requests so assert_tag works. #4810 [Jarkko Laine, easleydp@gmail.com]
@@ -2532,7 +2532,7 @@ superclass' view_paths. [Rick Olson]
* Provide support for decimal columns to form helpers. Closes #5672. [Dave Thomas]
-* Pass :id => nil or :class => nil to error_messages_for to supress that html attribute. #3586 [olivier_ansaldi@yahoo.com, sebastien@goetzilla.info]
+* Pass :id => nil or :class => nil to error_messages_for to supress that html attribute. #3586 [olivier_ansaldi@yahoo.com]
* Reset @html_document between requests so assert_tag works. #4810 [Jarkko Laine, easleydp@gmail.com]
diff --git a/vendor/rails/actionpack/Rakefile b/vendor/rails/actionpack/Rakefile
index 004ed541..ce4c41aa 100644
--- a/vendor/rails/actionpack/Rakefile
+++ b/vendor/rails/actionpack/Rakefile
@@ -78,7 +78,7 @@ spec = Gem::Specification.new do |s|
s.requirements << 'none'
- s.add_dependency('activesupport', '= 2.3.12' + PKG_BUILD)
+ s.add_dependency('activesupport', '= 2.3.14' + PKG_BUILD)
s.add_dependency('rack', '~> 1.1.0')
s.require_path = 'lib'
diff --git a/vendor/rails/actionpack/lib/action_controller/response.rb b/vendor/rails/actionpack/lib/action_controller/response.rb
index 815f749e..ff1702e8 100644
--- a/vendor/rails/actionpack/lib/action_controller/response.rb
+++ b/vendor/rails/actionpack/lib/action_controller/response.rb
@@ -64,12 +64,13 @@ module ActionController # :nodoc:
# the character set information will also be included in the content type
# information.
def content_type=(mime_type)
- self.headers["Content-Type"] =
+ new_content_type =
if mime_type =~ /charset/ || (c = charset).nil?
mime_type.to_s
else
"#{mime_type}; charset=#{c}"
end
+ self.headers["Content-Type"] = URI.escape(new_content_type, "\r\n")
end
# Returns the response's content MIME type, or nil if content type has been set.
diff --git a/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb b/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb
index 0cd05d8e..ae24723d 100644
--- a/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb
+++ b/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb
@@ -162,7 +162,7 @@ module HTML #:nodoc:
end
closing = ( scanner.scan(/\//) ? :close : nil )
- return Text.new(parent, line, pos, content) unless name = scanner.scan(/[-:\w\x00-\x09\x0b-\x0c\x0e-\x1f]+/)
+ return Text.new(parent, line, pos, content) unless name = scanner.scan(/[^\s!>\/]+/)
name.downcase!
unless closing
diff --git a/vendor/rails/actionpack/lib/action_pack/version.rb b/vendor/rails/actionpack/lib/action_pack/version.rb
index 010bfcb0..330eecb1 100644
--- a/vendor/rails/actionpack/lib/action_pack/version.rb
+++ b/vendor/rails/actionpack/lib/action_pack/version.rb
@@ -2,7 +2,7 @@ module ActionPack #:nodoc:
module VERSION #:nodoc:
MAJOR = 2
MINOR = 3
- TINY = 12
+ TINY = 14
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff --git a/vendor/rails/actionpack/test/controller/content_type_test.rb b/vendor/rails/actionpack/test/controller/content_type_test.rb
index 32c1757e..852fbfaa 100644
--- a/vendor/rails/actionpack/test/controller/content_type_test.rb
+++ b/vendor/rails/actionpack/test/controller/content_type_test.rb
@@ -46,6 +46,11 @@ class ContentTypeController < ActionController::Base
format.rss { render :text => "hello world!", :content_type => Mime::XML }
end
end
+
+ def render_content_type_from_user_input
+ response.content_type= params[:hello]
+ render :text=>"hello"
+ end
def rescue_action(e) raise end
end
@@ -129,6 +134,11 @@ class ContentTypeTest < ActionController::TestCase
assert_equal Mime::HTML, @response.content_type
assert_equal "utf-8", @response.charset
end
+
+ def test_user_supplied_value
+ get :render_content_type_from_user_input, :hello=>"hello/world\r\nAttack: true"
+ assert_equal "hello/world%0D%0AAttack: true", @response.content_type
+ end
end
class AcceptBasedContentTypeTest < ActionController::TestCase
diff --git a/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb b/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb
index 19235448..92032514 100644
--- a/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb
+++ b/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb
@@ -5,6 +5,13 @@ class SanitizerTest < ActionController::TestCase
@sanitizer = nil # used by assert_sanitizer
end
+ def test_strip_tags_with_quote
+ sanitizer = HTML::FullSanitizer.new
+ string = '<"
hi'
+
+ assert_equal ' hi', sanitizer.sanitize(string)
+ end
+
def test_strip_tags
sanitizer = HTML::FullSanitizer.new
assert_equal("<< '"',
+ 'MysqlAdapter' => '`',
+ 'Mysql2Adapter' => '`',
+ 'PostgreSQLAdapter' => '"',
+ 'OracleAdapter' => '"',
+ }.fetch(classname) {
+ raise "need a bad char for #{classname}"
+ }
+
+ quoted = conn.quote_column_name "foo#{badchar}bar"
+ assert_equal("#{badchar}foo#{badchar * 2}bar#{badchar}", quoted)
+ end
+
def test_table_exists
assert !NonExistentTable.table_exists?
assert Topic.table_exists?
diff --git a/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite3 b/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite3
deleted file mode 100644
index b3299c65..00000000
Binary files a/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite3 and /dev/null differ
diff --git a/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite3 b/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite3
deleted file mode 100644
index f106c802..00000000
Binary files a/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite3 and /dev/null differ
diff --git a/vendor/rails/activeresource/Rakefile b/vendor/rails/activeresource/Rakefile
index f298853b..f153513d 100644
--- a/vendor/rails/activeresource/Rakefile
+++ b/vendor/rails/activeresource/Rakefile
@@ -66,7 +66,7 @@ spec = Gem::Specification.new do |s|
s.files = s.files + Dir.glob( "#{dir}/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
end
- s.add_dependency('activesupport', '= 2.3.12' + PKG_BUILD)
+ s.add_dependency('activesupport', '= 2.3.14' + PKG_BUILD)
s.require_path = 'lib'
diff --git a/vendor/rails/activeresource/lib/active_resource/version.rb b/vendor/rails/activeresource/lib/active_resource/version.rb
index 6ef5f11a..d8b34f12 100644
--- a/vendor/rails/activeresource/lib/active_resource/version.rb
+++ b/vendor/rails/activeresource/lib/active_resource/version.rb
@@ -2,7 +2,7 @@ module ActiveResource
module VERSION #:nodoc:
MAJOR = 2
MINOR = 3
- TINY = 12
+ TINY = 14
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff --git a/vendor/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb b/vendor/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb
index 60f9fd25..8e68ab0b 100644
--- a/vendor/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb
+++ b/vendor/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb
@@ -19,7 +19,7 @@ class ERB
if s.html_safe?
s
else
- s.gsub(/[&"><]/) { |special| HTML_ESCAPE[special] }.html_safe
+ s.to_s.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/, "<").html_safe
end
end
diff --git a/vendor/rails/activesupport/lib/active_support/ordered_hash.rb b/vendor/rails/activesupport/lib/active_support/ordered_hash.rb
index 54454120..5e48c021 100644
--- a/vendor/rails/activesupport/lib/active_support/ordered_hash.rb
+++ b/vendor/rails/activesupport/lib/active_support/ordered_hash.rb
@@ -130,14 +130,18 @@ module ActiveSupport
end
def merge!(other_hash)
- other_hash.each {|k,v| self[k] = v }
+ if block_given?
+ other_hash.each { |k, v| self[k] = key?(k) ? yield(k, self[k], v) : v }
+ else
+ other_hash.each { |k, v| self[k] = v }
+ end
self
end
alias_method :update, :merge!
- def merge(other_hash)
- dup.merge!(other_hash)
+ def merge(other_hash, &block)
+ dup.merge!(other_hash, &block)
end
# When replacing with another hash, the initial order of our keys must come from the other hash -ordered or not.
diff --git a/vendor/rails/activesupport/lib/active_support/version.rb b/vendor/rails/activesupport/lib/active_support/version.rb
index eee0a635..0fbeaa67 100644
--- a/vendor/rails/activesupport/lib/active_support/version.rb
+++ b/vendor/rails/activesupport/lib/active_support/version.rb
@@ -2,7 +2,7 @@ module ActiveSupport
module VERSION #:nodoc:
MAJOR = 2
MINOR = 3
- TINY = 12
+ TINY = 14
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff --git a/vendor/rails/railties/Rakefile b/vendor/rails/railties/Rakefile
index 01ac7019..c3d8eeb7 100644
--- a/vendor/rails/railties/Rakefile
+++ b/vendor/rails/railties/Rakefile
@@ -313,11 +313,11 @@ spec = Gem::Specification.new do |s|
EOF
s.add_dependency('rake', '>= 0.8.3')
- s.add_dependency('activesupport', '= 2.3.12' + PKG_BUILD)
- s.add_dependency('activerecord', '= 2.3.12' + PKG_BUILD)
- s.add_dependency('actionpack', '= 2.3.12' + PKG_BUILD)
- s.add_dependency('actionmailer', '= 2.3.12' + PKG_BUILD)
- s.add_dependency('activeresource', '= 2.3.12' + PKG_BUILD)
+ s.add_dependency('activesupport', '= 2.3.14' + PKG_BUILD)
+ s.add_dependency('activerecord', '= 2.3.14' + PKG_BUILD)
+ s.add_dependency('actionpack', '= 2.3.14' + PKG_BUILD)
+ s.add_dependency('actionmailer', '= 2.3.14' + PKG_BUILD)
+ s.add_dependency('activeresource', '= 2.3.14' + PKG_BUILD)
s.rdoc_options << '--exclude' << '.'
diff --git a/vendor/rails/railties/lib/rails/version.rb b/vendor/rails/railties/lib/rails/version.rb
index 94df7c10..b89643ff 100644
--- a/vendor/rails/railties/lib/rails/version.rb
+++ b/vendor/rails/railties/lib/rails/version.rb
@@ -2,7 +2,7 @@ module Rails
module VERSION #:nodoc:
MAJOR = 2
MINOR = 3
- TINY = 12
+ TINY = 14
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff --git a/vendor/rails/railties/lib/tasks/documentation.rake b/vendor/rails/railties/lib/tasks/documentation.rake
index bc7887b7..b3111a5a 100644
--- a/vendor/rails/railties/lib/tasks/documentation.rake
+++ b/vendor/rails/railties/lib/tasks/documentation.rake
@@ -1,3 +1,5 @@
+begin
+ require 'rdoc/task'
namespace :doc do
desc "Generate documentation for the application. Set custom template with TEMPLATE=/path/to/rdoc/template.rb or title with TITLE=\"Custom Title\""
RDoc::Task.new("app") { |rdoc|
@@ -86,3 +88,6 @@ namespace :doc do
end
end
end
+rescue LoadError
+ $stderr.puts 'Please install RDoc 2.4.2+ to generate documentation.'
+end