Permalink
Comparing changes
Open a pull request
- 2 commits
- 5 files changed
- 0 commit comments
- 1 contributor
Unified
Split
Showing
with
48 additions
and 59 deletions.
- +1 −3 commands/share.js
- +17 −5 lib/append.js
- +0 −1 package.json
- +19 −14 tests/download.js
- +11 −36 tests/share.js
| @@ -9,7 +9,6 @@ module.exports = function (args) { | ||
| var log = logger(args) | ||
| var addText = 'Adding ' | ||
| var finalized = false | ||
| var updated = false | ||
| var initFileCount = 0 | ||
| @@ -19,7 +18,7 @@ module.exports = function (args) { | ||
| dat.on('ready', function () { | ||
| log.message('Initializing Dat in ' + dat.dir + '\n') | ||
| dat.share(function (err) { | ||
| onerror(err) | ||
| if (err) onerror(err) | ||
| }) | ||
| }) | ||
| @@ -38,7 +37,6 @@ module.exports = function (args) { | ||
| dat.on('archive-finalized', function () { | ||
| addText = 'Added ' | ||
| finalized = true | ||
| initFileCount = dat.stats.filesTotal | ||
| printStats() | ||
| }) | ||
| @@ -1,13 +1,15 @@ | ||
| var fs = require('fs') | ||
| var path = require('path') | ||
| var countFiles = require('count-files') | ||
| var walker = require('folder-walker') | ||
| var each = require('stream-each') | ||
| module.exports.initialAppend = function (dat, cb) { | ||
| countFiles(dat.dir, {filter: ignore}, function (err, stats) { | ||
| var appendStats = { | ||
| files: 0, | ||
| dirs: 0, | ||
| bytes: 0 | ||
| } | ||
| each(walker(dat.dir, {filter: ignore}), countFiles, function (err) { | ||
| if (err) cb(err) | ||
| dat.appendStats = stats | ||
| dat.appendStats = appendStats | ||
| dat.emit('append-ready') | ||
| if (dat.resume) { | ||
| @@ -20,6 +22,16 @@ module.exports.initialAppend = function (dat, cb) { | ||
| } | ||
| }) | ||
| function countFiles (data, next) { | ||
| if (data.type === 'directory') { | ||
| appendStats.dirs += 1 | ||
| } else { | ||
| appendStats.files += 1 | ||
| appendStats.bytes += data.stat.size | ||
| } | ||
| next() | ||
| } | ||
| function walkFolder (resume) { | ||
| var fileStream = walker(dat.dir, {filter: ignore}) | ||
| if (resume) each(fileStream, resumeAppend, cb) | ||
| @@ -24,7 +24,6 @@ | ||
| "license": "BSD-3-Clause", | ||
| "dependencies": { | ||
| "chalk": "^1.1.1", | ||
| "count-files": "^1.0.1", | ||
| "datland-swarm-defaults": "^1.0.0", | ||
| "debug": "^2.2.0", | ||
| "discovery-swarm": "^4.0.0", | ||
| @@ -27,9 +27,9 @@ test('starts looking for peers with correct hash', function (t) { | ||
| }) | ||
| test('errors with invalid hash', function (t) { | ||
| // cmd: dat pizza tmp | ||
| rimraf.sync(path.join(tmp, '.dat')) | ||
| var st = spawn(t, dat + ' pizza ' + tmp) | ||
| // cmd: dat pizza downloadDir | ||
| rimraf.sync(path.join(downloadDir, '.dat')) | ||
| var st = spawn(t, dat + ' pizza ' + downloadDir) | ||
| st.stderr.match(function (output) { | ||
| var gotError = output.indexOf('Invalid Dat Link') > -1 | ||
| t.ok(gotError, 'got error') | ||
| @@ -43,7 +43,7 @@ test('errors on new download without directory', function (t) { | ||
| rimraf.sync(path.join(process.cwd(), '.dat')) // in case we have a .dat folder here | ||
| var st = spawn(t, dat + ' 9d011b6c9de26e53e9961c8d8ea840d33e0d8408318332c9502bad112cad9989') | ||
| st.stderr.match(function (output) { | ||
| var gotError = output.indexOf('Please specify a directory.') > -1 | ||
| var gotError = output.indexOf('Directory does not exist') > -1 | ||
| t.ok(gotError, 'got error') | ||
| if (gotError) return true | ||
| }) | ||
| @@ -68,7 +68,7 @@ test('download resumes with same key', function (t) { | ||
| // cmd: dat <link> tmpdir | ||
| var downloader = spawn(t, dat + ' ' + link + ' ' + tmpdir, {end: false}) | ||
| downloader.stdout.match(function (output) { | ||
| var contains = output.indexOf('DONE') > -1 | ||
| var contains = output.indexOf('Downloaded') > -1 | ||
| if (!contains || !share) return false | ||
| downloader.kill() | ||
| spawnDownloaderTwo() | ||
| @@ -78,14 +78,14 @@ test('download resumes with same key', function (t) { | ||
| } | ||
| function spawnDownloaderTwo () { | ||
| // cmd: dat <link> (no dir required in cwd w/ dat folder) | ||
| var downloaderTwo = spawn(t, dat + ' ' + link, {cwd: tmpdir, end: false}) | ||
| // cmd: dat <link> . | ||
| var downloaderTwo = spawn(t, dat + ' ' + link + ' ' + tmpdir, {end: false}) | ||
| downloaderTwo.stdout.match(function (output) { | ||
| var contains = output.indexOf('Initializing') > -1 | ||
| var contains = output.indexOf('Downloaded') > -1 | ||
| if (!contains || !share) return false | ||
| downloaderTwo.kill() | ||
| return true | ||
| }, 'download two resumed without dir argument') | ||
| }, 'download two resumed with same key') | ||
| downloaderTwo.end(function () { | ||
| t.end() | ||
| }) | ||
| @@ -111,10 +111,10 @@ test('download transfers files', function (t) { | ||
| function startDownloader () { | ||
| var downloader = spawn(t, dat + ' ' + link + ' ' + tmpdir, {end: false}) | ||
| downloader.stdout.match(function (output) { | ||
| var contains = output.indexOf('Finished') > -1 | ||
| var contains = output.indexOf('Downloaded') > -1 | ||
| if (!contains || !share) return false | ||
| var hasFiles = output.indexOf('3 items') > -1 | ||
| var hasFiles = output.indexOf('3 files') > -1 | ||
| t.ok(hasFiles, 'file number is 3') | ||
| var hasSize = output.indexOf('1.44 kB') > -1 | ||
| @@ -145,16 +145,21 @@ test('download transfers files', function (t) { | ||
| } | ||
| }) | ||
| process.on('exit', function () { | ||
| console.log('cleaning up') | ||
| rimraf.sync(downloadDir) | ||
| }) | ||
| function newTestFolder () { | ||
| var tmpdir = tmp + '/dat-download-folder-test' | ||
| var tmpdir = path.join(os.tmpdir(), 'dat-download-folder') | ||
| rimraf.sync(tmpdir) | ||
| mkdirp.sync(tmpdir) | ||
| return tmpdir | ||
| } | ||
| function matchDatLink (output) { | ||
| // TODO: dat.land links | ||
| var match = output.match(/Link [A-Za-z0-9]{64}/) | ||
| var match = output.match(/Link: [A-Za-z0-9]{64}/) | ||
| if (!match) return false | ||
| return match[0].split('Link ')[1].trim() | ||
| return match[0].split('Link: ')[1].trim() | ||
| } | ||
| @@ -4,7 +4,7 @@ var test = require('tape') | ||
| var rimraf = require('rimraf') | ||
| var spawn = require('./helpers/spawn.js') | ||
| var dat = path.resolve(path.join(__dirname, '..', 'cli.js')) | ||
| var dat = path.resolve(path.join(__dirname, '..', 'bin', 'cli.js')) | ||
| var fixtures = path.join(__dirname, 'fixtures') | ||
| var fixturesStaticLink | ||
| @@ -99,25 +99,13 @@ test('share prints shared directory', function (t) { | ||
| test('prints file information (live)', function (t) { | ||
| // cmd: dat tests/fixtures | ||
| var st = spawn(t, dat + ' ' + fixtures) | ||
| var matchedFiles = 0 | ||
| st.stdout.match(function (output) { | ||
| var finished = output.match('Sharing') | ||
| var finished = output.match('Added') | ||
| if (!finished) return false | ||
| var fileList = output.split('\n').filter(function (line) { | ||
| return line.indexOf('[DONE]') > -1 | ||
| }) | ||
| fileList.forEach(function (file) { | ||
| file = file.split('[DONE]')[1] | ||
| if (file.match(/all_hour|empty/)) matchedFiles += 1 | ||
| }) | ||
| t.ok((matchedFiles === 2), 'Printed ' + matchedFiles + ' file names') | ||
| var fileStats = output.split('\n').filter(function (line) { | ||
| return line.indexOf('Items') > -1 | ||
| })[0] | ||
| t.ok(fileStats.match(/Items: 3/), 'File count correct') | ||
| t.ok(fileStats.match(/Size: 1\.44 kB/), 'File size correct') | ||
| console.log(output) | ||
| t.ok(output.match(/2 files/), 'File count correct') | ||
| t.ok(output.match(/1\.44 kB/), 'File size correct') | ||
| st.kill() | ||
| cleanDat() | ||
| @@ -126,28 +114,15 @@ test('prints file information (live)', function (t) { | ||
| st.end() | ||
| }) | ||
| test('prints file information (static)', function (t) { | ||
| test('prints file information (snapshot)', function (t) { | ||
| // cmd: dat tests/fixtures --snapshot | ||
| var st = spawn(t, dat + ' ' + fixtures + ' --snapshot') | ||
| var matchedFiles = 0 | ||
| st.stdout.match(function (output) { | ||
| var finished = output.match('Sharing Snapshot') | ||
| var finished = output.match('Added') | ||
| if (!finished) return false | ||
| var fileList = output.split('\n').filter(function (line) { | ||
| return line.indexOf('[DONE]') > -1 | ||
| }) | ||
| fileList.forEach(function (file) { | ||
| file = file.split('[DONE]')[1] | ||
| if (file.match(/all_hour|empty/)) matchedFiles += 1 | ||
| }) | ||
| t.ok((matchedFiles === 2), 'Printed ' + matchedFiles + ' file names') | ||
| var fileStats = output.split('\n').filter(function (line) { | ||
| return line.indexOf('Items') > -1 | ||
| })[0] | ||
| t.ok(fileStats.match(/Items: 2/), 'File count correct') // TODO: make this consitent w/ live | ||
| t.ok(fileStats.match(/Size: 1\.44 kB/), 'File size correct') | ||
| t.ok(output.match(/2 files/), 'File count correct') | ||
| t.ok(output.match(/1\.44 kB/), 'File size correct') | ||
| st.kill() | ||
| cleanDat() | ||
| @@ -176,7 +151,7 @@ function cleanDat () { | ||
| function matchDatLink (output) { | ||
| // TODO: dat.land links | ||
| var match = output.match(/Link [A-Za-z0-9]{64}/) | ||
| var match = output.match(/Link: [A-Za-z0-9]{64}/) | ||
| if (!match) return false | ||
| return match[0].split('Link ')[1].trim() | ||
| return match[0].split('Link: ')[1].trim() | ||
| } | ||