aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Change 1.week to create 1 week durations instead of 7 days durations."Jeremy Daer2016-04-271-3/+2
| | | | | | Regression: adding minutes/hours to a time would change its time zone This reverts commit 1bf9fe75a6473cb7501cae544cab772713e68cef.
* Merge pull request #24723 from lvl0nax/array_split_fixJeremy Daer2016-04-261-0/+8
|\ | | | | | | Little perfomance fix for Array#split.
| * Little perfomance fix for Array#split.lvl0nax2016-04-261-0/+8
| | | | | | | | | | | | | | | | | | Calculating ------------------------------------- before 40.770k i/100ms after 58.464k i/100ms ------------------------------------------------- before 629.568k (± 5.0%) i/s - 3.180M after 1.159M (± 4.5%) i/s - 5.788M
* | Do not cache ActiveSupport::TimeZone#utc_offsetAlexey Shein2016-04-251-0/+11
|/ | | | | | | | | | | | | | | This can be an issue when TZInfo::TimeZone#current_period is refreshed due to timezone period transition, but it's not reflected in ActiveSupport::TimeZone object. For example, on Sun, 26 Oct 2014 22:00 UTC, Moscow changed its TZ from MSK +04:00 to MSK +03:00 (-1 hour). If ActiveSupport::TimeZone['Moscow'] happens to be initialized just before the timezone transition, it will cache its stale utc_offset even after the timezone transition. This commit removes cache and fixes this issue. Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
* Make getlocal and getutc always return instances of TimeAndrew White2016-04-233-1/+34
| | | | | | | | | | | | | | | Previously these methods could return either a DateTime or a Time depending on how the ActiveSupport::TimeWithZone instance had been constructed. Changing to always return an instance of Time eliminates a possible stack level too deep error in to_time where it was wrapping a DateTime instance. As a consequence of this the internal time value is now always an instance of Time in the UTC timezone, whether that's as the UTC time directly or a representation of the local time in the timezone. There should be no consequences of this internal change and if there are it's a bug due to leaky abstractions.
* Add DateTime#subsecAndrew White2016-04-231-0/+5
| | | | | Mirrors the Time#subsec method by returning the fraction of the second as a Rational.
* Change Time#sec_fraction to use subsecAndrew White2016-04-231-0/+14
| | | | Time instances can have fractional parts smaller than a nanosecond.
* Add compatibility for Ruby 2.4 `to_time` changesAndrew White2016-04-233-0/+126
| | | | | | | | | | | | | | | In Ruby 2.4 the `to_time` method for both `DateTime` and `Time` will preserve the timezone of the receiver when converting to an instance of `Time`. Since Rails 5.0 will support Ruby 2.2, 2.3 and later we need to introduce a compatibility layer so that apps that upgrade do not break. New apps will have a config initializer file that defaults to match the new Ruby 2.4 behavior going forward. For information about the changes to Ruby see: https://bugs.ruby-lang.org/issues/12189 https://bugs.ruby-lang.org/issues/12271 Fixes #24617.
* Make file update checker tests more resilient on WindowsSean Griffin2016-04-211-5/+7
| | | | | | | | | Without the `wdm` gem, it appears that `listen` keeps an open handle to each of these files, causing them not to be removed when the tempdir tries to clean iteslf up, and then directory to fail to unlink. In addition to fixing that particular failure, we now construct OS agnostic paths, and capture exceptions if the directory fails to unlink so that minitest will report it rather than crash
* Add ActiveSupport::TimeZone.country_zones helperAndrey Novikov2016-04-191-0/+5
| | | | | | That helper will return time zones for any country that tzdata knows about. So it will be much simpler for non-US people to list own country time zones in HTML selects or anywhere.
* Merge pull request #24552 from yui-knk/raise_argument_errorJeremy Daer2016-04-191-0/+4
|\ | | | | | | Raise `ArgumentError` when an invalid form is passed to `Date#to_time`
| * Raise `ArgumentError` when an invalid form is passed to `Date#to_time`yui-knk2016-04-171-0/+4
| | | | | | | | | | | | | | | | Before this commit `NoMethodError: undefined method `form_name' for Time:Class` is raised when an invalid argument is passed. It is better to raise `ArgumentError` and show list of valid arguments to developers.
* | Travis: cache unicode data downloads and beanstalkd buildJeremy Daer2016-04-193-3/+3
| |
* | Ruby 2.4: compat with new Array#sumJeremy Daer2016-04-181-3/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ruby 2.4 introduces `Array#sum`, but it only supports numeric elements, breaking our `Enumerable#sum` which supports arbitrary `Object#+`. To fix, override `Array#sum` with our compatible implementation. Native Ruby 2.4: %w[ a b ].sum # => TypeError: String can't be coerced into Fixnum With `Enumerable#sum` shim: %w[ a b ].sum # => 'ab' We tried shimming the fast path and falling back to the compatible path if it fails, but that ends up slower even in simple causes due to the cost of exception handling. Our only choice is to override the native `Array#sum` with our `Enumerable#sum`.
* | `ActiveSupport::Duration` supports ISO8601 formatting and parsing.Arnau Siches, Andrey Novikov2016-04-181-0/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ```ruby ActiveSupport::Duration.parse('P3Y6M4DT12H30M5S') (3.years + 3.days).iso8601 ``` Inspired by Arnau Siches' [ISO8601 gem](https://github.com/arnau/ISO8601/) and rewritten by Andrey Novikov with suggestions from Andrew White. Test data from the ISO8601 gem redistributed under MIT license. (Will be used to support the PostgreSQL interval data type.)
* | Merge pull request #24577 from mechanicles/fix-fetch-cache-missJeremy Daer2016-04-181-0/+14
|\ \ | | | | | | | | | Fix forced cache miss for fetch when called without a block.
| * | Fix forced cache miss for fetch.Santosh Wadghule2016-04-181-0/+14
|/ / | | | | | | | | | | - Raised an argument error if no block is passed to #fetch with 'force: true' option is set. - Added tests for the same.
* | Change 1.week to create 1 week durations instead of 7 days durations.Andrey Novikov2016-04-181-2/+3
| | | | | | | | This is just to remove astonishment from getting `3600 seconds` from typing `1.hour`.
* | Merge pull request #24517 from estolfo/transform-keys-return-type-masterSean Griffin2016-04-151-0/+16
|\ \ | |/ |/| Restore Hash#transform_keys behavior to always return a Hash instance
| * Restore Hash#transform_keys behavior to always return a Hash instanceEmily2016-04-121-0/+16
| |
* | Remove unused variableRafael Mendonça França2016-04-131-1/+0
| |
* | Handle max_time edge cases for epoch times and add testBlake Mesdag2016-04-121-0/+17
|/
* Fix behavior of JSON encoding for Exceptionnamusyaka2016-04-091-0/+5
|
* Merge pull request #24422 from matthewd/extinguish-executor-exceptionsMatthew Draper2016-04-071-0/+107
|\ | | | | Clean up after a failure in a run callback
| * Directly support stateful executor hooksMatthew Draper2016-04-051-0/+107
| | | | | | | | Also, make sure to call the +complete+ hooks if +run+ fails.
* | Merge pull request #24345 from ↵Rafael França2016-04-051-3/+18
|\ \ | | | | | | | | | | | | mtsmfm/fix-marshal-with-autoloading-for-nested-class Fix marshal with autoloading for nested class/module
| * | Fix marshal with autoloading for nested class/moduleFumiaki MATSUSHIMA2016-03-281-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | #24150 break autoloading for nested class/module. There is test for nested class but it doesn't work correctly. Following code will autoload `ClassFolder::ClassFolderSubclass` before `Marshal.load`: `assert_kind_of ClassFolder::ClassFolderSubclass, Marshal.load(dumped)`
* | | Merge pull request #24401 from pan/number-to-phoneRafael Mendonça França2016-04-051-0/+2
|\ \ \ | |_|/ |/| | | | | `number_to_phone` formats number with regexp
| * | `number_to_phone` formats number with regexpPan GaoYong2016-04-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default, this method formats US number. This commit extends its functionality to format number for other countries with a custom regular expression. number_to_phone(18812345678, pattern: /(\d{3})(\d{4})(\d{4})/) # => 188-1234-5678 The output phone number is divided into three groups, so the regexp should also match three groups of numbers.
* | | Match `String#to_time`'s behaviour to rubySiim Liiser2016-04-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Previously `String#to_time` returned the midnight of the current date in some cases where there was no relavant information in the string. Now the method returns `nil` instead in those cases. Fixes #22958.
* | | Call super instead of returning nil for DateTime#<=>Andrew White2016-04-031-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | The native DateTime#<=> implementation can be used to compare instances with numeric values being considered as astronomical julian day numbers so we should call that instead of returning nil. Fixes #24228.
* | | Use block form of Dir.mktmpdir to ensure tidy upAndrew White2016-04-031-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | If the test run was interrupted in some way then it left temporary directories inside of test causing the git worktree to be in a dirty state. By overriding the run method we can use the block form of Dir.mktmpdir to ensure that the directories are cleaned up no matter which way the test run is exited.
* | | Prevent void context warningsAndrew White2016-04-032-2/+2
|/ / | | | | | | | | | | The constant reference A::B used to trigger autoloading causes a warning to be logged about the possible use of :: in a void context so assign it to the _ variable to prevent the warnings from being triggered.
* | Fix method String#upcase_firstbogdanvlviv2016-03-311-0/+8
| |
* | Merge pull request #23895 from glaucocustodio/add_upcase_first_methodRafael Mendonça França2016-03-301-0/+4
|\ \ | |/ |/| | | Add upcase_first method
| * Add upcase_first methodGlauco Custódio2016-02-251-0/+4
| |
* | tests the raising/throwing discards the watching stackXavier Noria2016-03-163-4/+8
| |
* | s/removes/discards/Xavier Noria2016-03-161-2/+2
| |
* | adds coverage for raising while autoloadingXavier Noria2016-03-162-0/+12
| |
* | adds coverage for throwing while autoloadingXavier Noria2016-03-152-0/+14
| | | | | | | | References #24205.
* | Merge pull request #24150 from exviva/unmarshal-infinite-retryXavier Noria2016-03-111-0/+11
|\ \ | | | | | | Prevent `Marshal.load` from looping infinitely
| * | Prevent `Marshal.load` from looping infinitelyOlek Janiszewski2016-03-111-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix a bug in `Marshal.load` that caused it to loop indefinitely when trying to autoload a constant that resolved to a different name. This could occur when marshalling an ActiveRecord 4.0 object (e.g. into memcached) and then trying to unmarshal it with Rails 4.2. The marshalled payload contains a reference to `ActiveRecord::ConnectionAdapters::Mysql2Adapter::Column`, which in Rails 4.2 resolves to `ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::Column`.
* | | Fix `thread_mattr_accessor` thread-local variable namingMichael Ryan2016-03-111-0/+6
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implentation of `thread_mattr_accessor` is setting differently-named thread variables when defining class and instance writer methods, so the method isn't working as documented: Account.user = "DHH" Account.user # => "DHH" Account.new.user # => nil a = Account.new a.user = "ABC" # => "ABC" a.class.user # => "DHH" At this point `:attr_Account_user` and `:attr_Class_user` thread-local variables have been created. Modify the reader and writer methods to use the class name instead of 'Class'.
* | Merge pull request #23932 from arthurnn/arthurnn/remove_load_pathsArthur Nogueira Neves2016-03-011-7/+0
|\ \ | | | | | | Remove load_paths file
| * | Remove load_paths fileArthur Neves2016-02-271-7/+0
| |/
* | Remove duplicated `test_` prefix [ci skip]Ryuta Kamizono2016-03-021-1/+1
| |
* | Merge pull request #23936 from yui-knk/local_constants_to_be_publicRafael Mendonça França2016-03-011-1/+7
|\ \ | | | | | | | | | Deprecate `Module.local_constants`
| * | Deprecate `Module.local_constants`yui-knk2016-03-011-1/+7
| |/ | | | | | | | | After Ruby 1.9, we can easily get the constants that have been defined locally by `Module.constants(false)`.
* / Publish AS::Executor and AS::Reloader APIsMatthew Draper2016-03-022-0/+161
|/ | | | | | These should allow external code to run blocks of user code to do "work", at a similar unit size to a web request, without needing to get intimate with ActionDipatch.
* Merge pull request #23616 from piotrj/issue_23609_logger_broadcast_silencingRafael Mendonça França2016-02-241-0/+44
|\ | | | | | | Fix logger silencing for broadcasted loggers