Merge "resourceloader: Use 'enableModuleContentVersion' for startup module"
[lhc/web/wiklou.git] / tests / phpunit / documentation / ReleaseNotesTest.php
1 <?php
2
3 /**
4 * James doesn't like having to manually fix these things.
5 */
6 class ReleaseNotesTest extends MediaWikiTestCase {
7 /**
8 * Verify that at least one Release Notes file exists, have content, and
9 * aren't overly long.
10 *
11 * @group documentation
12 * @coversNothing
13 */
14 public function testReleaseNotesFilesExistAndAreNotMalformed() {
15 global $wgVersion, $IP;
16
17 $notesFiles = glob( "$IP/RELEASE-NOTES-*" );
18
19 $this->assertGreaterThanOrEqual(
20 1,
21 count( $notesFiles ),
22 'Repo has at least one Release Notes file.'
23 );
24
25 $versionParts = explode( '.', explode( '-', $wgVersion )[0] );
26 $this->assertContains(
27 "$IP/RELEASE-NOTES-$versionParts[0].$versionParts[1]",
28 $notesFiles,
29 'Repo has a Release Notes file for the current $wgVersion.'
30 );
31
32 foreach ( $notesFiles as $index => $fileName ) {
33 $file = file( $fileName, FILE_IGNORE_NEW_LINES );
34
35 $this->assertFalse(
36 !$file,
37 "Release Notes file '$fileName' is inaccessible."
38 );
39
40 $lines = count( $file );
41
42 for ( $i = 0; $i < $lines; $i++ ) {
43 $line = $file[$i];
44
45 $this->assertLessThanOrEqual(
46 // FILE_IGNORE_NEW_LINES drops the \n at the EOL, so max length is 80 not 81.
47 80,
48 mb_strlen( $line ),
49 "Release notes file '$fileName' line $i is longer than 80 chars:\n\t'$line'"
50 );
51 }
52 }
53 }
54 }