Rename FirejailCommandIntegrationTest to match class name
authorKunal Mehta <legoktm@member.fsf.org>
Wed, 30 Jan 2019 07:56:46 +0000 (23:56 -0800)
committerKunal Mehta <legoktm@member.fsf.org>
Wed, 30 Jan 2019 07:57:12 +0000 (23:57 -0800)
Change-Id: I581c0d95c38e6d22ab19d68e58e2f48c98b2379b

tests/integration/includes/shell/FirejailCommandIntegrationTest.php [new file with mode: 0644]
tests/integration/includes/shell/FirejailCommandTest.php [deleted file]

diff --git a/tests/integration/includes/shell/FirejailCommandIntegrationTest.php b/tests/integration/includes/shell/FirejailCommandIntegrationTest.php
new file mode 100644 (file)
index 0000000..4730005
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+use MediaWiki\Shell\FirejailCommand;
+use MediaWiki\Shell\Shell;
+
+/**
+ * Integration tests to ensure that firejail actually prevents execution.
+ * Meant to run on vagrant, although will probably work on other setups
+ * as long as firejail and sudo has similar config.
+ *
+ * @group large
+ * @group Shell
+ * @covers FirejailCommand
+ */
+class FirejailCommandIntegrationTest extends PHPUnit\Framework\TestCase {
+
+       public function setUp() {
+               parent::setUp();
+               if ( Shell::isDisabled() ) {
+                       $this->markTestSkipped( 'shelling out is disabled' );
+               } elseif ( Shell::command( 'which', 'firejail' )->execute()->getExitCode() ) {
+                       $this->markTestSkipped( 'firejail not installed' );
+               } elseif ( wfIsWindows() ) {
+                       $this->markTestSkipped( 'test supports POSIX environments only' );
+               }
+       }
+
+       public function testSanity() {
+               // Make sure that firejail works at all.
+               $command = new FirejailCommand( 'firejail' );
+               $command
+                       ->unsafeParams( 'ls .' )
+                       ->restrict( Shell::RESTRICT_DEFAULT );
+               $result = $command->execute();
+               $this->assertSame( 0, $result->getExitCode() );
+       }
+
+       /**
+        * @coversNothing
+        * @dataProvider provideExecute
+        */
+       public function testExecute( $testCommand, $flag ) {
+               if ( preg_match( '/^sudo /', $testCommand ) ) {
+                       if ( Shell::command( 'sudo', '-n', 'ls', '/' )->execute()->getExitCode() ) {
+                               $this->markTestSkipped( 'need passwordless sudo' );
+                       }
+               }
+
+               $command = new FirejailCommand( 'firejail' );
+               $command
+                       ->unsafeParams( $testCommand )
+                       // If we don't restrict at all, firejail won't be invoked,
+                       // so the test will give a false positive if firejail breaks
+                       // the command for some non-flag-related reason. Instead,
+                       // set some flag that won't get in the way.
+                       ->restrict( $flag === Shell::NO_NETWORK ? Shell::PRIVATE_DEV : Shell::NO_NETWORK );
+               $result = $command->execute();
+               $this->assertSame( 0, $result->getExitCode(), 'sanity check' );
+
+               $command = new FirejailCommand( 'firejail' );
+               $command
+                       ->unsafeParams( $testCommand )
+                       ->restrict( $flag );
+               $result = $command->execute();
+               $this->assertNotSame( 0, $result->getExitCode(), 'real check' );
+       }
+
+       public function provideExecute() {
+               global $IP;
+               return [
+                       [ 'sudo -n ls /', Shell::NO_ROOT ],
+                       [ 'sudo -n ls /', Shell::SECCOMP ], // not a great test but seems to work
+                       [ 'ls /dev/cpu', Shell::PRIVATE_DEV ],
+                       [ 'curl -fsSo /dev/null https://wikipedia.org/', Shell::NO_NETWORK ],
+                       [ 'exec ls /', Shell::NO_EXECVE ],
+                       [ "cat $IP/LocalSettings.php", Shell::NO_LOCALSETTINGS ],
+               ];
+       }
+
+}
diff --git a/tests/integration/includes/shell/FirejailCommandTest.php b/tests/integration/includes/shell/FirejailCommandTest.php
deleted file mode 100644 (file)
index 4730005..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-use MediaWiki\Shell\FirejailCommand;
-use MediaWiki\Shell\Shell;
-
-/**
- * Integration tests to ensure that firejail actually prevents execution.
- * Meant to run on vagrant, although will probably work on other setups
- * as long as firejail and sudo has similar config.
- *
- * @group large
- * @group Shell
- * @covers FirejailCommand
- */
-class FirejailCommandIntegrationTest extends PHPUnit\Framework\TestCase {
-
-       public function setUp() {
-               parent::setUp();
-               if ( Shell::isDisabled() ) {
-                       $this->markTestSkipped( 'shelling out is disabled' );
-               } elseif ( Shell::command( 'which', 'firejail' )->execute()->getExitCode() ) {
-                       $this->markTestSkipped( 'firejail not installed' );
-               } elseif ( wfIsWindows() ) {
-                       $this->markTestSkipped( 'test supports POSIX environments only' );
-               }
-       }
-
-       public function testSanity() {
-               // Make sure that firejail works at all.
-               $command = new FirejailCommand( 'firejail' );
-               $command
-                       ->unsafeParams( 'ls .' )
-                       ->restrict( Shell::RESTRICT_DEFAULT );
-               $result = $command->execute();
-               $this->assertSame( 0, $result->getExitCode() );
-       }
-
-       /**
-        * @coversNothing
-        * @dataProvider provideExecute
-        */
-       public function testExecute( $testCommand, $flag ) {
-               if ( preg_match( '/^sudo /', $testCommand ) ) {
-                       if ( Shell::command( 'sudo', '-n', 'ls', '/' )->execute()->getExitCode() ) {
-                               $this->markTestSkipped( 'need passwordless sudo' );
-                       }
-               }
-
-               $command = new FirejailCommand( 'firejail' );
-               $command
-                       ->unsafeParams( $testCommand )
-                       // If we don't restrict at all, firejail won't be invoked,
-                       // so the test will give a false positive if firejail breaks
-                       // the command for some non-flag-related reason. Instead,
-                       // set some flag that won't get in the way.
-                       ->restrict( $flag === Shell::NO_NETWORK ? Shell::PRIVATE_DEV : Shell::NO_NETWORK );
-               $result = $command->execute();
-               $this->assertSame( 0, $result->getExitCode(), 'sanity check' );
-
-               $command = new FirejailCommand( 'firejail' );
-               $command
-                       ->unsafeParams( $testCommand )
-                       ->restrict( $flag );
-               $result = $command->execute();
-               $this->assertNotSame( 0, $result->getExitCode(), 'real check' );
-       }
-
-       public function provideExecute() {
-               global $IP;
-               return [
-                       [ 'sudo -n ls /', Shell::NO_ROOT ],
-                       [ 'sudo -n ls /', Shell::SECCOMP ], // not a great test but seems to work
-                       [ 'ls /dev/cpu', Shell::PRIVATE_DEV ],
-                       [ 'curl -fsSo /dev/null https://wikipedia.org/', Shell::NO_NETWORK ],
-                       [ 'exec ls /', Shell::NO_EXECVE ],
-                       [ "cat $IP/LocalSettings.php", Shell::NO_LOCALSETTINGS ],
-               ];
-       }
-
-}