UNPKG

bagit-tools

Version:

collection of modules to manage BagIt bags

181 lines (158 loc) 4.43 kB
var fs = require('fs') var path = require('path') var test = require('tape') var bagTools = require('..') var bagDir = './node_modules/bagit-conformance-suite/' test('valid bags v0.97', function (t) { var version = 'v0.97' var dir = path.join(bagDir, version, 'valid') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) testBag(t, bag, {version: '0.97', test: true, valid: true}, next) } }) }) test('invalid bags v0.97', function (t) { var version = 'v0.97' var dir = path.join(bagDir, version, 'invalid') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) testBag(t, bag, {version: '0.97', test: true, valid: false}, next) } }) }) test('warning bags v0.97', function (t) { var version = 'v0.97' var dir = path.join(bagDir, version, 'warning') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) fs.stat(bag, function (err, stat) { if (err || !stat.isDirectory()) return next() verify() }) function verify () { bagTools.verify(bag, {test: true}, function (err, valid, results) { t.error(err, 'no error') if (valid) t.ok(valid, `bag is valid`) else { // Lol t.skip(path.basename(bag)) } next() }) } } }) }) test('valid bags v1.0', function (t) { var version = 'v1.0' var dir = path.join(bagDir, version, 'valid') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) testBag(t, bag, {version: '1.0', test: true, valid: true}, next) } }) }) test('invalid bags v1.0', function (t) { var version = 'v1.0' var dir = path.join(bagDir, version, 'invalid') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) testBag(t, bag, {version: '1.0', test: true, valid: false}, next) } }) }) function testBag (t, bag, opts, cb) { fs.stat(bag, function (err, stat) { if (err || !stat.isDirectory()) return cb() verify() }) function verify () { bagTools.verify(bag, opts, function (err, valid, results) { t.error(err, 'no error') t.ok(opts.valid === valid, `bag is invalid`) cb() }) } } test('valid bags v0.96', function (t) { var version = 'v0.96' var dir = path.join(bagDir, version, 'valid') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) testBag(t, bag, {version: '0.96', test: true, valid: true}, next) } }) }) test('valid bags v0.95', function (t) { var version = 'v0.95' var dir = path.join(bagDir, version, 'valid') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) testBag(t, bag, {version: '0.95', test: true, valid: true}, next) } }) }) test('valid bags v0.94', function (t) { var version = 'v0.94' var dir = path.join(bagDir, version, 'valid') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) testBag(t, bag, {version: '0.94', test: true, valid: true}, next) } }) }) test('valid bags v0.93', function (t) { var version = 'v0.93' var dir = path.join(bagDir, version, 'valid') fs.readdir(dir, function (err, bags) { t.error(err, 'no error') next() function next () { var bag = bags.shift() if (!bag) return t.end() bag = path.join(dir, bag) testBag(t, bag, {version: '0.93', test: true, valid: true}, next) } }) })