added lexer/parser support for templated metric expressions, karma test runner is working

This commit is contained in:
Torkel Ödegaard
2014-01-01 18:40:25 +01:00
parent 9480077f02
commit cef4349b2a
8 changed files with 139 additions and 11 deletions

27
src/test/karma.conf.js Normal file
View File

@@ -0,0 +1,27 @@
module.exports = function(config) {
config.set({
basePath: '../',
frameworks: ['mocha', 'requirejs', 'expect'],
// list of files / patterns to load in the browser
files: [
'test/test-main.js',
{pattern: 'app/**/*.js', included: false},
{pattern: 'test/**/*.js', included: false}
],
// list of files to exclude
exclude: [
],
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
captureTimeout: 60000,
singleRun: false
});
};

View File

@@ -30,6 +30,15 @@ define([
expect(tokens[tokens.length - 1].value).to.be(')');
});
it('should tokenize metric with template parameter', function() {
var lexer = new Lexer("metric.[[server]].test");
var tokens = lexer.tokenize();
expect(tokens[2].type).to.be('templateStart');
expect(tokens[3].type).to.be('identifier');
expect(tokens[3].value).to.be('server');
expect(tokens[4].type).to.be('templateEnd');
});
it('should handle error with unterminated string', function() {
var lexer = new Lexer("alias(metric, 'asd)");
var tokens = lexer.tokenize();

View File

@@ -54,6 +54,15 @@ define([
expect(rootNode.params[1].type).to.be('metric');
});
it('function with templated series', function() {
var parser = new Parser("sum(test.[[server]].count)");
var rootNode = parser.getAst();
expect(rootNode.message).to.be(undefined)
expect(rootNode.params[0].type).to.be('metric');
expect(rootNode.params[0].segments[1].type).to.be('template');
});
it('invalid metric expression', function() {
var parser = new Parser('metric.test.*.asd.');
var rootNode = parser.getAst();

10
src/test/test-main.js Normal file
View File

@@ -0,0 +1,10 @@
require.config({
baseUrl:'base'
});
require([
'test/specs/lexer-specs',
'test/specs/parser-specs',
], function () {
window.__karma__.start();
});