Compare commits

...

9 Commits

Author SHA1 Message Date
Douglas Christopher Wilson
12d7cb4a7d 1.5.2 2014-12-03 16:32:59 -05:00
Douglas Christopher Wilson
c602a95d4c deps: istanbul@0.3.3 2014-12-03 16:30:33 -05:00
李文富
bf15ad0e12 Fix icon name background alignment on mobile view
closes #25
2014-11-28 12:13:09 -05:00
Douglas Christopher Wilson
9a77df8c77 1.5.1 2014-11-22 23:21:30 -05:00
Douglas Christopher Wilson
856450da8f tests: use assert instead of should 2014-11-22 23:01:45 -05:00
Douglas Christopher Wilson
1bda9f95e4 deps: supertest@~0.15.0 2014-11-22 22:26:12 -05:00
Douglas Christopher Wilson
f0652de409 deps: mocha@~2.0.1 2014-11-22 22:25:24 -05:00
Douglas Christopher Wilson
f0579f7093 deps: mime-types@~2.0.3 2014-11-22 22:24:52 -05:00
Douglas Christopher Wilson
970b567f48 deps: accepts@~1.1.3 2014-11-22 22:22:37 -05:00
4 changed files with 63 additions and 55 deletions

View File

@@ -1,3 +1,17 @@
1.5.2 / 2014-12-03
==================
* Fix icon name background alignment on mobile view
1.5.1 / 2014-11-22
==================
* deps: accepts@~1.1.3
- deps: mime-types@~2.0.3
* deps: mime-types@~2.0.3
- Add new mime types
- deps: mime-db@~1.2.0
1.5.0 / 2014-10-16
==================

View File

@@ -1,23 +1,23 @@
{
"name": "serve-index",
"description": "Serve directory listings",
"version": "1.5.0",
"version": "1.5.2",
"author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
"license": "MIT",
"repository": "expressjs/serve-index",
"dependencies": {
"accepts": "~1.1.2",
"accepts": "~1.1.3",
"batch": "0.5.1",
"debug": "~2.1.0",
"http-errors": "~1.2.7",
"mime-types": "~2.0.2",
"mime-types": "~2.0.3",
"parseurl": "~1.3.0"
},
"devDependencies": {
"istanbul": "0.3.2",
"mocha": "~1.21.5",
"should": "~4.0.0",
"supertest": "~0.14.0"
"after": "0.8.1",
"istanbul": "0.3.3",
"mocha": "~2.0.1",
"supertest": "~0.15.0"
},
"files": [
"public/",

View File

@@ -249,7 +249,7 @@ ul#files.view-details li.header {
display: inline-block;
width: 100%;
text-indent: 0;
background-position: 0 0;
background-position: 0 50%;
}
#files .icon .name {
text-indent: 41px;

View File

@@ -1,9 +1,10 @@
var after = require('after');
var assert = require('assert');
var http = require('http');
var fs = require('fs');
var path = require('path');
var request = require('supertest');
var should = require('should');
var serveIndex = require('..');
var fixtures = path.join(__dirname, '/fixtures');
@@ -13,7 +14,7 @@ var skipRelative = ~relative.indexOf('..') || path.resolve(relative) === relativ
describe('serveIndex(root)', function () {
it('should require root', function () {
serveIndex.should.throw(/root path required/)
assert.throws(serveIndex, /root path required/)
})
it('should serve text/html without Accept header', function (done) {
@@ -146,7 +147,7 @@ describe('serveIndex(root)', function () {
.end(function (err, res) {
if (err) throw err;
var urls = res.text.split(/<a href="([^"]*)"/).filter(function(s, i){ return i%2; });
urls.should.eql([
assert.deepEqual(urls, [
'/%23directory',
'/collect',
'/g%23%20%253%20o%20%252525%20%2537%20dir',
@@ -198,11 +199,8 @@ describe('serveIndex(root)', function () {
request(server)
.get('/')
.expect(200, function (err, res) {
if (err) return done(err)
res.text.should.not.containEql('.hidden')
done()
});
.expect(bodyDoesNotContain('.hidden'))
.expect(200, done)
});
it('should filter hidden files', function (done) {
@@ -210,11 +208,8 @@ describe('serveIndex(root)', function () {
request(server)
.get('/')
.expect(200, function (err, res) {
if (err) return done(err)
res.text.should.not.containEql('.hidden')
done()
});
.expect(bodyDoesNotContain('.hidden'))
.expect(200, done)
});
it('should not filter hidden files', function (done) {
@@ -228,61 +223,51 @@ describe('serveIndex(root)', function () {
describe('with "filter" option', function () {
it('should custom filter files', function (done) {
var seen = false
var cb = after(2, done)
var server = createServer(fixtures, {'filter': filter})
function filter(name) {
if (name.indexOf('foo') === -1) return true
seen = true
cb()
return false
}
request(server)
.get('/')
.expect(200, function (err, res) {
if (err) return done(err)
seen.should.be.true
res.text.should.not.containEql('foo')
done()
});
.expect(bodyDoesNotContain('foo'))
.expect(200, cb)
});
it('should filter after hidden filter', function (done) {
var seen = false
var server = createServer(fixtures, {'filter': filter, 'hidden': false})
function filter(name) {
seen = seen || name.indexOf('.') === 0
if (name.indexOf('.') === 0) {
done(new Error('unexpected hidden file'))
}
return true
}
request(server)
.get('/')
.expect(200, function (err, res) {
if (err) return done(err)
seen.should.be.false
done()
});
.expect(200, done)
});
it('should filter directory paths', function (done) {
var seen = false
var cb = after(3, done)
var server = createServer(fixtures, {'filter': filter})
function filter(name, index, list, dir) {
if (path.normalize(dir) === path.normalize(path.join(fixtures, '/users'))) {
seen = true
cb()
}
return true
}
request(server)
.get('/users')
.expect(200, function (err, res) {
if (err) return done(err)
seen.should.be.true
done()
});
.expect(200, cb)
});
});
@@ -306,10 +291,7 @@ describe('serveIndex(root)', function () {
describe('when using custom handler', function () {
describe('exports.html', function () {
var orig = serveIndex.html
after(function () {
serveIndex.html = orig
})
alterProperty(serveIndex, 'html', serveIndex.html)
it('should get called with Accept: text/html', function (done) {
var server = createServer()
@@ -404,10 +386,7 @@ describe('serveIndex(root)', function () {
});
describe('exports.plain', function () {
var orig = serveIndex.plain
after(function () {
serveIndex.plain = orig
})
alterProperty(serveIndex, 'plain', serveIndex.plain)
it('should get called with Accept: text/plain', function (done) {
var server = createServer()
@@ -425,10 +404,7 @@ describe('serveIndex(root)', function () {
});
describe('exports.json', function () {
var orig = serveIndex.json
after(function () {
serveIndex.json = orig
})
alterProperty(serveIndex, 'json', serveIndex.json)
it('should get called with Accept: application/json', function (done) {
var server = createServer()
@@ -604,6 +580,18 @@ describe('serveIndex(root)', function () {
});
});
function alterProperty(obj, prop, val) {
var prev
beforeEach(function () {
prev = obj[prop]
obj[prop] = val
})
afterEach(function () {
obj[prop] = prev
})
}
function createServer(dir, opts) {
dir = dir || fixtures
@@ -616,3 +604,9 @@ function createServer(dir, opts) {
})
})
}
function bodyDoesNotContain(text) {
return function (res) {
assert.equal(res.text.indexOf(text), -1)
}
}