aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Set the Rails environment from an environment variableAaron Patterson2017-12-082-5/+2
| | | | | | | | | Option parsing happens too late to have any impact on the Rails environment. Rails accesses the environment name and memoizes it too early in the boot process for a commandline option to have any impact on the database connection, so we'll change this test to set the environment from an environment variable (and ensure it still works when running tests with `ruby`)
* Revert "remove unnecessary `RAILS_ENV` setting"Aaron Patterson2017-12-082-0/+4
| | | | This reverts commit 9a80f52541ed2c93ebef02909ecab3aaf9127150.
* Add failing test for wrong database connectionAaron Patterson2017-12-081-0/+17
| | | | | | When tests are run with just `ruby`, the RAILS_ENV is set to `development` too early, and we connect to the development database rather than the test database.
* Fix Rails environment when running tests with RubyAaron Patterson2017-12-063-3/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | I frequently run tests with `ruby`, not with a runner like `rake` or `rails`. When running the test with just `ruby` the `RAILS_ENV` environment variable did not get set to "test", and this would cause the tests to fail (and even mutate the development database!) This commit adds integration tests for running tests with just `ruby` and ensures the environment gets defaulted to "test". I also added a test to ensure that passing an environment to `-e` actually works (and fixed that case too). An interesting / annoying thing is that Minitest picks up it's plugins by asking RubyGems for a list of files: https://github.com/seattlerb/minitest/blob/ca6a71ca901016db09a5ad466b4adea4b52a504a/lib/minitest.rb#L92-L100 This means that RubyGems needs to somehow know about the file before it can return it to Minitest. Since we are not packaging Rails as a Gem before running the integration tests on it (duh, why would you do that?), RubyGems doesn't know about the file, so it can't tell Minitest, so Minitest doesn't automatically require it. This means I had to manually require and insert the plugin in our integration test. I've left comments about that in the test as well. Ugh.
* Merge pull request #31350 from ptolts/correct_test_spellingYuji Yaginuma2017-12-071-1/+1
|\ | | | | Correct routing test spelling mistake.
| * Correct routing test spelling mistake.Philip Tolton2017-12-061-1/+1
|/
* Merge pull request #31344 from kamipo/use_string_instead_of_textRyuta Kamizono2017-12-072-32/+43
|\ | | | | Use `:string` instead of `:text` for `JsonAttributeTest`
| * Address `ActiveRecord::NotNullViolation: OCIError: ORA-01400` for Oracle ↵Yasuo Honda2017-12-071-6/+14
| | | | | | | | database which requires primary key value mentioned in insert statement explicitly.
| * Use `:string` instead of `:text` for `JsonAttributeTest`Ryuta Kamizono2017-12-062-5/+10
| | | | | | | | Since CLOB data type has many limitations in Oracle SELECT WHERE clause.
| * Revert "Merge pull request #31341 from yahonda/skip_json_attribute_test"Ryuta Kamizono2017-12-061-24/+22
| | | | | | | | | | This reverts commit 23226d04f921b79f0077ba38c5a5a923b6d43f89, reversing changes made to 7544cf7603959f25100b21f70b5e70354bed7e45.
* | Merge pull request #27790 from domcleal/ac-params-each-yieldsRafael França2017-12-062-1/+17
|\ \ | | | | | | Yield array from AC::Parameters#each for block with one arg
| * | Yield array from AC::Parameters#each for block with one argDominic Cleal2017-12-062-1/+17
|/ / | | | | | | Matches Hash#each behaviour as used in Rails 4.
* | Merge pull request #31345 from yhirano55/add_assert_in_epsilon_to_testing_guideEileen M. Uchitelle2017-12-061-0/+2
|\ \ | |/ |/| Add `assert_in_epsilon` to Testing guide [ci skip]
| * Add `assert_in_epsilon` to Testing guide [ci skip]Yoshiyuki Hirano2017-12-061-0/+2
| | | | | | | | | | | | | | | | | | I found `assert_in_epsilon` is not be in "2.4 Available Assertions". So I Added them. MiniTest::Assertions#assert_in_epsilon: https://github.com/seattlerb/minitest/blob/master/lib/minitest/assertions.rb#L204-L210
* | Merge pull request #31341 from yahonda/skip_json_attribute_testSean Griffin2017-12-051-22/+24
|\ \ | | | | | | Execute `JsonAttributeTest` only if `supports_json?` returns `true`
| * | Execute `JsonAttributeTest` only if `supports_json?` returns `true`Yasuo Honda2017-12-051-22/+24
| | | | | | | | | | | | | | | Oracle enhanced adapter does not fully support JSON datatype then `supports_json?` returns `false`. I wanted to skip known failures and errors when tested with Oracle enhanced adapter.
* | | Merge pull request #31339 from lostapathy/speedup_travisGeorge Claghorn2017-12-051-4/+1
|\ \ \ | | | | | | | | Speed up travis by only installing packages when needed
| * | | only install ffmpeg and mupdf on activestorage buildsJoe Francis2017-12-051-4/+1
| | | | | | | | | | | | | | | | These are needed when GEM=ast, thanks @georgeclaghorn
* | | | Merge pull request #31335 from ttanimichi/more-tests-for-webpack-optionGuillermo Iguaran2017-12-051-3/+24
|\ \ \ \ | |_|/ / |/| | | Add more tests for the `--webpack` option
| * | | Add more tests for the `--webpack` optionTsukuru Tanimichi2017-12-051-0/+19
| | | |
| * | | Modify `test_webpack_option`Tsukuru Tanimichi2017-12-051-3/+5
| | | |
* | | | Add missing requireyuuji.yaginuma2017-12-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow up of 3c442b6df91e291ebbf17f37444414bf5f10fbe6 Without this require, it will fail when run CSP test alone. Ref: https://travis-ci.org/rails/rails/jobs/311715758#L2976
* | | | Merge pull request #31334 from yhirano55/fix_example_code_in_active_jobRyuta Kamizono2017-12-051-4/+10
|\ \ \ \ | | | | | | | | | | Fix example code in ActiveJob::Core [ci skip]
| * | | | Fix example code in ActiveJob::Core [ci skip]Yoshiyuki Hirano2017-12-051-4/+10
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1) It seems that it raise error on example code in `ActiveJob::Core`. Before: ```ruby class DeliverWebhookJob < ActiveJob::Base def serialize super.merge('attempt_number' => (@attempt_number || 0) + 1) end def deserialize(job_data) super @attempt_number = job_data['attempt_number'] end rescue_from(Timeout::Error) do |exception| raise exception if @attempt_number > 5 retry_job(wait: 10) end def perform raise Timeout::Error end end ``` Then it run `DeliverWebhookJob.perform_now` in `rails console`. And raise error: NoMethodError: undefined method `>' for nil:NilClass from /app/jobs/deliver_webhook_job.rb:12:in `block in <class:DeliverWebhookJob>' So I thought it's necessary to fix it. After: ```ruby class DeliverWebhookJob < ActiveJob::Base attr_writer :attempt_number def attempt_number @attempt_number ||= 0 end def serialize super.merge('attempt_number' => attempt_number + 1) end def deserialize(job_data) super self.attempt_number = job_data['attempt_number'] end rescue_from(Timeout::Error) do |exception| raise exception if attempt_number > 5 retry_job(wait: 10) end def perform raise Timeout::Error end end ``` Then it run `DeliverWebhookJob.perform_now` in `rails console`. And it does'nt raise error NoMethodError. 2) Use `Timeout::Error` instead of `TimeoutError` (`TimeoutError` is deprecated).
* / / / Fix CSP copy boolean directives (#31326)Simon Dawson2017-12-052-5/+10
|/ / / | | | | | | Use Object#deep_dup to safely duplicate policy values
* | | Merge pull request #31279 from ttanimichi/tests-for-webpack-optionGuillermo Iguaran2017-12-041-0/+14
|\ \ \ | |/ / |/| | Add tests for the `--webpack` option
| * | Add tests for the `--webpack` optionTsukuru Tanimichi2017-12-041-0/+14
| | | | | | | | | | | | | | | We probably don't have any tests for the `--webpack` option. related: #27288
* | | `current_version` should catch `NoDatabaseError` from `get_all_versions`Ryuta Kamizono2017-12-041-12/+5
| | | | | | | | | | | | | | | `get_all_versions` doesn't use passed `connection`. So it should be caught `NoDatabaseError` from `SchemaMigration.table_exists?`.
* | | Merge pull request #31322 from bogdanvlviv/update-active_record_querying-guideSean Griffin2017-12-031-9/+9
|\ \ \ | | | | | | | | Update "Active Record Query Interface" guide [ci skip]
| * | | Update "Active Record Query Interface" guide [ci skip]bogdanvlviv2017-12-041-9/+9
| | | | | | | | | | | | | | | | | | | | - Add missing `LIMIT 1` for some queries - Make some examples of query more readable
* | | | Embrace the instantiation in loving parens <3Kasper Timm Hansen2017-12-031-1/+2
| | | |
* | | | Merge pull request #31146 from ↵Kasper Timm Hansen2017-12-031-41/+83
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | mikeycgto/actiondispatch-cookie-store-test-updates Update cookie_store_test to use encrypted cookies
| * | | | Update cookie_store_test to use encrypted cookiesMichael Coyne2017-11-271-41/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This now modernizes these tests to use encrypted cookies instead of using secret_token HMACs. This commit also adds a tests to ensure session cookies with :expires_after set are invalidated and no longer accepted when the time has elapsed.
* | | | | Merge pull request #31311 from ↵Kasper Timm Hansen2017-12-034-3/+43
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | y-yagi/ignore_no_database_error_when_loading_schema_cache Ignore `NoDatabaseError` when loading schema cache
| * | | | | Make `Migrator.current_version` work without a current databaseyuuji.yaginuma2017-12-034-3/+43
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is necessary in order to make the processing dependent on `Migrator.current_version` work even without database. Context: https://github.com/rails/rails/pull/31135#issuecomment-348404326
* | | | | Fix instrumention name: delete_prefixed like the others.Kasper Timm Hansen2017-12-031-1/+1
| | | | |
* | | | | SQLite3 valid integer value should be 8 bytes (64-bit signed integer) (#28379)Ryuta Kamizono2017-12-032-5/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a regression since Rails 4.2. SQLite3 integer is stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value. Assuming default valid value as 4 bytes caused that actual valid value in INTEGER storage class cannot be stored and existing value cannot be found. https://www.sqlite.org/datatype3.html We should allow valid value in INTEGER storage class in SQLite3 to fix the regression. Fixes #22594.
* | | | | Emulate JSON types for SQLite3 adapter (#29664)Ryuta Kamizono2017-12-036-13/+9
| | | | | | | | | | | | | | | | | | | | | | | | | Actually SQLite3 doesn't have JSON storage class (so it is stored as a TEXT like Date and Time). But emulating JSON types is convinient for making database agnostic migrations.
* | | | | `change_column_default` should be executed after type changingRyuta Kamizono2017-12-033-16/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If do not execute a type changing first, filling in default value may be failed. ``` % ARCONN=postgresql be ruby -w -Itest test/cases/migration/compatibility_test.rb -n test_legacy_change_column_with_null_executes_update Using postgresql Run options: -n test_legacy_change_column_with_null_executes_update --seed 20459 E Error: ActiveRecord::Migration::CompatibilityTest#test_legacy_change_column_with_null_executes_update: StandardError: An error has occurred, this and all later migrations canceled: PG::StringDataRightTruncation: ERROR: value too long for type character varying(5) : UPDATE "testings" SET "foo"='foobar' WHERE "foo" IS NULL ```
* | | | | Purge variants with their blobsGeorge Claghorn2017-12-0210-31/+107
| | | | |
* | | | | Merge pull request #31314 from claudiob/fix-typoYuji Yaginuma2017-12-031-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Fix typo in test error message
| * | | | | Fix typo in test error messageclaudiob2017-12-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the current code, a failing test shows this error, which is missing the number of times called and has two periods at the end. ``` /railties$ be ruby -Itest test/generators/app_generator_test.rb -n test_active_storage_install Failure: AppGeneratorTest#test_active_storage_install [test/generators/app_generator_test.rb:313]: active_storage:install expected to be called once, but was called times.. Expected: 1 Actual: 2 ``` After the fix, the error message looks correct: ``` /railties$ be ruby -Itest test/generators/app_generator_test.rb -n test_active_storage_install Failure: AppGeneratorTest#test_active_storage_install [test/generators/app_generator_test.rb:313]: active_storage:install expected to be called once, but was called 2 times. Expected: 1 Actual: 2 ```
* | | | | | Fix `s/klass.connection/connection/`Ryuta Kamizono2017-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | `klass` has removed in 5358f2b67bd6fb12d708527a4a70dcab65513c5e.
* | | | | | Fix `test_add_column_with_timestamp_type` failureRyuta Kamizono2017-12-032-7/+8
| |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This test failed due to dirty schema cache. It is needed to call `clear_cache!` when using same named table with different definition. https://travis-ci.org/rails/rails/jobs/310627767#L769-L772
* | | | | Extract duplicated index column options normalization as ↵Ryuta Kamizono2017-12-035-46/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `options_for_index_columns` And placed `add_options_for_index_columns` in `schema_statements.rb` consistently to ease to find related code.
* | | | | Fix warning: assigned but unused variable - tRyuta Kamizono2017-12-031-1/+1
| | | | |
* | | | | Refactor `length`, `order`, and `opclass` index options dumpingRyuta Kamizono2017-12-039-33/+67
|/ / / /
* | | | Merge pull request #31230 from dinahshi/postgresql_extract_sqlMatthew Draper2017-12-036-61/+107
|\ \ \ \ | |_|_|/ |/| | | Extract sql fragment generators from PostgreSQL adapter
| * | | Extract sql fragment generators for alter table from PostgreSQL adapterDinah Shi2017-12-026-61/+107
| | | |
* | | | Merge pull request #31312 from ↵Yuji Yaginuma2017-12-021-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | willnet/add-a-missing-space-before-closing-curly-braces [ci skip] Add a missing space before closing curly braces