94 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Test to ensure that readme file present in specified directories
 | 
						|
 */
 | 
						|
namespace Magento\Test\Integrity\Readme;
 | 
						|
 | 
						|
use Magento\Framework\App\Utility\Files;
 | 
						|
 | 
						|
class ReadmeTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    const README_FILENAME = 'README.md';
 | 
						|
 | 
						|
    const BLACKLIST_FILES_PATTERN = '_files/blacklist/*.txt';
 | 
						|
 | 
						|
    const SCAN_LIST_FILE = '_files/scan_list.txt';
 | 
						|
 | 
						|
    /** @var array Blacklisted files and directories */
 | 
						|
    private $blacklist = [];
 | 
						|
 | 
						|
    /** @var array */
 | 
						|
    private $scanList = [];
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->blacklist = $this->getPaths(__DIR__ . '/' . self::BLACKLIST_FILES_PATTERN);
 | 
						|
        $this->scanList = $this->getPaths(__DIR__ . '/' . self::SCAN_LIST_FILE);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testReadmeFiles()
 | 
						|
    {
 | 
						|
        $invoker = new \Magento\Framework\App\Utility\AggregateInvoker($this);
 | 
						|
        $invoker(
 | 
						|
            /**
 | 
						|
             * @param string $dir
 | 
						|
             */
 | 
						|
            function ($dir) {
 | 
						|
                $file = $dir . DIRECTORY_SEPARATOR . self::README_FILENAME;
 | 
						|
                $this->assertFileExists(
 | 
						|
                    $file,
 | 
						|
                    sprintf('File %s not found in %s', self::README_FILENAME, $dir)
 | 
						|
                );
 | 
						|
            },
 | 
						|
            $this->getDirectories()
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    private function getDirectories()
 | 
						|
    {
 | 
						|
        $directories = [];
 | 
						|
        foreach ($this->scanList as $dir) {
 | 
						|
            if (!$this->isInBlacklist($dir)) {
 | 
						|
                $directories[][] = $dir;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        return $directories;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param $path
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    private function isInBlacklist($path)
 | 
						|
    {
 | 
						|
        return in_array($path, $this->blacklist);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get paths basing on the file with patterns
 | 
						|
     *
 | 
						|
     * @param string $patternsFile
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    private function getPaths($patternsFile)
 | 
						|
    {
 | 
						|
        $result = [];
 | 
						|
        $files = Files::init()->readLists($patternsFile);
 | 
						|
        foreach ($files as $file) {
 | 
						|
            if (is_dir($file)) {
 | 
						|
                $result[] = rtrim($file, '/');
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
}
 |