2018-07-03 22:22:09 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* James doesn't like having to manually fix these things.
|
|
|
|
|
*/
|
2019-06-13 23:00:08 +00:00
|
|
|
class ReleaseNotesTest extends MediaWikiTestCase {
|
2018-07-03 22:22:09 +00:00
|
|
|
/**
|
|
|
|
|
* Verify that at least one Release Notes file exists, have content, and
|
|
|
|
|
* aren't overly long.
|
|
|
|
|
*
|
|
|
|
|
* @group documentation
|
|
|
|
|
* @coversNothing
|
|
|
|
|
*/
|
|
|
|
|
public function testReleaseNotesFilesExistAndAreNotMalformed() {
|
|
|
|
|
global $wgVersion, $IP;
|
|
|
|
|
|
|
|
|
|
$notesFiles = glob( "$IP/RELEASE-NOTES-*" );
|
|
|
|
|
|
|
|
|
|
$this->assertGreaterThanOrEqual(
|
|
|
|
|
1,
|
|
|
|
|
count( $notesFiles ),
|
|
|
|
|
'Repo has at least one Release Notes file.'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$versionParts = explode( '.', explode( '-', $wgVersion )[0] );
|
|
|
|
|
$this->assertContains(
|
|
|
|
|
"$IP/RELEASE-NOTES-$versionParts[0].$versionParts[1]",
|
|
|
|
|
$notesFiles,
|
|
|
|
|
'Repo has a Release Notes file for the current $wgVersion.'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
foreach ( $notesFiles as $index => $fileName ) {
|
2018-06-13 19:04:51 +00:00
|
|
|
$this->assertFileLength( "Release Notes", $fileName );
|
|
|
|
|
}
|
2018-07-03 22:22:09 +00:00
|
|
|
|
2018-06-13 19:04:51 +00:00
|
|
|
// Also test the README and similar files
|
2019-03-24 20:08:54 +00:00
|
|
|
$otherFiles = [
|
|
|
|
|
"$IP/COPYING",
|
|
|
|
|
"$IP/FAQ",
|
|
|
|
|
"$IP/HISTORY",
|
|
|
|
|
"$IP/INSTALL",
|
|
|
|
|
"$IP/README",
|
|
|
|
|
"$IP/SECURITY"
|
|
|
|
|
];
|
2018-07-03 22:22:09 +00:00
|
|
|
|
2018-06-13 19:04:51 +00:00
|
|
|
foreach ( $otherFiles as $index => $fileName ) {
|
|
|
|
|
$this->assertFileLength( "Help", $fileName );
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-07-03 22:22:09 +00:00
|
|
|
|
2018-06-13 19:04:51 +00:00
|
|
|
private function assertFileLength( $type, $fileName ) {
|
|
|
|
|
$file = file( $fileName, FILE_IGNORE_NEW_LINES );
|
2018-07-03 22:22:09 +00:00
|
|
|
|
2018-06-13 19:04:51 +00:00
|
|
|
$this->assertFalse(
|
|
|
|
|
!$file,
|
|
|
|
|
"$type file '$fileName' is inaccessible."
|
|
|
|
|
);
|
|
|
|
|
|
2019-03-24 20:47:24 +00:00
|
|
|
foreach ( $file as $i => $line ) {
|
|
|
|
|
$num = $i + 1;
|
2018-06-13 19:04:51 +00:00
|
|
|
$this->assertLessThanOrEqual(
|
|
|
|
|
// FILE_IGNORE_NEW_LINES drops the \n at the EOL, so max length is 80 not 81.
|
|
|
|
|
80,
|
|
|
|
|
mb_strlen( $line ),
|
2019-03-24 20:14:07 +00:00
|
|
|
"$type file '$fileName' line $num, is longer than 80 chars:\n\t'$line'"
|
2018-06-13 19:04:51 +00:00
|
|
|
);
|
2018-07-03 22:22:09 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|