From 1486f01aaf714aba945df5f31f17cb5e96002d1a Mon Sep 17 00:00:00 2001 From: Wouter Termont Date: Fri, 12 Feb 2021 09:18:09 +0100 Subject: [PATCH] fix: do not output filesystem container size * fix: do not output filesystem container size * fix: only omit size metadata for containers Signed-off-by: Wouter Termont --- src/storage/accessors/FileDataAccessor.ts | 4 +++- test/unit/storage/accessors/FileDataAccessor.test.ts | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/storage/accessors/FileDataAccessor.ts b/src/storage/accessors/FileDataAccessor.ts index 418461b5e..bdccaa674 100644 --- a/src/storage/accessors/FileDataAccessor.ts +++ b/src/storage/accessors/FileDataAccessor.ts @@ -326,11 +326,13 @@ export class FileDataAccessor implements DataAccessor { */ private generatePosixQuads(subject: NamedNode, stats: Stats): Quad[] { const quads: Quad[] = []; - pushQuad(quads, subject, POSIX.terms.size, toLiteral(stats.size, XSD.terms.integer)); pushQuad(quads, subject, DC.terms.modified, toLiteral(stats.mtime.toISOString(), XSD.terms.dateTime)); pushQuad(quads, subject, POSIX.terms.mtime, toLiteral( Math.floor(stats.mtime.getTime() / 1000), XSD.terms.integer, )); + if (!stats.isDirectory()) { + pushQuad(quads, subject, POSIX.terms.size, toLiteral(stats.size, XSD.terms.integer)); + } return quads; } diff --git a/test/unit/storage/accessors/FileDataAccessor.test.ts b/test/unit/storage/accessors/FileDataAccessor.test.ts index c30dada88..7042d97a2 100644 --- a/test/unit/storage/accessors/FileDataAccessor.test.ts +++ b/test/unit/storage/accessors/FileDataAccessor.test.ts @@ -104,6 +104,13 @@ describe('A FileDataAccessor', (): void => { expect(metadata.get(POSIX.mtime)).toEqualRdfTerm(toLiteral(Math.floor(now.getTime() / 1000), XSD.terms.integer)); }); + it('does not generate size metadata for a container.', async(): Promise => { + cache.data = { container: {}}; + metadata = await accessor.getMetadata({ path: `${base}container/` }); + expect(metadata.get(POSIX.size)).toBeUndefined(); + expect(metadata.get(DC.modified)).toEqualRdfTerm(toLiteral(now.toISOString(), XSD.terms.dateTime)); + }); + it('generates the metadata for a container and its non-meta children.', async(): Promise => { cache.data = { container: { resource: 'data', 'resource.meta': 'metadata', notAFile: 5, container2: {}}}; metadata = await accessor.getMetadata({ path: `${base}container/` }); @@ -111,7 +118,7 @@ describe('A FileDataAccessor', (): void => { expect(metadata.getAll(RDF.type)).toEqualRdfTermArray( [ LDP.terms.Container, LDP.terms.BasicContainer, LDP.terms.Resource ], ); - expect(metadata.get(POSIX.size)).toEqualRdfTerm(toLiteral(0, XSD.terms.integer)); + expect(metadata.get(POSIX.size)).toBeUndefined(); expect(metadata.get(DC.modified)).toEqualRdfTerm(toLiteral(now.toISOString(), XSD.terms.dateTime)); expect(metadata.get(POSIX.mtime)).toEqualRdfTerm(toLiteral(Math.floor(now.getTime() / 1000), XSD.terms.integer)); expect(metadata.getAll(LDP.contains)).toEqualRdfTermArray(