Skip to content

Commit

Permalink
Update Core with changes to support restructure (#922)
Browse files Browse the repository at this point in the history
* Add exclude filter

* update scanner, add fixture

* Fix travis errors

* Fix snippet test
  • Loading branch information
michaelbausor authored and dwsupplee committed Mar 2, 2018
1 parent c2de26d commit 35b9557
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 14 deletions.
55 changes: 55 additions & 0 deletions src/Core/Testing/Snippet/Coverage/ExcludeFilter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php
/**
* Copyright 2018 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

namespace Google\Cloud\Core\Testing\Snippet\Coverage;

use FilterIterator;
use Iterator;

/**
* ExcludeFilter can be used to exclude directories from an iterable list
*/
class ExcludeFilter extends FilterIterator
{
private $excludeDirs;

/**
* ExcludeFilter constructor.
* @param Iterator $iterator
* @param array $excludeDirs
*/
public function __construct(Iterator $iterator, array $excludeDirs)
{
parent::__construct($iterator);
$this->excludeDirs = $excludeDirs;
}

/**
* @return bool
*/
public function accept()
{
// Accept the current item if we can recurse into it
// or it is a value starting with "test"
foreach ($this->excludeDirs as $excludeDir) {
if (strpos($this->current(), $excludeDir) !== false) {
return false;
}
}
return true;
}
}
29 changes: 17 additions & 12 deletions src/Core/Testing/Snippet/Coverage/Scanner.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,23 @@ class Scanner implements ScannerInterface
protected $parser;

/**
* @var string
* @var array
*/
private $basePath;

/**
* @param Parser $parser An instance of the Snippet Parser.
* @param string $basepath The path to scan for PHP files.
* @param \Iterator|string $basepath The path(s) to scan for PHP files.
*
* @experimental
* @internal
*/
public function __construct(Parser $parser, $basePath)
{
$this->parser = $parser;
if (is_string($basePath)) {
$basePath = [$basePath];
}
$this->basePath = $basePath;
}

Expand All @@ -62,17 +65,19 @@ public function __construct(Parser $parser, $basePath)
*/
public function files()
{
$regexIterator = new \RegexIterator(
new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($this->basePath)
),
'/^.+\.php$/i',
\RecursiveRegexIterator::GET_MATCH
);

$files = [];
foreach ($regexIterator as $item) {
array_push($files, $item[0]);
foreach ($this->basePath as $basePath) {
$regexIterator = new \RegexIterator(
new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($basePath)
),
'/^.+\.php$/i',
\RecursiveRegexIterator::GET_MATCH
);

foreach ($regexIterator as $item) {
array_push($files, $item[0]);
}
}

return $files;
Expand Down
32 changes: 32 additions & 0 deletions src/Core/Testing/Snippet/Fixtures.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php
/**
* Copyright 2018 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

namespace Google\Cloud\Core\Testing\Snippet;

/**
* Fixtures that can be used for testing
*/
class Fixtures
{
/**
* @return string Location of keyfile-stub fixture
*/
public static function keyfileStubFixture()
{
return __DIR__ . '/keyfile-stub.json';
}
}
5 changes: 4 additions & 1 deletion src/Core/Testing/Snippet/Parser/Parser.php
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,9 @@ public function allExamples($class)

$methods = $class->getMethods();
foreach ($methods as $method) {
if ($method->getDeclaringClass() !== $class->getName()) {
continue;
}
$snippets = array_merge($snippets, $this->examplesFromMethod($class, $method));
}

Expand Down Expand Up @@ -274,7 +277,7 @@ public function examples(DocBlock $docBlock, $fullyQualifiedName, $file, $line,
$snippet = new Snippet($identifier, [
'content' => $example->textContent,
'fqn' => $fullyQualifiedName,
'index' => $index,
'index' => $indexOrName,
'name' => $name,
'file' => $file,
'line' => $line
Expand Down
12 changes: 12 additions & 0 deletions src/Core/Testing/Snippet/keyfile-stub.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"type": "service_account",
"project_id": "my-awesome-project",
"private_key_id": "",
"private_key": "",
"client_email": "",
"client_id": "",
"auth_uri": "",
"token_uri": "",
"auth_provider_x509_cert_url": "",
"client_x509_cert_url": ""
}
2 changes: 1 addition & 1 deletion tests/snippets/Vision/Annotation/FaceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public function testInfo()

public function testLandmarks()
{
$snippet = $this->snippetFromMagicMethod(Face::class, 'landmarks');
$snippet = $this->snippetFromMethod(Face::class, 'landmarks');
$snippet->addLocal('face', new Face([
'landmarks' => [
[
Expand Down

0 comments on commit 35b9557

Please sign in to comment.