Skip to content

Commit 3eb9d33

Browse files
committed
Resolve relative paths at middleware setup
1 parent ff3f9c8 commit 3eb9d33

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

History.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
HEAD
2+
3+
* Resolve relative paths at middleware setup
4+
15
1.0.3 / 2014-03-20
26
==================
37

index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
* Module dependencies.
1111
*/
1212

13+
var resolve = require('path').resolve;
1314
var send = require('send');
1415
var url = require('url');
1516

@@ -48,6 +49,9 @@ exports = module.exports = function(root, options){
4849
// root required
4950
if (!root) throw new TypeError('root path required');
5051

52+
// resolve root to absolute
53+
root = resolve(root);
54+
5155
// default redirect
5256
var redirect = false !== options.redirect;
5357

test/test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ process.env.NODE_ENV = 'test';
33

44
var connect = require('connect');
55
var http = require('http');
6+
var path = require('path');
67
var request = require('supertest');
78
var serveStatic = require('..');
89

910
var fixtures = __dirname + '/fixtures';
11+
var relative = path.relative(process.cwd(), fixtures);
12+
13+
var skipRelative = ~relative.indexOf('..') || path.resolve(relative) === relative;
1014

1115
describe('serveStatic()', function(){
1216
describe('basic operations', function(){
@@ -120,6 +124,23 @@ describe('serveStatic()', function(){
120124
});
121125
});
122126

127+
(skipRelative ? describe.skip : describe)('current dir', function(){
128+
var server;
129+
before(function () {
130+
server = createServer('.');
131+
});
132+
after(function (done) {
133+
server.close(done);
134+
});
135+
136+
it('should be served with "."', function(done){
137+
var dest = relative.split(path.sep).join('/');
138+
request(server)
139+
.get('/' + dest + '/todo.txt')
140+
.expect(200, '- groceries', done);
141+
})
142+
})
143+
123144
describe('hidden files', function(){
124145
var server;
125146
before(function () {

0 commit comments

Comments
 (0)