+++ /dev/null
-<?php
-
-/*
- * This file is part of the Behat.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Behat\Gherkin\Suite\Setup;
-
-use Behat\Testwork\Filesystem\FilesystemLogger;
-use Behat\Testwork\Suite\Setup\SuiteSetup;
-use Behat\Testwork\Suite\Suite;
-
-/**
- * Sets up gherkin suite in the filesystem (creates feature folders).
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-final class SuiteWithPathsSetup implements SuiteSetup
-{
- /**
- * @var string
- */
- private $basePath;
- /**
- * @var null|FilesystemLogger
- */
- private $logger;
-
- /**
- * Initializes setup.
- *
- * @param string $basePath
- * @param null|FilesystemLogger $logger
- */
- public function __construct($basePath, FilesystemLogger $logger = null)
- {
- $this->basePath = $basePath;
- $this->logger = $logger;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsSuite(Suite $suite)
- {
- return $suite->hasSetting('paths') && is_array($suite->getSetting('paths'));
- }
-
- /**
- * {@inheritdoc}
- */
- public function setupSuite(Suite $suite)
- {
- foreach ($suite->getSetting('paths') as $locator) {
- if (0 !== strpos($locator, '@') && !is_dir($path = $this->locatePath($locator))) {
- $this->createFeatureDirectory($path);
- }
- }
- }
-
- /**
- * Creates feature directory.
- *
- * @param string $path
- */
- private function createFeatureDirectory($path)
- {
- mkdir($path, 0777, true);
-
- if ($this->logger) {
- $this->logger->directoryCreated($path, 'place your *.feature files here');
- }
- }
-
- /**
- * Locates path from a relative one.
- *
- * @param string $path
- *
- * @return string
- */
- private function locatePath($path)
- {
- if ($this->isAbsolutePath($path)) {
- return $path;
- }
-
- return $this->basePath . DIRECTORY_SEPARATOR . $path;
- }
-
- /**
- * Returns whether the file path is an absolute path.
- *
- * @param string $file A file path
- *
- * @return Boolean
- */
- private function isAbsolutePath($file)
- {
- if ($file[0] == '/' || $file[0] == '\\'
- || (strlen($file) > 3 && ctype_alpha($file[0])
- && $file[1] == ':'
- && ($file[2] == '\\' || $file[2] == '/')
- )
- || null !== parse_url($file, PHP_URL_SCHEME)
- ) {
- return true;
- }
-
- return false;
- }
-}