Skip to content

Commit

Permalink
Merge pull request #3125 from hypothesis/dev-add-test-grep-option
Browse files Browse the repository at this point in the history
Support filtering test suites to run using '--grep' argument to gulp
  • Loading branch information
nickstenning committed Mar 22, 2016
2 parents 913cf7e + 129dcc0 commit 263082c
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 22 deletions.
9 changes: 6 additions & 3 deletions docs/hacking/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -257,9 +257,12 @@ source code. To start the test runner in auto-watch mode, run:
gulp test-watch-app
You can further speed up the testing cycle for front-end code by using
mocha's `.only()`_ to only run a particular suite of tests or even just
a single test.
To run only a subset of tests for front-end code, use the ``--grep``
argument or mocha's `.only()`_ modifier.

.. code-block:: bash
gulp test-watch-app --grep <pattern>
.. _.only(): http://jaketrent.com/post/run-single-mocha-test/

Expand Down
61 changes: 42 additions & 19 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@ require('core-js/es6/promise');
require('core-js/fn/object/assign');
require('core-js/fn/string');

var path = require('path');

var batch = require('gulp-batch');
var changed = require('gulp-changed');
var commander = require('commander');
var endOfStream = require('end-of-stream');
var gulp = require('gulp');
var gulpIf = require('gulp-if');
var gulpUtil = require('gulp-util');
var sass = require('gulp-sass');
var postcss = require('gulp-postcss');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');

var manifest = require('./scripts/gulp/manifest');
Expand All @@ -24,6 +27,24 @@ var STYLE_DIR = 'build/styles';
var FONTS_DIR = 'build/fonts';
var IMAGES_DIR = 'build/images';

function parseCommandLine() {
commander
// Test configuration.
// See https://github.com/karma-runner/karma-mocha#configuration
.option('--grep [pattern]', 'Run only tests matching a given pattern')
.parse(process.argv);

if (commander.grep) {
gulpUtil.log(`Running tests matching pattern /${commander.grep}/`);
}

return {
grep: commander.grep,
};
}

var taskArgs = parseCommandLine();

function isSASSFile(file) {
return file.path.match(/\.scss$/);
}
Expand Down Expand Up @@ -224,34 +245,36 @@ gulp.task('watch',
'watch-images',
'watch-manifest']);

gulp.task('test-app', function (callback) {
function runKarma(baseConfig, opts, done) {
// See https://github.com/karma-runner/karma-mocha#configuration
var cliOpts = {
client: {
mocha: {
grep: taskArgs.grep,
}
},
};

var karma = require('karma');
new karma.Server({
configFile: __dirname + '/h/static/scripts/karma.config.js',
singleRun: true,
}, callback).start();
new karma.Server(Object.assign({}, {
configFile: path.resolve(__dirname, baseConfig),
}, cliOpts, opts), done).start();
}

gulp.task('test-app', function (callback) {
runKarma('./h/static/scripts/karma.config.js', {singleRun:true}, callback);
});

gulp.task('test-extension', function (callback) {
var karma = require('karma');
new karma.Server({
configFile: __dirname + '/h/browser/chrome/karma.config.js',
singleRun: true,
}, callback).start();
runKarma('./h/browser/chrome/karma.config.js', {singleRun:true}, callback);
});

gulp.task('test-watch-app', function (callback) {
var karma = require('karma');
new karma.Server({
configFile: __dirname + '/h/static/scripts/karma.config.js',
}, callback).start();
runKarma('./h/static/scripts/karma.config.js', {}, callback);
});

gulp.task('test-watch-extension', function (callback) {
var karma = require('karma');
new karma.Server({
configFile: __dirname + '/h/browser/chrome/karma.config.js',
}, callback).start();
runKarma('./h/browser/chrome/karma.config.js', {}, callback);
});

gulp.task('upload-sourcemaps',
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"browserify-ngannotate": "^1.0.1",
"browserify-shim": "^3.8.12",
"coffeeify": "^1.0.0",
"commander": "^2.9.0",
"compass-mixins": "^0.12.7",
"core-js": "^1.2.5",
"diff-match-patch": "^1.0.0",
Expand Down

0 comments on commit 263082c

Please sign in to comment.