This patch effectively reverted a5bc9f49cd, which
was the correct behavior. If a page were to have its content
model changed, the NULL revision rows would now be interpreted
as the page's new content model instead of the default content
model (which they should be).
This reverts commit 9a6ff0bd82.
Change-Id: I6801d09bd847f477222e503b912005b02a9df045
We currently leave rev_content_model = null if it'S the default, to save space.
When loading a revision, we so far fell back to the per-namespace default content
model if rev_content_model was null, even if page_content_model was null.
This patch changes the fallback from rev_contentModel -> namespace-default-model
to rev_content_model -> page_content_model -> namespace-default-model.
This will prevent errors triggered when chaing a namespace'sdefault content model:
so far, revisions with the old content model would fail to deserialize becaue,
because they were being interpreted according to the changed namespace defrault,
instead of the correct model in page_content_model.
Bug: T128466
Change-Id: I75c60eb129428b0b433480443ab9153cc58cda8f
This reduces the runtime of database-bound tests by about 40%
(on my system, from 4:55 to 2:47; results from Jenkins are
inconclusive).
The basic idea is to call addCoreDBData() only once, and have
a addDBDataOnce() that is called once per test class, not for
every test method lie addDBData() is. Most tests could be
trivially be changed to implement addDBDataOnce() instead of
addDBData(). The ones for which this did not work immediately
were left out for now. A closer look at the tests that still
implement addDBData() may reveal additional potential for
improvement.
TODO: Once this is merged, try to change addDBData() to
addDBDataOnce() where possible in extensions.
Change-Id: Iec4ed4c8419fb4ad87e6710de808863ede9998b7
No uses found in core of Gerrit extensions.
- Revision::revText() (deprecated in 1.17)
- SkinTemplate::jstext() (deprecated in 1.21)
- WikiPage::quickEdit() (deprecated in 1.18)
- WikiPage::useParserCache() (deprecated in 1.18)
- WikiPage::viewUpdates() (deprecated in 1.18)
Change-Id: I9eee23ea3ce381b6b8373da899287bcaea4cead4
Page with id 0 does not exist at the time transaction
is committed to the database.
Unit tests with table constraints enabled
fail with:
1) RevisionStorageTest::testUserWasLastToEdit with data set #0 (3, true)
DBQueryError: A database error has occurred. Did you forget to run
maintenance/update.php after upgrading? See:
https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script
Query: INSERT INTO "unittest_revision"
(rev_id,rev_page,rev_text_id /* more fields */ )
VALUES ('461','0','460' /* more fields */
Function: Revision::insertOn
Error: 23503 ERROR: insert or update on table "unittest_revision"
violates foreign key constraint "ut_revision_rev_page_fkey"
DETAIL: Key (rev_page)=(0) is not present in table "unittest_page".
/usr/home/saper/test/mytest/includes/db/Database.php:1111
/usr/home/saper/test/mytest/includes/db/DatabasePostgres.php:511
/usr/home/saper/test/mytest/includes/db/Database.php:1077
/usr/home/saper/test/mytest/includes/db/DatabasePostgres.php:871
/usr/home/saper/test/mytest/includes/Revision.php:1422
/usr/home/saper/test/mytest/tests/phpunit/includes/RevisionStorageTest.php:488
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiTestCase.php:123
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiPHPUnitCommand.php:80
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiPHPUnitCommand.php:64
/usr/home/saper/test/mytest/tests/phpunit/phpunit.php:115
Change-Id: I653a8bccdaa748a9bea453cd1dbf609a30e1ff6f
These are protected in the parent MediaWikiTestCase and
PHPUnit_Framework_TestCase. No good reason to make them public.
Change-Id: I45ecc0e4209f0c3b27e63a550112e4e0ddf6e530
Fix almost all occurences of the following sniffs:
Generic.CodeAnalysis.UselessOverridingMethod.Found
Generic.Formatting.NoSpaceAfterCast.SpaceFound
Generic.Functions.FunctionCallArgumentSpacing.SpaceBeforeComma
Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine
Generic.PHP.LowerCaseConstant.Found
PSR2.Classes.PropertyDeclaration.ScopeMissing
PSR2.Files.EndFileNewline.TooMany
PSR2.Methods.MethodDeclaration.StaticBeforeVisibility
Change-Id: I96aacef5bafe5a2bca659744fba1380999cfc37d
This change fixes fatal errors ocurring when Revision::loadText
returns false because of a failure to load the text blob.
Revision::getContent() should simply return null in such a case.
Change-Id: I1e13de14ff15b124b5a2e07155d368595a16fda7
Some class extending MediaWikiTestCase did not call its setUp method. We
most probably always want to do it since MediaWikiTestCase::setUp() does
garbage collection and might do more in the future.
Change-Id: I68dde370a62c8f4a779836ca0c4ad06844fdc916
This introduces the ContentHandler facility into MediaWiki,
see docs/contenthandler.txt.
For convenient review, a squashed version is available at
https://gerrit.wikimedia.org/r/27191
The ContentHandler facility is a major building block of the Wikidata project.
It has been discussed repeatedly on wikitech-l.
Change-Id: I3804e2d5f6f59e6a39db80744bdf61bfe8c14f98
This commit depends on the introduction of
MediaWikiTestCase::setMwGlobals in change Iccf6ea81f4.
Various tests already set their globals, but forgot to restore
them afterwards, or forgot to call the parent setUp, tearDown...
Either way they won't have to anymore with setMwGlobals.
Consistent use of function characteristics:
* protected function setUp
* protected function tearDown
* public static function (provide..)
(Matching the function signature with PHPUnit/Framework/TestCase.php)
Replaces:
* public function (setUp|tearDown)\(
* protected function $1(
* \tfunction (setUp|tearDown)\(
* \tprotected function $1(
* \tfunction (data|provide)\(
* \tpublic static function $1\(
Also renamed a few "data#", "provider#" and "provides#" functions
to "provide#" for consistency. This also removes confusion where
the /media tests had a few private methods called dataFile(),
which were sometimes expected to be data providers.
Fixes:
TimestampTest often failed due to a previous test setting a
different language (it tests "1 hour ago" so need to make sure
it is set to English).
MWNamespaceTest became a lot cleaner now that it executes with
a known context. Though the now-redundant code that was removed
didn't work anyway because wgContentNamespaces isn't keyed by
namespace id, it had them was values...
FileBackendTest:
* Fixed: "PHP Fatal: Using $this when not in object context"
HttpTest
* Added comment about:
"PHP Fatal: Call to protected MWHttpRequest::__construct()"
(too much unrelated code to fix in this commit)
ExternalStoreTest
* Add an assertTrue as well, without it the test is useless
because regardless of whether wgExternalStores is true or false
it only uses it if it is an array.
Change-Id: I9d2b148e57bada64afeb7d5a99bec0e58f8e1561
Make userWasLastToEdit a static method in the Revision class, so it can be
reused by extensions, etc.
Change-Id: Ib44423c3544dabab3be7fe6eb675315f2480838e
a) when testing deprecated functions, use $this->hideDeprecated() to
suppress warnings.
b) use doEditContent() instead of doEdit()
Change-Id: Ifa9e0ef373ed72ef7d4a3c2dd558483af4a3fd55
Representing content_model and content_format as integers in the
database was suggested by Asher mainly to save space.
This change entails some refactoring and renaming, but no big
change in logic.
This is a follow-up to I6934d03e (no 6414).
Declare tables in $this->tablesUsed to allow for database clenaup,
as Aaron suggested.
Change-Id: Iac05b0428b335879729f6d3b993eac0d3151429c