Skip to content

Commit 0aa0642

Browse files
authored
Merge pull request #37 from keboola/tf2-missing-manifest
No manifest behaves like empty manifest
2 parents 1acb4af + 3833f5b commit 0aa0642

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33

44
## master
55

6+
**Feature:**
7+
- [\#37](https://github.com/keboola/php-component/pull/37): No manifest behaves like empty manifest
8+
69
## 4.1.1
710

811
**Patch:**

src/Manifest/ManifestManager.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ public function getTableManifest(string $tableName)
8080
private function loadManifest(string $fileName, string $baseDir): array
8181
{
8282
$isPathInDirectory = strpos($fileName, $baseDir) === 0;
83+
$fs = new Filesystem();
8384
if (!$isPathInDirectory) {
84-
$fs = new Filesystem();
8585
if ($fs->isAbsolutePath($fileName)) {
8686
throw new InvalidArgumentException(sprintf(
8787
'Manifest source "%s" must be in the data directory (%s)!',
@@ -93,8 +93,13 @@ private function loadManifest(string $fileName, string $baseDir): array
9393
$fileName = implode('/', [$baseDir, $fileName]);
9494
}
9595

96+
$manifestFilename = $this->getManifestFilename($fileName);
97+
if (!$fs->exists($manifestFilename)) {
98+
return [];
99+
}
100+
96101
$decoder = new JsonEncoder();
97-
return $decoder->decode(file_get_contents($this->getManifestFilename($fileName)), JsonEncoder::FORMAT);
102+
return $decoder->decode(file_get_contents($manifestFilename), JsonEncoder::FORMAT);
98103
}
99104

100105
/**

tests/Manifest/ManifestManagerTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ public function testWillLoadTableManifest(): void
9797
$this->assertSame($expectedManifest, $manager->getTableManifest('people.csv'));
9898
}
9999

100+
public function testNonexistentManifestReturnsEmptyArray(): void
101+
{
102+
$manager = new ManifestManager(__DIR__ . '/fixtures/manifest-data-dir');
103+
104+
$this->assertSame([], $manager->getTableManifest('manifest-does-not-exist'));
105+
}
106+
100107
public function testWillLoadTableManifestWithoutCsv(): void
101108
{
102109
$manager = new ManifestManager(__DIR__ . '/fixtures/manifest-data-dir');

0 commit comments

Comments
 (0)