174 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| namespace Consolidation\SiteProcess;
 | |
| 
 | |
| use PHPUnit\Framework\TestCase;
 | |
| use Consolidation\SiteProcess\Util\ArgumentProcessor;
 | |
| use Consolidation\SiteAlias\SiteAlias;
 | |
| use Consolidation\SiteProcess\Util\Escape;
 | |
| 
 | |
| class EscapeTest extends TestCase
 | |
| {
 | |
|     const DEFAULT_SITE_ALIAS = ['host' => 'example.com', ];
 | |
|     const LINUX_SITE_ALIAS = ['host' => 'example.com', 'os' => 'Linux'];
 | |
|     const WINDOWS_SITE_ALIAS = ['host' => 'example.com', 'os' => 'WIN'];
 | |
| 
 | |
|     /**
 | |
|      * Data provider for testIsWindows.
 | |
|      */
 | |
|     public function isWindowsTestValues()
 | |
|     {
 | |
|         return [
 | |
|             [
 | |
|                 'Linux',
 | |
|                 false,
 | |
|                 static::DEFAULT_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 'Linux',
 | |
|                 false,
 | |
|                 static::LINUX_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 'WIN',
 | |
|                 true,
 | |
|                 static::WINDOWS_SITE_ALIAS,
 | |
|             ],
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Test the isWindows method.
 | |
|      *
 | |
|      * @dataProvider isWindowsTestValues
 | |
|      */
 | |
|     public function testIsWindows(
 | |
|         $expected,
 | |
|         $expectToBeWindows,
 | |
|         $siteAliasData)
 | |
|     {
 | |
|         $siteAlias = new SiteAlias($siteAliasData, '@alias.dev');
 | |
|         $actual = $siteAlias->os();
 | |
|         $this->assertEquals($expected, $actual);
 | |
|         $actuallyIsWindows = Escape::isWindows($siteAlias->os());
 | |
|         $this->assertEquals($expectToBeWindows, $actuallyIsWindows);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Data provider for testEscapeForSite.
 | |
|      */
 | |
|     public function escapeForSiteTestValues()
 | |
|     {
 | |
|         return [
 | |
|             [
 | |
|                 'foo',
 | |
|                 'foo',
 | |
|                 static::DEFAULT_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 'foo',
 | |
|                 'foo',
 | |
|                 static::LINUX_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 'foo',
 | |
|                 'foo',
 | |
|                 static::WINDOWS_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 "'foo bar'",
 | |
|                 'foo bar',
 | |
|                 static::DEFAULT_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 "'foo bar'",
 | |
|                 'foo bar',
 | |
|                 static::LINUX_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 '"foo bar"',
 | |
|                 'foo bar',
 | |
|                 static::WINDOWS_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 "'don'\\''t forget'",
 | |
|                 "don't forget",
 | |
|                 static::DEFAULT_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 "'don'\\''t forget'",
 | |
|                 "don't forget",
 | |
|                 static::LINUX_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 '"don\'t forget"',
 | |
|                 "don't forget",
 | |
|                 static::WINDOWS_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 "'I'\''ll try the \"easy\" fix.'",
 | |
|                 "I'll try the \"easy\" fix.",
 | |
|                 static::DEFAULT_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 "'I'\''ll try the \"easy\" fix.'",
 | |
|                 "I'll try the \"easy\" fix.",
 | |
|                 static::LINUX_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 '"I\'ll try the ""easy"" fix."',
 | |
|                 "I'll try the \"easy\" fix.",
 | |
|                 static::WINDOWS_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 "'a b'",
 | |
|                 "a\tb",
 | |
|                 static::DEFAULT_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 "'a b'",
 | |
|                 "a\tb",
 | |
|                 static::LINUX_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|             [
 | |
|                 '"a b"',
 | |
|                 "a\tb",
 | |
|                 static::WINDOWS_SITE_ALIAS,
 | |
|             ],
 | |
| 
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Test the forSite method.
 | |
|      *
 | |
|      * @dataProvider escapeForSiteTestValues
 | |
|      */
 | |
|     public function testEscapeForSite(
 | |
|         $expected,
 | |
|         $arg,
 | |
|         $siteAliasData)
 | |
|     {
 | |
|         $siteAlias = new SiteAlias($siteAliasData, '@alias.dev');
 | |
| 
 | |
|         $actual = Escape::forSite($siteAlias, $arg);
 | |
|         $this->assertEquals($expected, $actual);
 | |
|     }
 | |
| }
 |