Skip to content

Commit 58fb9fd

Browse files
committed
Add extensions option
1 parent 90b8f98 commit 58fb9fd

File tree

5 files changed

+58
-1
lines changed

5 files changed

+58
-1
lines changed

History.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
unreleased
2+
==========
3+
4+
5+
- Add `extensions` option
6+
17
1.4.4 / 2014-08-04
28
==================
39

Readme.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ The default value is `'ignore'`.
4646

4747
Enable or disable etag generation, defaults to true.
4848

49+
##### extensions
50+
51+
Set file extension fallbacks. When set, if a file is not found, the given
52+
extensions will be added to the file name and search for. The first that
53+
exists will be served. Example: `['html', 'htm']`.
54+
55+
The default value is `false`.
56+
4957
##### index
5058

5159
By default this module will send "index.html" files in response to a request

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"dependencies": {
99
"escape-html": "1.0.1",
1010
"parseurl": "~1.2.0",
11-
"send": "0.7.4"
11+
"send": "0.8.1"
1212
},
1313
"devDependencies": {
1414
"istanbul": "0.3.0",

test/fixtures/todo.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<li>groceries</li>

test/test.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,48 @@ describe('serveStatic()', function(){
114114
})
115115
})
116116

117+
describe('extensions', function () {
118+
it('should be not be enabled by default', function (done) {
119+
var server = createServer(fixtures);
120+
121+
request(server)
122+
.get('/todo')
123+
.expect(404, done);
124+
})
125+
126+
it('should be configurable', function (done) {
127+
var server = createServer(fixtures, {'extensions': 'txt'});
128+
129+
request(server)
130+
.get('/todo')
131+
.expect(200, '- groceries', done);
132+
})
133+
134+
it('should support disabling extensions', function (done) {
135+
var server = createServer(fixtures, {'extensions': false});
136+
137+
request(server)
138+
.get('/todo')
139+
.expect(404, done);
140+
})
141+
142+
it('should support fallbacks', function (done) {
143+
var server = createServer(fixtures, {'extensions': ['htm', 'html', 'txt']});
144+
145+
request(server)
146+
.get('/todo')
147+
.expect(200, '<li>groceries</li>', done);
148+
})
149+
150+
it('should 404 if nothing found', function (done) {
151+
var server = createServer(fixtures, {'extensions': ['htm', 'html', 'txt']});
152+
153+
request(server)
154+
.get('/bob')
155+
.expect(404, done)
156+
})
157+
})
158+
117159
describe('hidden files', function(){
118160
var server;
119161
before(function () {

0 commit comments

Comments
 (0)