From fb029c60bb94f21aa7efcafdd49336f74920a551 Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Wed, 25 Dec 2024 15:46:24 +0300 Subject: [PATCH 01/11] docs updated --- src/commands/docs.js | 85 ++++++++++++++++++++++++++++++++++++-- test/commands/test_docs.js | 61 ++++++++++++++++++++------- 2 files changed, 126 insertions(+), 20 deletions(-) diff --git a/src/commands/docs.js b/src/commands/docs.js index 290c5ab..afa66b5 100644 --- a/src/commands/docs.js +++ b/src/commands/docs.js @@ -27,9 +27,86 @@ const path = require('path'); /** * Command to create docs from .EO sources. - * @param {Hash} opts - All options + * This command scans for .xmir files and generates empty HTML files for each package. + * @param {Object} opts - All options */ module.exports = function(opts) { - const filePath = path.resolve('eodocs.html'); - fs.writeFileSync(filePath, ''); -}; + const inputDir = './.eoc/1-parse'; + const outputDir = 'docs'; + + if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir, { recursive: true }); + } + + /** + * Recursively reads all .xmir files from directory + * @param {string} dir - Directory path + * @returns {string[]} Array of file paths + */ + function readXmirFilesRecursively(dir) { + let xmirFiles = []; + const entries = fs.readdirSync(dir, { withFileTypes: true }); + + for (const entry of entries) { + const entryPath = path.join(dir, entry.name); + + if (entry.isDirectory()) { + xmirFiles = xmirFiles.concat(readXmirFilesRecursively(entryPath)); + } else if (entry.isFile() && entry.name.endsWith('.xmir')) { + xmirFiles.push(entryPath); + } + } + + return xmirFiles; + } + + /** + * Gets package name from file path + * @param {string} filePath - Path to file + * @returns {string} Package name + */ + function getPackageNameFromFilePath(filePath) { + const relativePath = path.relative(inputDir, filePath); + const dirName = path.dirname(relativePath); + if (dirName === '.' || dirName === '') { + return ''; + } + return dirName.split(path.sep).join('.'); + } + + /** + * Creates safe filename for package + * @param {string} packageName - Package name + * @returns {string} Safe filename + */ + function sanitizeFileName(packageName) { + return `package_${packageName.replace(/[^a-z0-9.]/gi, '_').toLowerCase()}.html`; + } + + try { + const allFiles = readXmirFilesRecursively(inputDir); + + const packages = new Set(); + allFiles.forEach(filePath => { + const packageName = getPackageNameFromFilePath(filePath); + packages.add(packageName); + }); + + for (const packageName of packages) { + const fileName = sanitizeFileName(packageName || 'default'); + const outputPath = path.join(outputDir, fileName); + + fs.writeFileSync(outputPath, ''); + } + + const packagesPath = path.join(outputDir, 'packages.html'); + fs.writeFileSync(packagesPath, ''); + + const cssPath = path.join(outputDir, 'styles.css'); + fs.writeFileSync(cssPath, ''); + + console.info('Documentation generation completed in %s directory', outputDir); + } catch (error) { + console.error('Error generating documentation:', error); + } +}; \ No newline at end of file diff --git a/test/commands/test_docs.js b/test/commands/test_docs.js index 5fc0a2d..abc5733 100644 --- a/test/commands/test_docs.js +++ b/test/commands/test_docs.js @@ -25,24 +25,53 @@ const assert = require('assert'); const fs = require('fs'); const path = require('path'); -const {runSync} = require('../helpers'); +const { runSync, assertFilesExist } = require('../helpers'); -/** - * It should create an empty 'eodocs.html' file in the current directory. - * @param {Function} done - Mocha's callback to signal completion - */ describe('docs', function() { - it('creates an empty eodocs.html file', function(done) { - const filePath = path.resolve('eodocs.html'); - fs.rmSync(filePath, {recursive: true, force: true}); - runSync(['docs']); - assert(fs.existsSync(filePath), `Expected eodocs.html to be created, but it's missing`); - const content = fs.readFileSync(filePath, 'utf8'); - assert.strictEqual( - content, - '', - `Expected eodocs.html to be empty, but it has content: ${content}` - ); + const testDir = path.resolve('temp/test-docs-command'); + + const eocDir = path.join(testDir, '.eoc', '1-parse'); + + const docsDir = path.join(testDir, 'docs'); + + beforeEach(function() { + fs.rmSync(testDir, { recursive: true, force: true }); + fs.mkdirSync(eocDir, { recursive: true }); + }); + + /** + * Tests that the 'docs' command generates empty HTML files in the docs directory. + * @param {Mocha.Done} done - Mocha callback signaling asynchronous completion + */ + it('generates empty HTML files for .xmir files', function(done) { + const samplePackageDir = path.join(eocDir, 'foo', 'bar'); + fs.mkdirSync(samplePackageDir, { recursive: true }); + const xmirFilePath = path.join(samplePackageDir, 'test.xmir'); + fs.writeFileSync(xmirFilePath, ''); + + const oldCwd = process.cwd(); + process.chdir(testDir); + try { + runSync(['docs']); + } finally { + process.chdir(oldCwd); + } + + assert(fs.existsSync(docsDir), 'Expected the docs directory to be created but it is missing'); + + const generatedFile = path.join(docsDir, 'package_foo.bar.html'); + assert(fs.existsSync(generatedFile), `Expected file ${generatedFile} but it was not created`); + const content = fs.readFileSync(generatedFile, 'utf8'); + assert.strictEqual(content, '', 'Expected the generated file to be empty'); + + const packagesFile = path.join(docsDir, 'packages.html'); + assert(fs.existsSync(packagesFile), `Expected file ${packagesFile} but it was not created`); + assert.strictEqual(fs.readFileSync(packagesFile, 'utf8'), '', 'Expected packages.html to be empty'); + + const cssFile = path.join(docsDir, 'styles.css'); + assert(fs.existsSync(cssFile), `Expected file ${cssFile} but it was not created`); + assert.strictEqual(fs.readFileSync(cssFile, 'utf8'), '', 'Expected styles.css to be empty'); + done(); }); }); From 435e4f3f2ddaccb0c993a20caab58192b00e90ec Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Wed, 25 Dec 2024 15:49:16 +0300 Subject: [PATCH 02/11] line lenght fixed --- test/commands/test_docs.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/commands/test_docs.js b/test/commands/test_docs.js index abc5733..04e174d 100644 --- a/test/commands/test_docs.js +++ b/test/commands/test_docs.js @@ -66,7 +66,9 @@ describe('docs', function() { const packagesFile = path.join(docsDir, 'packages.html'); assert(fs.existsSync(packagesFile), `Expected file ${packagesFile} but it was not created`); - assert.strictEqual(fs.readFileSync(packagesFile, 'utf8'), '', 'Expected packages.html to be empty'); + assert.strictEqual( + fs.readFileSync(packagesFile, 'utf8'), '', 'Expected packages.html to be empty' + ); const cssFile = path.join(docsDir, 'styles.css'); assert(fs.existsSync(cssFile), `Expected file ${cssFile} but it was not created`); From 464a0126fcf8dd3f77c2b787807bf6c70a08b33a Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Wed, 25 Dec 2024 16:47:01 +0300 Subject: [PATCH 03/11] mvnw support --- src/commands/docs.js | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/src/commands/docs.js b/src/commands/docs.js index afa66b5..307143a 100644 --- a/src/commands/docs.js +++ b/src/commands/docs.js @@ -84,28 +84,33 @@ module.exports = function(opts) { } try { - const allFiles = readXmirFilesRecursively(inputDir); - - const packages = new Set(); - allFiles.forEach(filePath => { - const packageName = getPackageNameFromFilePath(filePath); - packages.add(packageName); - }); + const argv = ['eo:docs'].concat(flags(opts)); + mvnw(argv, opts.target || '.', opts.batch).then(() => { + const allFiles = readXmirFilesRecursively(inputDir); - for (const packageName of packages) { - const fileName = sanitizeFileName(packageName || 'default'); - const outputPath = path.join(outputDir, fileName); - - fs.writeFileSync(outputPath, ''); - } + const packages = new Set(); + allFiles.forEach((filePath) => { + const packageName = getPackageNameFromFilePath(filePath); + packages.add(packageName); + }); - const packagesPath = path.join(outputDir, 'packages.html'); - fs.writeFileSync(packagesPath, ''); + for (const packageName of packages) { + const fileName = sanitizeFileName(packageName || 'default'); + const outputPath = path.join(outputDir, fileName); - const cssPath = path.join(outputDir, 'styles.css'); - fs.writeFileSync(cssPath, ''); + fs.writeFileSync(outputPath, ''); + } + + const packagesPath = path.join(outputDir, 'packages.html'); + fs.writeFileSync(packagesPath, ''); - console.info('Documentation generation completed in %s directory', outputDir); + const cssPath = path.join(outputDir, 'styles.css'); + fs.writeFileSync(cssPath, ''); + + console.info('Documentation generation completed in %s directory', outputDir); + }).catch((error) => { + console.error('Error executing Maven command:', error); + }); } catch (error) { console.error('Error generating documentation:', error); } From caa952992f311c88b24d9b53e0c0862d06f15b6c Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Wed, 25 Dec 2024 18:09:30 +0300 Subject: [PATCH 04/11] fixes? --- src/commands/docs.js | 41 +++++++++++++++++--------------------- test/commands/test_docs.js | 15 +++++++------- 2 files changed, 26 insertions(+), 30 deletions(-) diff --git a/src/commands/docs.js b/src/commands/docs.js index 307143a..afa66b5 100644 --- a/src/commands/docs.js +++ b/src/commands/docs.js @@ -84,33 +84,28 @@ module.exports = function(opts) { } try { - const argv = ['eo:docs'].concat(flags(opts)); - mvnw(argv, opts.target || '.', opts.batch).then(() => { - const allFiles = readXmirFilesRecursively(inputDir); - - const packages = new Set(); - allFiles.forEach((filePath) => { - const packageName = getPackageNameFromFilePath(filePath); - packages.add(packageName); - }); - - for (const packageName of packages) { - const fileName = sanitizeFileName(packageName || 'default'); - const outputPath = path.join(outputDir, fileName); + const allFiles = readXmirFilesRecursively(inputDir); + + const packages = new Set(); + allFiles.forEach(filePath => { + const packageName = getPackageNameFromFilePath(filePath); + packages.add(packageName); + }); - fs.writeFileSync(outputPath, ''); - } + for (const packageName of packages) { + const fileName = sanitizeFileName(packageName || 'default'); + const outputPath = path.join(outputDir, fileName); + + fs.writeFileSync(outputPath, ''); + } - const packagesPath = path.join(outputDir, 'packages.html'); - fs.writeFileSync(packagesPath, ''); + const packagesPath = path.join(outputDir, 'packages.html'); + fs.writeFileSync(packagesPath, ''); - const cssPath = path.join(outputDir, 'styles.css'); - fs.writeFileSync(cssPath, ''); + const cssPath = path.join(outputDir, 'styles.css'); + fs.writeFileSync(cssPath, ''); - console.info('Documentation generation completed in %s directory', outputDir); - }).catch((error) => { - console.error('Error executing Maven command:', error); - }); + console.info('Documentation generation completed in %s directory', outputDir); } catch (error) { console.error('Error generating documentation:', error); } diff --git a/test/commands/test_docs.js b/test/commands/test_docs.js index 04e174d..d97d420 100644 --- a/test/commands/test_docs.js +++ b/test/commands/test_docs.js @@ -25,7 +25,7 @@ const assert = require('assert'); const fs = require('fs'); const path = require('path'); -const { runSync, assertFilesExist } = require('../helpers'); +const {runSync} = require('../helpers'); describe('docs', function() { const testDir = path.resolve('temp/test-docs-command'); @@ -43,7 +43,7 @@ describe('docs', function() { * Tests that the 'docs' command generates empty HTML files in the docs directory. * @param {Mocha.Done} done - Mocha callback signaling asynchronous completion */ - it('generates empty HTML files for .xmir files', function(done) { + it('generates empty HTML files for packages', function(done) { const samplePackageDir = path.join(eocDir, 'foo', 'bar'); fs.mkdirSync(samplePackageDir, { recursive: true }); const xmirFilePath = path.join(samplePackageDir, 'test.xmir'); @@ -51,11 +51,12 @@ describe('docs', function() { const oldCwd = process.cwd(); process.chdir(testDir); - try { - runSync(['docs']); - } finally { - process.chdir(oldCwd); - } + runSync([ + 'docs', + '--verbose', + '-s', path.resolve('./src'), + '-t', path.resolve('./target'), + ]); assert(fs.existsSync(docsDir), 'Expected the docs directory to be created but it is missing'); From 45a9058edbc559c183d64fe73c7c1f1c9c47783c Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Mon, 20 Jan 2025 17:51:47 +0300 Subject: [PATCH 05/11] test_docs.js fix --- test/commands/test_docs.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/test/commands/test_docs.js b/test/commands/test_docs.js index d97d420..ea47907 100644 --- a/test/commands/test_docs.js +++ b/test/commands/test_docs.js @@ -29,9 +29,7 @@ const {runSync} = require('../helpers'); describe('docs', function() { const testDir = path.resolve('temp/test-docs-command'); - const eocDir = path.join(testDir, '.eoc', '1-parse'); - const docsDir = path.join(testDir, 'docs'); beforeEach(function() { @@ -49,13 +47,11 @@ describe('docs', function() { const xmirFilePath = path.join(samplePackageDir, 'test.xmir'); fs.writeFileSync(xmirFilePath, ''); - const oldCwd = process.cwd(); - process.chdir(testDir); runSync([ 'docs', '--verbose', - '-s', path.resolve('./src'), - '-t', path.resolve('./target'), + '-s', path.resolve(testDir, 'src'), + '-t', path.resolve(testDir, 'target'), ]); assert(fs.existsSync(docsDir), 'Expected the docs directory to be created but it is missing'); From d38b6d396c981a68edd5833a79722092e4c1a3a0 Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Tue, 21 Jan 2025 02:14:27 +0300 Subject: [PATCH 06/11] Prob fix --- src/commands/docs.js | 94 +++++++++++++------------------------- test/commands/test_docs.js | 2 +- 2 files changed, 33 insertions(+), 63 deletions(-) diff --git a/src/commands/docs.js b/src/commands/docs.js index afa66b5..8b11d77 100644 --- a/src/commands/docs.js +++ b/src/commands/docs.js @@ -26,76 +26,45 @@ const fs = require('fs'); const path = require('path'); /** - * Command to create docs from .EO sources. - * This command scans for .xmir files and generates empty HTML files for each package. - * @param {Object} opts - All options + * Recursively reads all .xmir files from a directory. + * @param {string} dir - Directory path + * @return {string[]} Array of file paths */ -module.exports = function(opts) { - const inputDir = './.eoc/1-parse'; - const outputDir = 'docs'; - - if (!fs.existsSync(outputDir)) { - fs.mkdirSync(outputDir, { recursive: true }); - } - - /** - * Recursively reads all .xmir files from directory - * @param {string} dir - Directory path - * @returns {string[]} Array of file paths - */ - function readXmirFilesRecursively(dir) { - let xmirFiles = []; - const entries = fs.readdirSync(dir, { withFileTypes: true }); - - for (const entry of entries) { - const entryPath = path.join(dir, entry.name); - - if (entry.isDirectory()) { - xmirFiles = xmirFiles.concat(readXmirFilesRecursively(entryPath)); - } else if (entry.isFile() && entry.name.endsWith('.xmir')) { - xmirFiles.push(entryPath); - } +function readXmirFilesRecursively(dir) { + const files = []; + const entries = fs.readdirSync(dir, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + if (entry.isDirectory()) { + files.push(...readXmirFilesRecursively(fullPath)); + } else if (entry.name.endsWith('.xmir')) { + files.push(fullPath); } - - return xmirFiles; } + + return files; +} - /** - * Gets package name from file path - * @param {string} filePath - Path to file - * @returns {string} Package name - */ - function getPackageNameFromFilePath(filePath) { - const relativePath = path.relative(inputDir, filePath); - const dirName = path.dirname(relativePath); - if (dirName === '.' || dirName === '') { - return ''; - } - return dirName.split(path.sep).join('.'); - } +/** + * Command to generate documentation. + * @param {Hash} opts - All options + */ +module.exports = function(opts) { + try { + const inputDir = path.resolve(opts.target, '.eoc', '1-parse'); + const outputDir = path.resolve(opts.target, 'docs'); - /** - * Creates safe filename for package - * @param {string} packageName - Package name - * @returns {string} Safe filename - */ - function sanitizeFileName(packageName) { - return `package_${packageName.replace(/[^a-z0-9.]/gi, '_').toLowerCase()}.html`; - } + fs.mkdirSync(outputDir, { recursive: true }); - try { - const allFiles = readXmirFilesRecursively(inputDir); - - const packages = new Set(); - allFiles.forEach(filePath => { - const packageName = getPackageNameFromFilePath(filePath); - packages.add(packageName); - }); + const xmirFiles = readXmirFilesRecursively(inputDir); - for (const packageName of packages) { - const fileName = sanitizeFileName(packageName || 'default'); - const outputPath = path.join(outputDir, fileName); + for (const xmirFile of xmirFiles) { + const relativePath = path.relative(inputDir, xmirFile); + const packagePath = path.dirname(relativePath).split(path.sep).join('.'); + const outputPath = path.join(outputDir, `package_${packagePath}.html`); + fs.mkdirSync(path.dirname(outputPath), { recursive: true }); fs.writeFileSync(outputPath, ''); } @@ -108,5 +77,6 @@ module.exports = function(opts) { console.info('Documentation generation completed in %s directory', outputDir); } catch (error) { console.error('Error generating documentation:', error); + throw error; } }; \ No newline at end of file diff --git a/test/commands/test_docs.js b/test/commands/test_docs.js index ea47907..035aa75 100644 --- a/test/commands/test_docs.js +++ b/test/commands/test_docs.js @@ -51,7 +51,7 @@ describe('docs', function() { 'docs', '--verbose', '-s', path.resolve(testDir, 'src'), - '-t', path.resolve(testDir, 'target'), + '-t', testDir, ]); assert(fs.existsSync(docsDir), 'Expected the docs directory to be created but it is missing'); From 24da282e5a0dd8fb862274eab91cd73ef118986f Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Tue, 21 Jan 2025 16:59:42 +0300 Subject: [PATCH 07/11] check --- test/commands/test_docs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/commands/test_docs.js b/test/commands/test_docs.js index 035aa75..14e5845 100644 --- a/test/commands/test_docs.js +++ b/test/commands/test_docs.js @@ -42,7 +42,7 @@ describe('docs', function() { * @param {Mocha.Done} done - Mocha callback signaling asynchronous completion */ it('generates empty HTML files for packages', function(done) { - const samplePackageDir = path.join(eocDir, 'foo', 'bar'); + /*const samplePackageDir = path.join(eocDir, 'foo', 'bar'); fs.mkdirSync(samplePackageDir, { recursive: true }); const xmirFilePath = path.join(samplePackageDir, 'test.xmir'); fs.writeFileSync(xmirFilePath, ''); @@ -69,7 +69,7 @@ describe('docs', function() { const cssFile = path.join(docsDir, 'styles.css'); assert(fs.existsSync(cssFile), `Expected file ${cssFile} but it was not created`); - assert.strictEqual(fs.readFileSync(cssFile, 'utf8'), '', 'Expected styles.css to be empty'); + assert.strictEqual(fs.readFileSync(cssFile, 'utf8'), '', 'Expected styles.css to be empty');*/ done(); }); From 5d36a6ccf0f8c6991da8cf9326d8f1953b85f413 Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Tue, 21 Jan 2025 18:10:33 +0300 Subject: [PATCH 08/11] Check --- src/commands/docs.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/commands/docs.js b/src/commands/docs.js index 8b11d77..e5a0884 100644 --- a/src/commands/docs.js +++ b/src/commands/docs.js @@ -51,7 +51,7 @@ function readXmirFilesRecursively(dir) { * @param {Hash} opts - All options */ module.exports = function(opts) { - try { + /*try { const inputDir = path.resolve(opts.target, '.eoc', '1-parse'); const outputDir = path.resolve(opts.target, 'docs'); @@ -78,5 +78,7 @@ module.exports = function(opts) { } catch (error) { console.error('Error generating documentation:', error); throw error; - } + }*/ + const filePath = path.resolve('eodocs.html'); + fs.writeFileSync(filePath, ''); }; \ No newline at end of file From 564cbfa566ef6b00d7eb2024f3412bf8887bc9c8 Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Mon, 27 Jan 2025 18:34:33 +0300 Subject: [PATCH 09/11] Try again --- src/commands/docs.js | 6 ++---- test/commands/test_docs.js | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/commands/docs.js b/src/commands/docs.js index e5a0884..8b11d77 100644 --- a/src/commands/docs.js +++ b/src/commands/docs.js @@ -51,7 +51,7 @@ function readXmirFilesRecursively(dir) { * @param {Hash} opts - All options */ module.exports = function(opts) { - /*try { + try { const inputDir = path.resolve(opts.target, '.eoc', '1-parse'); const outputDir = path.resolve(opts.target, 'docs'); @@ -78,7 +78,5 @@ module.exports = function(opts) { } catch (error) { console.error('Error generating documentation:', error); throw error; - }*/ - const filePath = path.resolve('eodocs.html'); - fs.writeFileSync(filePath, ''); + } }; \ No newline at end of file diff --git a/test/commands/test_docs.js b/test/commands/test_docs.js index 14e5845..035aa75 100644 --- a/test/commands/test_docs.js +++ b/test/commands/test_docs.js @@ -42,7 +42,7 @@ describe('docs', function() { * @param {Mocha.Done} done - Mocha callback signaling asynchronous completion */ it('generates empty HTML files for packages', function(done) { - /*const samplePackageDir = path.join(eocDir, 'foo', 'bar'); + const samplePackageDir = path.join(eocDir, 'foo', 'bar'); fs.mkdirSync(samplePackageDir, { recursive: true }); const xmirFilePath = path.join(samplePackageDir, 'test.xmir'); fs.writeFileSync(xmirFilePath, ''); @@ -69,7 +69,7 @@ describe('docs', function() { const cssFile = path.join(docsDir, 'styles.css'); assert(fs.existsSync(cssFile), `Expected file ${cssFile} but it was not created`); - assert.strictEqual(fs.readFileSync(cssFile, 'utf8'), '', 'Expected styles.css to be empty');*/ + assert.strictEqual(fs.readFileSync(cssFile, 'utf8'), '', 'Expected styles.css to be empty'); done(); }); From 852c4203a422b35d227860607dc4c1367d355ddd Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Mon, 27 Jan 2025 22:17:31 +0300 Subject: [PATCH 10/11] Test --- test/commands/{test_docs.js => test_zdocs.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/commands/{test_docs.js => test_zdocs.js} (100%) diff --git a/test/commands/test_docs.js b/test/commands/test_zdocs.js similarity index 100% rename from test/commands/test_docs.js rename to test/commands/test_zdocs.js From 4d59ccbfd90a88831e1884611b40fc79e3c405e2 Mon Sep 17 00:00:00 2001 From: SenjeyB Date: Mon, 3 Feb 2025 17:20:07 +0300 Subject: [PATCH 11/11] test_docs --- test/commands/{test_zdocs.js => test_docs.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/commands/{test_zdocs.js => test_docs.js} (100%) diff --git a/test/commands/test_zdocs.js b/test/commands/test_docs.js similarity index 100% rename from test/commands/test_zdocs.js rename to test/commands/test_docs.js