@@ -70,17 +70,22 @@ private static function getChangedFilesBaseDir()
70
70
* @param array $fileTypes
71
71
* @param string $changedFilesBaseDir
72
72
* @param string $baseFilesFolder
73
+ * @param string $whitelistFile
73
74
* @return array
74
75
*/
75
- public static function getWhitelist ($ fileTypes = ['php ' ], $ changedFilesBaseDir = '' , $ baseFilesFolder = '' )
76
- {
76
+ public static function getWhitelist (
77
+ $ fileTypes = ['php ' ],
78
+ $ changedFilesBaseDir = '' ,
79
+ $ baseFilesFolder = '' ,
80
+ $ whitelistFile = '/_files/whitelist/common.txt '
81
+ ) {
77
82
$ changedFiles = self ::getChangedFilesList ($ changedFilesBaseDir );
78
83
if (empty ($ changedFiles )) {
79
84
return [];
80
85
}
81
86
82
87
$ globPatternsFolder = ('' !== $ baseFilesFolder ) ? $ baseFilesFolder : self ::getBaseFilesFolder ();
83
- $ directoriesToCheck = Files::init ()->readLists ($ globPatternsFolder . ' /_files/whitelist/common.txt ' );
88
+ $ directoriesToCheck = Files::init ()->readLists ($ globPatternsFolder . $ whitelistFile );
84
89
$ targetFiles = self ::filterFiles ($ changedFiles , $ fileTypes , $ directoriesToCheck );
85
90
86
91
return $ targetFiles ;
@@ -266,4 +271,29 @@ public function testCopyPaste()
266
271
"PHP Copy/Paste Detector has found error(s): " . PHP_EOL . $ output
267
272
);
268
273
}
274
+
275
+ /**
276
+ * Tests whitelisted files for strict type declarations.
277
+ */
278
+ public function testStrictTypes ()
279
+ {
280
+ $ toBeTestedFiles = array_diff (
281
+ self ::getWhitelist (['php ' ], '' , '' , '/_files/whitelist/strict_type.txt ' ),
282
+ Files::init ()->readLists (self ::getBaseFilesFolder () . '/_files/blacklist/strict_type.txt ' )
283
+ );
284
+
285
+ $ filesMissingStrictTyping = [];
286
+ foreach ($ toBeTestedFiles as $ fileName ) {
287
+ $ file = file_get_contents ($ fileName );
288
+ if (strstr ($ file , 'strict_types=1 ' ) === false ) {
289
+ $ filesMissingStrictTyping [] = $ fileName ;
290
+ }
291
+ }
292
+
293
+ $ this ->assertEquals (
294
+ 0 ,
295
+ count ($ filesMissingStrictTyping ),
296
+ "Following files are missing strict type declaration: " . PHP_EOL . implode (PHP_EOL , $ filesMissingStrictTyping )
297
+ );
298
+ }
269
299
}
0 commit comments