178 lines
8.3 KiB
Makefile
178 lines
8.3 KiB
Makefile
PACKAGE = nodeunit
|
|
NODEJS = $(if $(shell test -f /usr/bin/nodejs && echo "true"),nodejs,node)
|
|
|
|
PREFIX ?= /usr/local
|
|
BINDIR ?= $(PREFIX)/bin
|
|
DATADIR ?= $(PREFIX)/share
|
|
MANDIR ?= $(PREFIX)/share/man
|
|
LIBDIR ?= $(PREFIX)/lib
|
|
NODEJSLIBDIR ?= $(LIBDIR)/$(NODEJS)
|
|
|
|
BUILDDIR = dist
|
|
|
|
DOCS = $(shell find doc -name '*.md' \
|
|
|sed 's|.md|.1|g' \
|
|
|sed 's|doc/|man1/|g' \
|
|
)
|
|
|
|
|
|
$(shell if [ ! -d $(BUILDDIR) ]; then mkdir $(BUILDDIR); fi)
|
|
|
|
all: build doc
|
|
|
|
browser:
|
|
# super hacky build script for browser version!
|
|
mkdir -p $(BUILDDIR)/browser
|
|
rm -rf $(BUILDDIR)/browser/*
|
|
# build browser version of nodeunit.js
|
|
cat share/license.js >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "nodeunit = (function(){" >> $(BUILDDIR)/browser/nodeunit.js
|
|
cat deps/json2.js >> $(BUILDDIR)/browser/nodeunit.js
|
|
# make assert global
|
|
echo "var assert = this.assert = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "var types = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "var core = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "var nodeunit = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "var reporter = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
|
cat deps/async.js >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js
|
|
cat lib/assert.js >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "})(assert);" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js
|
|
cat lib/types.js >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "})(types);" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js
|
|
cat lib/core.js >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "})(core);" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js
|
|
cat lib/reporters/browser.js >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "})(reporter);" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "nodeunit = core;" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "nodeunit.assert = assert;" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "nodeunit.reporter = reporter;" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "nodeunit.run = reporter.run;" >> $(BUILDDIR)/browser/nodeunit.js
|
|
echo "return nodeunit; })();" >> $(BUILDDIR)/browser/nodeunit.js
|
|
cp $(BUILDDIR)/browser/nodeunit.js $(BUILDDIR)/browser/.nodeunit.js
|
|
sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.nodeunit.js > $(BUILDDIR)/browser/nodeunit.js
|
|
rm $(BUILDDIR)/browser/.nodeunit.js
|
|
# copy nodeunit.css
|
|
cp share/nodeunit.css $(BUILDDIR)/browser/nodeunit.css
|
|
# create nodeunit.min.js
|
|
node_modules/uglify-js/bin/uglifyjs $(BUILDDIR)/browser/nodeunit.js > $(BUILDDIR)/browser/nodeunit.min.js
|
|
# create test scripts
|
|
mkdir -p $(BUILDDIR)/browser/test
|
|
cp test/test.html $(BUILDDIR)/browser/test/test.html
|
|
# test-base.js
|
|
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-base.js
|
|
cat test/test-base.js >> $(BUILDDIR)/browser/test/test-base.js
|
|
echo "})(this.test_base = {});" >> $(BUILDDIR)/browser/test/test-base.js
|
|
cp $(BUILDDIR)/browser/test/test-base.js $(BUILDDIR)/browser/.test-base.js
|
|
sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-base.js > $(BUILDDIR)/browser/test/test-base.js
|
|
rm $(BUILDDIR)/browser/.test-base.js
|
|
# test-runmodule.js
|
|
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-runmodule.js
|
|
cat test/test-runmodule.js >> $(BUILDDIR)/browser/test/test-runmodule.js
|
|
echo "})(this.test_runmodule = {});" >> $(BUILDDIR)/browser/test/test-runmodule.js
|
|
cp $(BUILDDIR)/browser/test/test-runmodule.js $(BUILDDIR)/browser/.test-runmodule.js
|
|
sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-runmodule.js > $(BUILDDIR)/browser/test/test-runmodule.js
|
|
rm $(BUILDDIR)/browser/.test-runmodule.js
|
|
# test-runtest.js
|
|
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-runtest.js
|
|
cat test/test-runtest.js >> $(BUILDDIR)/browser/test/test-runtest.js
|
|
echo "})(this.test_runtest = {});" >> $(BUILDDIR)/browser/test/test-runtest.js
|
|
cp $(BUILDDIR)/browser/test/test-runtest.js $(BUILDDIR)/browser/.test-runtest.js
|
|
sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-runtest.js > $(BUILDDIR)/browser/test/test-runtest.js
|
|
rm $(BUILDDIR)/browser/.test-runtest.js
|
|
# test-testcase.js
|
|
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-testcase.js
|
|
cat test/test-testcase.js >> $(BUILDDIR)/browser/test/test-testcase.js
|
|
echo "})(this.test_testcase = {});" >> $(BUILDDIR)/browser/test/test-testcase.js
|
|
cp $(BUILDDIR)/browser/test/test-testcase.js $(BUILDDIR)/browser/.test-testcase.js
|
|
sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-testcase.js > $(BUILDDIR)/browser/test/test-testcase.js
|
|
rm $(BUILDDIR)/browser/.test-testcase.js
|
|
# test-testcase-legacy.js
|
|
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-testcase-legacy.js
|
|
cat test/test-testcase-legacy.js >> $(BUILDDIR)/browser/test/test-testcase-legacy.js
|
|
echo "})(this.test_testcase_legacy = {});" >> $(BUILDDIR)/browser/test/test-testcase-legacy.js
|
|
cp $(BUILDDIR)/browser/test/test-testcase-legacy.js $(BUILDDIR)/browser/.test-testcase-legacy.js
|
|
sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-testcase-legacy.js > $(BUILDDIR)/browser/test/test-testcase-legacy.js
|
|
rm $(BUILDDIR)/browser/.test-testcase-legacy.js
|
|
# copy nodeunit.js to dist/browser/test to make it easier for me to host and
|
|
# run on windows VMs with IE
|
|
cp $(BUILDDIR)/browser/nodeunit.js $(BUILDDIR)/browser/test/nodeunit.js
|
|
cp $(BUILDDIR)/browser/nodeunit.css $(BUILDDIR)/browser/test/nodeunit.css
|
|
|
|
commonjs:
|
|
# super hacky build script for browser commonjs version!
|
|
##### make commonjs browser module ######
|
|
mkdir -p $(BUILDDIR)/commonjs
|
|
rm -rf $(BUILDDIR)/commonjs/*
|
|
mkdir -p $(BUILDDIR)/commonjs/deps
|
|
cp deps/json2.js $(BUILDDIR)/commonjs/deps
|
|
cp deps/async.js $(BUILDDIR)/commonjs/deps
|
|
echo "var async = require('async');" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "var assert = {};" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "var types = {};" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "var core = {};" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "var nodeunit = {};" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "var reporter = {};" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "(function(exports){" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
cat lib/assert.js >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "})(assert);" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "(function(exports){" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
cat lib/types.js >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "})(types);" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "(function(exports){" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
cat lib/core.js >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "})(core);" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "module.exports = core;" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "(function(exports, nodeunit){" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
cat lib/reporters/browser.js >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "})(reporter, module.exports);" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "module.exports.assert = assert;" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "module.exports.reporter = reporter;" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
echo "module.exports.run = reporter.run;" >> $(BUILDDIR)/commonjs/nodeunit.js
|
|
sed -i "/\@REMOVE_LINE_FOR_BROWSER/d" $(BUILDDIR)/commonjs/nodeunit.js
|
|
sed -i "/\@REMOVE_LINE_FOR_COMMONJS/d" $(BUILDDIR)/commonjs/nodeunit.js
|
|
##### end of commonjs browser module #####
|
|
|
|
build: stamp-build
|
|
|
|
stamp-build: $(wildcard deps/* lib/*.js)
|
|
touch $@;
|
|
mkdir -p $(BUILDDIR)/nodeunit
|
|
cp -R bin node_modules deps index.js lib package.json share $(BUILDDIR)/nodeunit
|
|
printf '#!/bin/sh\n$(NODEJS) $(NODEJSLIBDIR)/$(PACKAGE)/bin/nodeunit $$@' > $(BUILDDIR)/nodeunit.sh
|
|
|
|
test:
|
|
$(NODEJS) ./bin/nodeunit test
|
|
|
|
install: build
|
|
install -d $(NODEJSLIBDIR)
|
|
cp -a $(BUILDDIR)/nodeunit $(NODEJSLIBDIR)
|
|
install -m 0755 $(BUILDDIR)/nodeunit.sh $(BINDIR)/nodeunit
|
|
install -d $(MANDIR)/man1/
|
|
cp -a man1/nodeunit.1 $(MANDIR)/man1/
|
|
|
|
uninstall:
|
|
rm -rf $(NODEJSLIBDIR)/nodeunit $(NODEJSLIBDIR)/nodeunit.js $(BINDIR)/nodeunit
|
|
rm -rf $(MANDIR)/man1/nodeunit.1
|
|
|
|
clean:
|
|
rm -rf $(BUILDDIR) stamp-build
|
|
|
|
lint:
|
|
nodelint --config nodelint.cfg ./index.js ./bin/nodeunit ./bin/nodeunit.json ./lib/*.js ./lib/reporters/*.js ./test/*.js
|
|
|
|
doc: man1 $(DOCS)
|
|
@true
|
|
|
|
man1:
|
|
@if ! test -d man1 ; then mkdir -p man1 ; fi
|
|
|
|
# use `npm install ronn` for this to work.
|
|
man1/%.1: doc/%.md
|
|
ronn --roff $< > $@
|
|
|
|
.PHONY: browser test install uninstall build all
|