diff --git a/lib/internal/Magento/Framework/Console/Cli.php b/lib/internal/Magento/Framework/Console/Cli.php
index 4da186fcf8864f60b088d35aa02e8f9bbf8842c3..c42d7a2ea7263e6017f8a2452baa71372d5dce57 100644
--- a/lib/internal/Magento/Framework/Console/Cli.php
+++ b/lib/internal/Magento/Framework/Console/Cli.php
@@ -9,17 +9,18 @@ use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\Composer\ComposerJsonFinder;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Output\ConsoleOutput;
 use Symfony\Component\Console\Input\ArgvInput;
 use Symfony\Component\Console\Application as SymfonyApplication;
 use Magento\Framework\App\Bootstrap;
 use Magento\Framework\Filesystem\Driver\File;
 use Magento\Framework\Shell\ComplexParameter;
 use Magento\Setup\Console\CompilerPreparation;
-use \Magento\Framework\App\ProductMetadata;
+use Magento\Framework\App\ProductMetadata;
+use Magento\Framework\ObjectManagerInterface;
 
 /**
- * Magento 2 CLI Application. This is the hood for all command line tools supported by Magento
+ * Magento 2 CLI Application.
+ * This is the hood for all command line tools supported by Magento.
  *
  * {@inheritdoc}
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -27,50 +28,55 @@ use \Magento\Framework\App\ProductMetadata;
 class Cli extends SymfonyApplication
 {
     /**
-     * Name of input option
+     * Name of input option.
      */
     const INPUT_KEY_BOOTSTRAP = 'bootstrap';
 
-    /**
-     * Cli exit codes
+    /**#@+
+     * Cli exit codes.
      */
     const RETURN_SUCCESS = 0;
     const RETURN_FAILURE = 1;
+    /**#@-*/
 
-    /** @var \Zend\ServiceManager\ServiceManager */
+    /**
+     * Service Manager.
+     *
+     * @var \Zend\ServiceManager\ServiceManager
+     */
     private $serviceManager;
 
     /**
-     * Initialization exception
+     * Initialization exception.
      *
      * @var \Exception
      */
     private $initException;
 
     /**
-     * @param string $name  application name
-     * @param string $version application version
+     * Constructor.
+     *
+     * @param string $name the application name
+     * @param string $version the application version
+     *
      * @SuppressWarnings(PHPMD.ExitExpression)
      */
     public function __construct($name = 'UNKNOWN', $version = 'UNKNOWN')
     {
         $this->serviceManager = \Zend\Mvc\Application::init(require BP . '/setup/config/application.config.php')
             ->getServiceManager();
-        $generationDirectoryAccess = new GenerationDirectoryAccess($this->serviceManager);
-        if (!$generationDirectoryAccess->check()) {
-            $output = new ConsoleOutput();
-            $output->writeln(
-                '<error>Command line user does not have read and write permissions on var/generation directory.  Please'
-                . ' address this issue before using Magento command line.</error>'
-            );
-            exit(0);
-        }
+
         /**
          * Temporary workaround until the compiler is able to clear the generation directory
          * @todo remove after MAGETWO-44493 resolved
          */
         if (class_exists(CompilerPreparation::class)) {
-            $compilerPreparation = new CompilerPreparation($this->serviceManager, new ArgvInput(), new File());
+            $compilerPreparation = new CompilerPreparation(
+                $this->serviceManager,
+                new ArgvInput(),
+                new File()
+            );
+
             $compilerPreparation->handleCompilerEnvironment();
         }
 
@@ -80,15 +86,13 @@ class Cli extends SymfonyApplication
             $productMetadata    = new ProductMetadata($composerJsonFinder);
             $version = $productMetadata->getVersion();
         }
+
         parent::__construct($name, $version);
     }
 
     /**
-     * Process an error happened during initialization of commands, if any
+     * {@inheritdoc}
      *
-     * @param InputInterface $input
-     * @param OutputInterface $output
-     * @return int
      * @throws \Exception
      */
     public function doRun(InputInterface $input, OutputInterface $output)
@@ -149,10 +153,11 @@ class Cli extends SymfonyApplication
     }
 
     /**
-     * Gets vendor commands
+     * Retrieves vendor commands.
      *
-     * @param \Magento\Framework\ObjectManagerInterface $objectManager
-     * @return array
+     * @param ObjectManagerInterface $objectManager the object manager
+     *
+     * @return array an array with external commands
      */
     protected function getVendorCommands($objectManager)
     {
@@ -165,6 +170,7 @@ class Cli extends SymfonyApplication
                 );
             }
         }
+
         return $commands;
     }
 }
diff --git a/lib/internal/Magento/Framework/Console/Test/Unit/CliTest.php b/lib/internal/Magento/Framework/Console/Test/Unit/CliTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..8e2761f1716160f9c65019354269f6a970090b08
--- /dev/null
+++ b/lib/internal/Magento/Framework/Console/Test/Unit/CliTest.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Console\Test\Unit;
+
+use Magento\Framework\Console\Cli;
+use PHPUnit_Framework_MockObject_MockObject as Mock;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class CliTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Cli
+     */
+    private $model;
+
+    /**
+     * @var InputInterface|Mock
+     */
+    private $inputMock;
+
+    /**
+     * @var OutputInterface|Mock
+     */
+    private $outputMock;
+
+    protected function setUp()
+    {
+        $this->inputMock = $this->getMockBuilder(InputInterface::class)
+            ->getMockForAbstractClass();
+        $this->outputMock = $this->getMockBuilder(OutputInterface::class)
+            ->getMockForAbstractClass();
+
+        $this->model = new Cli();
+    }
+
+    public function testDoRun()
+    {
+        $this->model->doRun(
+            $this->inputMock,
+            $this->outputMock
+        );
+    }
+}