From 3500a276b94aa7b640bfb21587c3e8b4c2b12643 Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 26 Dec 2015 10:40:56 -0500 Subject: [PATCH 01/11] first draft: makefile --- .editorconfig | 6 +++++- Makefile | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 Makefile diff --git a/.editorconfig b/.editorconfig index e2bfac523..faba85868 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,6 +1,10 @@ root = true -[*] +[Makefile] +indent_style = tab +indent_size = 2 + +[*.js,.eslintrc] charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..aad7eb21f --- /dev/null +++ b/Makefile @@ -0,0 +1,26 @@ +SRC = $(wildcard src/*.js) $(wildcard src/**/*.js) +LIB = $(SRC:src/%=lib/%) +BABEL = node_modules/.bin/babel +MOCHA = node_modules/.bin/mocha + +default: $(LIB) + +lib/%.js: src/%.js + @mkdir -p "$(@D)" + $(BABEL) $< > $@ + +tests/lib/%.js: tests/src/%.js + @mkdir -p "$(@D)" + $(BABEL) $< > $@ + +clean: + rm -rf lib + rm -rf tests/lib + +TEST_SRC = $(wildcard tests/src/*.js) $(wildcard tests/src/**/*.js) +TEST_LIB = $(TEST_SRC:tests/src/%=tests/lib/%) + +test: $(LIB) $(TEST_LIB) + NODE_PATH=./lib $(MOCHA) --recursive --reporter dot tests/lib/ + +.PHONY: clean test \ No newline at end of file From 71358ddc63bf7ccfe6c0a86729c9a2f34a09d15b Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 26 Dec 2015 11:09:20 -0500 Subject: [PATCH 02/11] clean extra lib files --- Makefile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index aad7eb21f..78837fd5a 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,16 @@ SRC = $(wildcard src/*.js) $(wildcard src/**/*.js) LIB = $(SRC:src/%=lib/%) +EXISTING = $(wildcard lib/*.js) $(wildcard lib/**/*.js) +EXTRAS = $(filter-out $(LIB),$(EXISTING)) BABEL = node_modules/.bin/babel MOCHA = node_modules/.bin/mocha -default: $(LIB) +default: $(LIB) | clean-extras +clean-extras: + @rm -f $(EXTRAS) + +# todo: combine these, somehow lib/%.js: src/%.js @mkdir -p "$(@D)" $(BABEL) $< > $@ @@ -20,7 +26,7 @@ clean: TEST_SRC = $(wildcard tests/src/*.js) $(wildcard tests/src/**/*.js) TEST_LIB = $(TEST_SRC:tests/src/%=tests/lib/%) -test: $(LIB) $(TEST_LIB) +test: $(LIB) $(TEST_LIB) | clean-extras NODE_PATH=./lib $(MOCHA) --recursive --reporter dot tests/lib/ -.PHONY: clean test \ No newline at end of file +.PHONY: clean test clean-extras \ No newline at end of file From 9c8c31d55406c8f82a7c07217d8a947b210ac71a Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 26 Dec 2015 11:19:07 -0500 Subject: [PATCH 03/11] clean extra test files --- Makefile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 78837fd5a..ee77e50e6 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,11 @@ SRC = $(wildcard src/*.js) $(wildcard src/**/*.js) LIB = $(SRC:src/%=lib/%) EXISTING = $(wildcard lib/*.js) $(wildcard lib/**/*.js) -EXTRAS = $(filter-out $(LIB),$(EXISTING)) BABEL = node_modules/.bin/babel MOCHA = node_modules/.bin/mocha default: $(LIB) | clean-extras -clean-extras: - @rm -f $(EXTRAS) - # todo: combine these, somehow lib/%.js: src/%.js @mkdir -p "$(@D)" @@ -25,6 +21,12 @@ clean: TEST_SRC = $(wildcard tests/src/*.js) $(wildcard tests/src/**/*.js) TEST_LIB = $(TEST_SRC:tests/src/%=tests/lib/%) +TEST_EXISTING = $(wildcard tests/lib/*.js) $(wildcard tests/lib/**/*.js) + +EXTRAS = $(filter-out $(LIB),$(EXISTING)) $(filter-out $(TEST_LIB),$(TEST_EXISTING)) + +clean-extras: + @rm -f $(EXTRAS) test: $(LIB) $(TEST_LIB) | clean-extras NODE_PATH=./lib $(MOCHA) --recursive --reporter dot tests/lib/ From 0bce8c7d335de9e1d0957ca89505d27f716b18f6 Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Mon, 28 Dec 2015 07:02:31 -0500 Subject: [PATCH 04/11] switched from Makefile to Gulp --- Makefile | 34 ----------------------------- gulpfile.js | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 9 +++++--- 3 files changed, 67 insertions(+), 37 deletions(-) delete mode 100644 Makefile create mode 100644 gulpfile.js diff --git a/Makefile b/Makefile deleted file mode 100644 index ee77e50e6..000000000 --- a/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -SRC = $(wildcard src/*.js) $(wildcard src/**/*.js) -LIB = $(SRC:src/%=lib/%) -EXISTING = $(wildcard lib/*.js) $(wildcard lib/**/*.js) -BABEL = node_modules/.bin/babel -MOCHA = node_modules/.bin/mocha - -default: $(LIB) | clean-extras - -# todo: combine these, somehow -lib/%.js: src/%.js - @mkdir -p "$(@D)" - $(BABEL) $< > $@ - -tests/lib/%.js: tests/src/%.js - @mkdir -p "$(@D)" - $(BABEL) $< > $@ - -clean: - rm -rf lib - rm -rf tests/lib - -TEST_SRC = $(wildcard tests/src/*.js) $(wildcard tests/src/**/*.js) -TEST_LIB = $(TEST_SRC:tests/src/%=tests/lib/%) -TEST_EXISTING = $(wildcard tests/lib/*.js) $(wildcard tests/lib/**/*.js) - -EXTRAS = $(filter-out $(LIB),$(EXISTING)) $(filter-out $(TEST_LIB),$(TEST_EXISTING)) - -clean-extras: - @rm -f $(EXTRAS) - -test: $(LIB) $(TEST_LIB) | clean-extras - NODE_PATH=./lib $(MOCHA) --recursive --reporter dot tests/lib/ - -.PHONY: clean test clean-extras \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 000000000..e5b9406c5 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,61 @@ +var gulp = require('gulp') + , changed = require('gulp-changed') + , babel = require('gulp-babel') + , path = require('path') + , glob = require('glob') + , fs = require('fs') + +var SRC = 'src/**/*.js' + , DEST = 'lib' + +gulp.task('src', function () { + return gulp.src(SRC) + .pipe(changed(DEST)) + .pipe(babel()) + .pipe(gulp.dest(DEST)) +}) + +gulp.task('wipe-extras', function (done) { + // glob into 'lib' and delete whatever isn't there + glob(DEST + '/**/*.js', function (err, files) { + if (err) { + done(err); return + } + + function checkFile(index) { + if (index >= files.length) { + done(); return + } + + var libFilename = files[index] + , srcFilename = path.resolve('src', path.relative(path.resolve(DEST), libFilename)) + + fs.stat(srcFilename, function (err) { + if (err) { + fs.unlink(libFilename, function () { + checkFile(index + 1) + }) + } else { + checkFile(index + 1) + } + }) + } + + + checkFile(0) + }) +}) + +gulp.task('prepublish', ['src', 'wipe-extras']) +gulp.task('default', ['prepublish']) + +gulp.task('tests', function () { + return gulp.src('tests/src/**/*.js') + .pipe(changed('tests/lib')) + .pipe(babel()) + .pipe(gulp.dest('tests/lib')) +}) + +gulp.task('pretest', ['src', 'tests']) + +gulp.task('all', ['default', 'pretest']) diff --git a/package.json b/package.json index 63fbef759..19cbd6fbb 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,8 @@ "test": "NODE_PATH=./lib mocha --recursive --reporter dot tests/lib/", "ci-test": "eslint ./src && npm run-script pretest && istanbul cover --report lcovonly --dir reports/coverage _mocha tests/lib/ -- --recursive --reporter dot", "debug": "NODE_PATH=./lib mocha debug --recursive --reporter dot tests/lib/", - "compile": "rm -rf lib/ && babel -d lib/ src/", - "prepublish": "eslint ./src && npm run compile", - "pretest": "npm run compile && babel -d tests/lib/ tests/src/", + "prepublish": "eslint ./src && gulp prepublish", + "pretest": "gulp pretest", "coveralls": "remap-istanbul -i reports/coverage/coverage.json -o reports/coverage/lcov.info --type lcovonly && cat ./reports/coverage/lcov.info | coveralls" }, "repository": { @@ -44,6 +43,10 @@ "eslint": ">=1.8.0", "eslint-import-resolver-node": "file:./resolvers/node", "eslint-import-resolver-webpack": "file:./resolvers/webpack", + "glob": "^6.0.2", + "gulp": "^3.9.0", + "gulp-babel": "5.x", + "gulp-changed": "^1.3.0", "istanbul": "^0.4.0", "mocha": "^2.2.1", "redux": "^3.0.4", From 8813fd5d5be3bf2585c286ae8c89e54838edff1b Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 16 Jan 2016 22:07:32 -0500 Subject: [PATCH 05/11] reverted Makefile changes to .editorconfig --- .editorconfig | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.editorconfig b/.editorconfig index faba85868..e2bfac523 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,10 +1,6 @@ root = true -[Makefile] -indent_style = tab -indent_size = 2 - -[*.js,.eslintrc] +[*] charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true From 96ed73aed7677ce40c5165321e300086effce80e Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 16 Jan 2016 22:15:07 -0500 Subject: [PATCH 06/11] updated npm scripts to hit gulp directly --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 19cbd6fbb..112ba0408 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,9 @@ }, "scripts": { "watch": "babel -d lib/ src/ --watch & mocha --recursive --reporter dot --compilers js:babel/register --watch tests/src/", - "cover": "npm run pretest && NODE_PATH=./lib istanbul cover --dir reports/coverage _mocha tests/lib/ -- --recursive --reporter dot; remap-istanbul -i reports/coverage/coverage.json -o reports/coverage/lcov-report --type html", + "cover": "gulp pretest && NODE_PATH=./lib istanbul cover --dir reports/coverage _mocha tests/lib/ -- --recursive -R progress", "test": "NODE_PATH=./lib mocha --recursive --reporter dot tests/lib/", - "ci-test": "eslint ./src && npm run-script pretest && istanbul cover --report lcovonly --dir reports/coverage _mocha tests/lib/ -- --recursive --reporter dot", + "ci-test": "eslint ./src && gulp pretest && istanbul cover --report lcovonly --dir reports/coverage _mocha tests/lib/ -- --recursive --reporter dot", "debug": "NODE_PATH=./lib mocha debug --recursive --reporter dot tests/lib/", "prepublish": "eslint ./src && gulp prepublish", "pretest": "gulp pretest", From 0c6731ba9aa1f8b26f6b448bf0d40d508f8fc6b0 Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 16 Jan 2016 22:30:27 -0500 Subject: [PATCH 07/11] added tests/src|lib to wipe-extras --- gulpfile.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index e5b9406c5..5880f7640 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -15,9 +15,16 @@ gulp.task('src', function () { .pipe(gulp.dest(DEST)) }) -gulp.task('wipe-extras', function (done) { +/** + * Delete any file under `dest` that has no corresponding file in `src`. + * I.E. remove generated files that have been orphaned via deletion of their source. + * @param {string} src + * @param {string} dest + * @param {Function} done - callback upon completion + */ +function wipeExtras(src, dest, done) { // glob into 'lib' and delete whatever isn't there - glob(DEST + '/**/*.js', function (err, files) { + glob(dest + '/**/*.js', function (err, files) { if (err) { done(err); return } @@ -28,13 +35,13 @@ gulp.task('wipe-extras', function (done) { } var libFilename = files[index] - , srcFilename = path.resolve('src', path.relative(path.resolve(DEST), libFilename)) + , srcFilename = path.resolve(src, path.relative(path.resolve(dest), libFilename)) fs.stat(srcFilename, function (err) { if (err) { fs.unlink(libFilename, function () { checkFile(index + 1) - }) + }) } else { checkFile(index + 1) } @@ -44,6 +51,16 @@ gulp.task('wipe-extras', function (done) { checkFile(0) }) +} + +gulp.task('wipe-extras', function (done) { + var unfinished = 2 + function megadone(err) { + if (err) { done(err); return } + if (--unfinished === 0) done() + } + wipeExtras('src', DEST, megadone) + wipeExtras('tests/src', 'tests/lib', megadone) }) gulp.task('prepublish', ['src', 'wipe-extras']) @@ -56,6 +73,6 @@ gulp.task('tests', function () { .pipe(gulp.dest('tests/lib')) }) -gulp.task('pretest', ['src', 'tests']) +gulp.task('pretest', ['src', 'tests', 'wipe-extras']) gulp.task('all', ['default', 'pretest']) From ca0836616778d7c5a1129c885e85f2709425a1c5 Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 16 Jan 2016 22:55:29 -0500 Subject: [PATCH 08/11] moved tests / watch to gulpfile (which now works!) --- gulpfile.js | 14 ++++++++++++-- package.json | 6 +++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 5880f7640..a82b91011 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,6 +1,7 @@ var gulp = require('gulp') , changed = require('gulp-changed') , babel = require('gulp-babel') + , mocha = require('gulp-mocha') , path = require('path') , glob = require('glob') , fs = require('fs') @@ -64,7 +65,6 @@ gulp.task('wipe-extras', function (done) { }) gulp.task('prepublish', ['src', 'wipe-extras']) -gulp.task('default', ['prepublish']) gulp.task('tests', function () { return gulp.src('tests/src/**/*.js') @@ -73,6 +73,16 @@ gulp.task('tests', function () { .pipe(gulp.dest('tests/lib')) }) +// used externally by Istanbul, too gulp.task('pretest', ['src', 'tests', 'wipe-extras']) -gulp.task('all', ['default', 'pretest']) +gulp.task('test', ['pretest'], function () { + return gulp.src('tests/lib/**/*.js') + .pipe(mocha({ reporter: 'dot' })) + // NODE_PATH=./lib mocha --recursive --reporter dot tests/lib/ +}) + +gulp.task('watch-test', function () { + gulp.watch(SRC, ['test']) + gulp.watch('tests/' + SRC, ['test']) +}) diff --git a/package.json b/package.json index 112ba0408..374167cbf 100644 --- a/package.json +++ b/package.json @@ -7,13 +7,12 @@ "test": "tests" }, "scripts": { - "watch": "babel -d lib/ src/ --watch & mocha --recursive --reporter dot --compilers js:babel/register --watch tests/src/", + "watch": "NODE_PATH=./lib gulp watch-test", "cover": "gulp pretest && NODE_PATH=./lib istanbul cover --dir reports/coverage _mocha tests/lib/ -- --recursive -R progress", - "test": "NODE_PATH=./lib mocha --recursive --reporter dot tests/lib/", + "test": "NODE_PATH=./lib gulp test", "ci-test": "eslint ./src && gulp pretest && istanbul cover --report lcovonly --dir reports/coverage _mocha tests/lib/ -- --recursive --reporter dot", "debug": "NODE_PATH=./lib mocha debug --recursive --reporter dot tests/lib/", "prepublish": "eslint ./src && gulp prepublish", - "pretest": "gulp pretest", "coveralls": "remap-istanbul -i reports/coverage/coverage.json -o reports/coverage/lcov.info --type lcovonly && cat ./reports/coverage/lcov.info | coveralls" }, "repository": { @@ -47,6 +46,7 @@ "gulp": "^3.9.0", "gulp-babel": "5.x", "gulp-changed": "^1.3.0", + "gulp-mocha": "^2.2.0", "istanbul": "^0.4.0", "mocha": "^2.2.1", "redux": "^3.0.4", From 85a04559f171e4b937db248bc51f9602d4acd8e5 Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 16 Jan 2016 22:56:04 -0500 Subject: [PATCH 09/11] disabling coveralls until able to resolve --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index e71d76b16..6f2793d32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,5 +17,6 @@ script: - "npm run-script ci-test" - "for resolver in ./resolvers/*; do cd $resolver && npm test && cd ../..; done" -after_success: - - npm run coveralls +# something broke remap-istanbul :-( +# after_success: +# - npm run coveralls From 53df4e77607a28cbae1e8a59c914da283cbbd7b6 Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 16 Jan 2016 22:57:17 -0500 Subject: [PATCH 10/11] don't read test files --- gulpfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index a82b91011..8b4299b01 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -77,7 +77,7 @@ gulp.task('tests', function () { gulp.task('pretest', ['src', 'tests', 'wipe-extras']) gulp.task('test', ['pretest'], function () { - return gulp.src('tests/lib/**/*.js') + return gulp.src('tests/lib/**/*.js', { read: false }) .pipe(mocha({ reporter: 'dot' })) // NODE_PATH=./lib mocha --recursive --reporter dot tests/lib/ }) From 8be5929ada07a9c49ecac8729628c90c8bc5854c Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Sat, 16 Jan 2016 23:02:51 -0500 Subject: [PATCH 11/11] appveyor fail --- appveyor.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index b1dd612fb..a2859cf6d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -38,10 +38,8 @@ test_script: - npm --version # Lint - ./node_modules/.bin/eslint ./src - # Compile - - npm run-script pretest # core tests - - ./node_modules/.bin/mocha tests/lib/ --recursive --reporter dot + - ./node_modules/.bin/gulp test # resolver tests - cd .\resolvers\webpack && npm test && cd ..\.. - cd .\resolvers\node && npm test && cd ..\..