blob: 5933b9b43dfed3be81255f4d4767f153f0f0d2bc [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
var fs = require('fs');
var path = require('path');
var express = require('express');
var collect = require('./collect');
var testLibName = path.join(__dirname, '..', '..', 'pkg', 'cordova.test.js');
var testLib = fs.readFileSync(testLibName, 'utf8');
var pathToTemplate = path.join(__dirname, '..', 'templates', 'suite.html');
var pathToVendor = path.join(__dirname, '..', 'vendor');
var pathToJasmine = path.join(__dirname, '..', '..', 'node_modules', 'jasmine-node', 'lib', 'jasmine-node');
var pathToTests = path.join(__dirname, '..', '..', 'test');
var template = fs.readFileSync(pathToTemplate, "utf-8");
// middlewar for GET '/cordova.test.js'
function cordovajs(req, res) {
res.writeHead(200, {
"Cache-Control": "no-cache",
"Content-Type": "text/javascript"
});
res.end(testLib);
}
// middleware for GET '/'
function root(req, res) {
res.writeHead(200, {
"Cache-Control": "no-cache",
"Content-Type": "text/html"
});
//FIXME in place collect thing is atrocious
//create the script tags to include
var tests = [];
collect(path.join(__dirname, '..', '..', 'test'), tests);
var specs = tests.map(function (file, path) {
return '<script src="' + file.replace(/\\/g, '/').replace(/^.*\/test\//, "/") +
'" type="text/javascript" charset="utf-8"></script>';
}).join('\n');
template = template.replace(/<!-- ##TESTS## -->/g, specs);
// write the document
res.end(template);
}
// connect router defn
function routes(app) {
app.get('/cordova.test.js', cordovajs);
app.get('/', root);
}
module.exports = function() {
console.log('starting browser-based tests');
var app = express();
app.set('port', 3000);
app.use(express.static(pathToVendor));
app.use(express.static(pathToJasmine));
app.use(express.static(pathToTests));
routes(app);
app.listen(3000, () => console.log('Test Server running on: http://localhost:3000'));
};