diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/deep-is/.npmignore b/javascript/base/exercices/tests-unitaires/.gitignore
similarity index 100%
rename from javascript/base/exercices/tests-unitaires/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/deep-is/.npmignore
rename to javascript/base/exercices/tests-unitaires/.gitignore
diff --git a/javascript/base/exercices/tests-unitaires/README.md b/javascript/base/exercices/tests-unitaires/README.md
new file mode 100644
index 0000000..663d4c8
--- /dev/null
+++ b/javascript/base/exercices/tests-unitaires/README.md
@@ -0,0 +1,6 @@
+# Tests unitiaires, exemple NodeUnit
+
+```
+npm install
+./node_modules/.bin/nodeunit math-suite.js
+```
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/.bin/nodeunit b/javascript/base/exercices/tests-unitaires/node_modules/.bin/nodeunit
deleted file mode 120000
index f31cdbe..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/.bin/nodeunit
+++ /dev/null
@@ -1 +0,0 @@
-../nodeunit/bin/nodeunit
\ No newline at end of file
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/.npmignore b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/.npmignore
deleted file mode 100644
index 1a82501..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-dist
-stamp-build
-test/fixtures/dir2
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/CONTRIBUTORS.md b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/CONTRIBUTORS.md
deleted file mode 100644
index fba3609..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/CONTRIBUTORS.md
+++ /dev/null
@@ -1,68 +0,0 @@
-Nodeunit contributors (sorted alphabeticaly)
-============================================
-
-* **[Alex Gorbatchev](https://github.com/alexgorbatchev)**
-
- * Deeper default object inspection
- * Timeout to ensure flushing of console output (default reporter)
-
-* **[Alex Wolfe](https://github.com/alexkwolfe)**
-
- * HTML test reporter
-
-* **[Caolan McMahon](https://github.com/caolan)**
-
- * Author and maintainer
- * Most features develpopment
-
-* **[Carl Fürstenberg](https://github.com/azatoth)**
-
- * Debian-friendly Makefile, supports both 'node' and 'nodejs' executables
- * Sandbox utility
- * Minimal test reporter
-
-* **[Gerad Suyderhoud](https://github.com/gerad)**
-
- * First comand-line tool
-
-* **[Kadir Pekel](https://github.com/kadirpekel)**
-
- * Improvements to default test reporter
- * HTTP test utility
-
-* **[Λlisue](https://github.com/lambdalisue)**
-
- * Add machineout reporter
-
-* **[Matthias Lübken](https://github.com/luebken)**
-
- * Utility functions for tracking incomplete tests on exit
-
-* **[Oleg Efimov](https://github.com/Sannis)**
-
- * Adding 'make lint' and fixing nodelint errors
- * Option parsing, --help text and config file support
- * Reporters option for command-line tool
-
-* **[Orlando Vazquez](https://github.com/orlandov)**
-
- * Added jUnit XML reporter
-
-* **[Ryan Dahl](https://github.com/ry)**
-
- * Add package.json
-
-* **[Sam Stephenson](https://github.com/sstephenson)**
-
- * Coffee-script support
-
-* **[Thomas Mayfield](https://github.com/thegreatape)**
-
- * Async setUp and tearDown support for testCase
-
-* **[Maciej Małecki](https://github.com/mmalecki)**
-
- * Removal of `testCase`
-
-**[Full contributors list](https://github.com/caolan/nodeunit/contributors).**
-
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/LICENSE b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/LICENSE
deleted file mode 100644
index b7f9d50..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Caolan McMahon
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/Makefile b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/Makefile
deleted file mode 100644
index 8f8d8cb..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/Makefile
+++ /dev/null
@@ -1,177 +0,0 @@
-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
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/README.md b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/README.md
deleted file mode 100644
index 43605b1..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/README.md
+++ /dev/null
@@ -1,468 +0,0 @@
-Nodeunit
-========
-
-Simple syntax, powerful tools. Nodeunit provides easy async unit testing for
-node.js and the browser.
-
-* Simple to use
-* Just export the tests from a module
-* Works with node.js and in the browser
-* Helps you avoid common pitfalls when testing asynchronous code
-* Easy to add test cases with setUp and tearDown functions if you wish
-* Flexible reporters for custom output, built-in support for HTML and jUnit XML
-* Allows the use of mocks and stubs
-
-__Contributors__
-
-* [alexgorbatchev](https://github.com/alexgorbatchev)
-* [alexkwolfe](https://github.com/alexkwolfe)
-* [azatoth](https://github.com/azatoth)
-* [kadirpekel](https://github.com/kadirpekel)
-* [lambdalisue](https://github.com/lambdalisue)
-* [luebken](https://github.com/luebken)
-* [orlandov](https://github.com/orlandov)
-* [Sannis](https://github.com/Sannis)
-* [sstephenson](https://github.com/sstephenson)
-* [thegreatape](https://github.com/thegreatape)
-* [mmalecki](https://github.com/mmalecki)
-* and thanks to [cjohansen](https://github.com/cjohansen) for input and advice
- on implementing setUp and tearDown functions. See
- [cjohansen's fork](https://github.com/cjohansen/nodeunit).
-
-Also, check out gerad's [nodeunit-dsl](https://github.com/gerad/nodeunit-dsl)
-project, which implements a 'pretty dsl on top of nodeunit'.
-
-More contributor information can be found in the
-[CONTRIBUTORS.md](https://github.com/caolan/nodeunit/blob/master/CONTRIBUTORS.md)
-file.
-
-Usage
------
-
-Here is an example unit test module:
-
- exports.testSomething = function(test){
- test.expect(1);
- test.ok(true, "this assertion should pass");
- test.done();
- };
-
- exports.testSomethingElse = function(test){
- test.ok(false, "this assertion should fail");
- test.done();
- };
-
-When run using the included test runner, this will output the following:
-
-
-
-Installation
-------------
-
-There are two options for installing nodeunit:
-
-1. Clone / download nodeunit from [github](https://github.com/caolan/nodeunit),
- then:
-
- make && sudo make install
-
-2. Install via npm:
-
- npm install nodeunit -g
-
-API Documentation
------------------
-
-Nodeunit uses the functions available in the node.js
-[assert module](http://nodejs.org/docs/v0.4.2/api/assert.html):
-
-* __ok(value, [message])__ - Tests if value is a true value.
-* __equal(actual, expected, [message])__ - Tests shallow, coercive equality
- with the equal comparison operator ( == ).
-* __notEqual(actual, expected, [message])__ - Tests shallow, coercive
- non-equality with the not equal comparison operator ( != ).
-* __deepEqual(actual, expected, [message])__ - Tests for deep equality.
-* __notDeepEqual(actual, expected, [message])__ - Tests for any deep
- inequality.
-* __strictEqual(actual, expected, [message])__ - Tests strict equality, as
- determined by the strict equality operator ( === )
-* __notStrictEqual(actual, expected, [message])__ - Tests strict non-equality,
- as determined by the strict not equal operator ( !== )
-* __throws(block, [error], [message])__ - Expects block to throw an error.
-* __doesNotThrow(block, [error], [message])__ - Expects block not to throw an
- error.
-* __ifError(value)__ - Tests if value is not a false value, throws if it is a
- true value. Useful when testing the first argument, error in callbacks.
-
-Nodeunit also provides the following functions within tests:
-
-* __expect(amount)__ - Specify how many assertions are expected to run within a
- test. Very useful for ensuring that all your callbacks and assertions are
- run.
-* __done()__ - Finish the current test function, and move on to the next. ALL
- tests should call this!
-
-Nodeunit aims to be simple and easy to learn. This is achieved through using
-existing structures (such as node.js modules) to maximum effect, and reducing
-the API where possible, to make it easier to digest.
-
-Tests are simply exported from a module, but they are still run in the order
-they are defined.
-
-__Note:__ Users of old nodeunit versions may remember using `ok`, `equals` and
-`same` in the style of qunit, instead of the assert functions above. These
-functions still exist for backwards compatibility, and are simply aliases to
-their assert module counterparts.
-
-
-Asynchronous Testing
---------------------
-
-When testing asynchronous code, there are a number of sharp edges to watch out
-for. Thankfully, nodeunit is designed to help you avoid as many of these
-pitfalls as possible. For the most part, testing asynchronous code in nodeunit
-_just works_.
-
-
-### Tests run in series
-
-While running tests in parallel seems like a good idea for speeding up your
-test suite, in practice I've found it means writing much more complicated
-tests. Because of node's module cache, running tests in parallel means mocking
-and stubbing is pretty much impossible. One of the nicest things about testing
-in javascript is the ease of doing stubs:
-
- var _readFile = fs.readFile;
- fs.readFile = function(path, callback){
- // it's a stub!
- };
- // test function that uses fs.readFile
-
- // we're done
- fs.readFile = _readFile;
-
-You cannot do this when running tests in parallel. In order to keep testing as
-simple as possible, nodeunit avoids it. Thankfully, most unit-test suites run
-fast anyway.
-
-
-### Explicit ending of tests
-
-When testing async code it's important that tests end at the correct point, not
-just after a given number of assertions. Otherwise your tests can run short,
-ending before all assertions have completed. It's important to detect too
-many assertions as well as too few. Combining explicit ending of tests with
-an expected number of assertions helps to avoid false test passes, so be sure
-to use the `test.expect()` method at the start of your test functions, and
-`test.done()` when finished.
-
-
-Groups, setUp and tearDown
---------------------------
-
-Nodeunit allows the nesting of test functions:
-
- exports.test1 = function (test) {
- ...
- }
-
- exports.group = {
- test2: function (test) {
- ...
- },
- test3: function (test) {
- ...
- }
- }
-
-This would be run as:
-
- test1
- group - test2
- group - test3
-
-Using these groups, Nodeunit allows you to define a `setUp` function, which is
-run before each test, and a `tearDown` function, which is run after each test
-calls `test.done()`:
-
- module.exports = {
- setUp: function (callback) {
- this.foo = 'bar';
- callback();
- },
- tearDown: function (callback) {
- // clean up
- callback();
- },
- test1: function (test) {
- test.equals(this.foo, 'bar');
- test.done();
- }
- };
-
-In this way, it's possible to have multiple groups of tests in a module, each
-group with its own setUp and tearDown functions.
-
-
-Running Tests
--------------
-
-Nodeunit comes with a basic command-line test runner, which can be installed
-using `sudo make install`. Example usage:
-
- nodeunit testmodule1.js testfolder [...]
-
-If no entry file specified, `test` defaults.
-
-The default test reporter uses color output, because I think that's more fun :) I
-intend to add a no-color option in future. To give you a feeling of the fun you'll
-be having writing tests, lets fix the example at the start of the README:
-
-
-
-Ahhh, Doesn't that feel better?
-
-When using the included test runner, it will exit using the failed number of
-assertions as the exit code. This means it exits with 0 when all tests pass.
-
-
-### Command-line Options
-
-* __--reporter FILE__ - you can set the test reporter to a custom module or
-on of the modules in nodeunit/lib/reporters, when omitted, the default test runner
-is used.
-* __--list-reporters__ - list available built-in reporters.
-* __--config FILE__ - load config options from a JSON file, allows
-the customisation of color schemes for the default test reporter etc. See
-bin/nodeunit.json for current available options.
-* __-t testName__ - run specifc test only.
-* __-f fullTestName__ - run specific test only. fullTestName is built so: "outerGroup - .. - innerGroup - testName".
-* __--version__ or __-v__ - report nodeunit version
-* __--help__ - show nodeunit help
-
-
-Running tests in the browser
-----------------------------
-
-Nodeunit tests can also be run inside the browser. For example usage, see
-the examples/browser folder. The basic syntax is as follows:
-
-__test.html__
-
-
-
- Example Test Suite
-
-
-
-
-
-
-
Example Test Suite
-
-
-
-
-Here, `suite1` and `suite2` are just object literals containing test functions
-or groups, as would be returned if you did `require('test-suite')` in node.js:
-
-__suite1.js__
-
- this.suite1 = {
- 'example test': function (test) {
- test.ok(true, 'everything is ok');
- test.done();
- }
- };
-
-If you wish to use a commonjs format for your test suites (using exports), it is
-up to you to define the commonjs tools for the browser. There are a number of
-alternatives and it's important it fits with your existing code, which is
-why nodeunit does not currently provide this out of the box.
-
-In the example above, the tests will run when the page is loaded.
-
-The browser-version of nodeunit.js is created in dist/browser when you do, `make
-browser`. You'll need [UglifyJS](https://github.com/mishoo/UglifyJS) installed in
-order for it to automatically create nodeunit.min.js.
-
-
-Adding nodeunit to Your Projects
---------------------------------
-
-If you don't want people to have to install the nodeunit command-line tool,
-you'll want to create a script that runs the tests for your project with the
-correct require paths set up. Here's an example test script, that assumes you
-have nodeunit in a suitably located node_modules directory.
-
- #!/usr/bin/env node
- var reporter = require('nodeunit').reporters.default;
- reporter.run(['test']);
-
-If you're using git, you might find it useful to include nodeunit as a
-submodule. Using submodules makes it easy for developers to download nodeunit
-and run your test suite, without cluttering up your repository with
-the source code. To add nodeunit as a git submodule do the following:
-
- git submodule add git://github.com/caolan/nodeunit.git node_modules/nodeunit
-
-This will add nodeunit to the node_modules folder of your project. Now, when
-cloning the repository, nodeunit can be downloaded by doing the following:
-
- git submodule init
- git submodule update
-
-Let's update the test script above with a helpful hint on how to get nodeunit,
-if it's missing:
-
- #!/usr/bin/env node
- try {
- var reporter = require('nodeunit').reporters.default;
- }
- catch(e) {
- console.log("Cannot find nodeunit module.");
- console.log("You can download submodules for this project by doing:");
- console.log("");
- console.log(" git submodule init");
- console.log(" git submodule update");
- console.log("");
- process.exit();
- }
-
- process.chdir(__dirname);
- reporter.run(['test']);
-
-Now if someone attempts to run your test suite without nodeunit installed they
-will be prompted to download the submodules for your project.
-
-
-Built-in Test Reporters
------------------------
-
-* __default__ - The standard reporter seen in the nodeunit screenshots
-* __minimal__ - Pretty, minimal output, shows errors and progress only
-* __html__ - Outputs a HTML report to stdout
-* __junit__ - Creates jUnit compatible XML reports, which can be used with
- continuous integration tools such as [Hudson](http://hudson-ci.org/).
-* __machineout__ - Simple reporter for machine analysis. There is
- [nodeunit.vim](https://github.com/lambdalisue/nodeunit.vim) which is useful for TDD on VIM.
-
-
-Writing a Test Reporter
----------------------
-
-Nodeunit exports runTest(fn, options), runModule(mod, options) and
-runFiles(paths, options). You'll most likely want to run test suites from
-files, which can be done using the latter function. The _options_ argument can
-contain callbacks which run during testing. Nodeunit provides the following
-callbacks:
-
-* __moduleStart(name)__ - called before a module is tested
-* __moduleDone(name, assertions)__ - called once all test functions within the
- module have completed (see assertions object reference below)
- ALL tests within the module
-* __testStart(name)__ - called before a test function is run
-* __testReady(test)__ - called before a test function is run with the test object that will be passed to the test function
-* __testDone(name, assertions)__ - called once a test function has completed
- (by calling test.done())
-* __log(assertion)__ - called whenever an assertion is made (see assertion
- object reference below)
-* __done(assertions)__ - called after all tests/modules are complete
-
-The __assertion__ object:
-
-* __passed()__ - did the assertion pass?
-* __failed()__ - did the assertion fail?
-* __error__ - the AssertionError if the assertion failed
-* __method__ - the nodeunit assertion method used (ok, same, equals...)
-* __message__ - the message the assertion method was called with (optional)
-
-The __assertionList__ object:
-
-* An array-like object with the following new attributes:
- * __failures()__ - the number of assertions which failed
- * __duration__ - the time taken for the test to complete in msecs
-
-For a reference implementation of a test reporter, see lib/reporters/default.js in
-the nodeunit project directory.
-
-
-Sandbox utility
----------------
-
-This is a function which evaluates JavaScript files in a sandbox and returns the
-context. The sandbox function can be used for testing client-side code or private
-un-exported functions within a module.
-
- var sandbox = require('nodeunit').utils.sandbox;
- var example = sandbox('example.js');
-
-__sandbox(files, sandbox)__ - Evaluates JavaScript files in a sandbox, returning
-the context. The first argument can either be a single filename or an array of
-filenames. If multiple filenames are given their contents are concatenated before
-evaluation. The second argument is an optional context to use for the sandbox.
-
-Note: When working with the sandbox if your script depends on outside sources
-(i.e. using `require`) then you will want to pass that into the optional
-context when setting up the sandbox.
-
- var sandbox = require('nodeunit').utils.sandbox;
- // pass in some node globals
- var box_globals = {
- // Passing module.exports into the sandbox will give your code access to it.
- module: {exports: exports},
- // Passing require into the sandbox will give your code access to use it AND
- // will share the cache with modules already required from outside the sandbox.
- require: require,
- // Passing console into the sandbox will give your code access to it
- console: console
- };
- var example = sandbox('example.js', box_globals);
-
-
-Running the nodeunit Tests
---------------------------
-
-The tests for nodeunit are written using nodeunit itself as the test framework.
-However, the module test-base.js first does some basic tests using the assert
-module to ensure that test functions are actually run, and a basic level of
-nodeunit functionality is available.
-
-To run the nodeunit tests do:
-
- make test
-
-__Note:__ There was a bug in node v0.2.0 causing the tests to hang, upgrading
-to v0.2.1 fixes this.
-
-
-__machineout__ reporter
-----------------------------------------------
-
-The default reporter is readable for human but not for machine analysis.
-When you want to analyze the output of nodeunit, use __machineout__ reporter and you will get
-
-
-
-
-nodeunit with vim
-----------------------------------
-There is [nodeunit.vim](https://github.com/lambdalisue/nodeunit.vim) so you can use
-nodeunit with VIM.
-
-That compiler uses __machineout__ reporter and it is useful to use
-with [vim-makegreen](https://github.com/reinh/vim-makegreen).
-
-
-
-Contributing
-------------
-
-Contributions to the project are most welcome, so feel free to fork and improve.
-When submitting a pull request, please run `make lint` first to ensure
-we're following a consistent coding style.
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/bin/nodeunit b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/bin/nodeunit
deleted file mode 100755
index e3e15b5..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/bin/nodeunit
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env node
-
-var
- fs = require('fs'),
- path = require('path');
-
-// TODO: remove this when https://github.com/joyent/node/pull/1312
-// lands in core.
-//
-// Until then, use console.log from npm (https://gist.github.com/1077544)
-require('../deps/console.log');
-
-//require.paths.push(process.cwd());
-var args = (process.ARGV || process.argv).slice(2);
-
-var files = [];
-
-var testrunner,
- config_file,
- config_param_found = false,
- output_param_found = false,
- reporter_file = 'default',
- reporter_param_found = false,
- testspec_param_found = false;
- testFullSpec_param_found = false;
-
-var usage = "Usage: nodeunit [options] testmodule1.js testfolder [...] \n" +
- "Options:\n\n" +
- " --config FILE the path to a JSON file with options\n" +
- " --reporter FILE optional path to a reporter file to customize the output\n" +
- " --list-reporters list available build-in reporters\n" +
- " -t testName, specify a test to run\n" +
- " -f fullTestName, specify a specific test to run. fullTestName is built so: \"outerGroup - .. - innerGroup - testName\"\n" +
- " -h, --help display this help and exit\n" +
- " -v, --version output version information and exit";
-
-
-
-// load default options
-var content = fs.readFileSync(__dirname + '/nodeunit.json', 'utf8');
-var options = JSON.parse(content);
-
-// a very basic pseudo --options parser
-args.forEach(function (arg) {
- if (arg.slice(0, 9) === "--config=") {
- config_file = arg.slice(9);
- } else if (arg === '--config') {
- config_param_found = true;
- } else if (config_param_found) {
- config_file = arg;
- config_param_found = false;
- } else if (arg.slice(0, 9) === "--output=") {
- options.output = arg.slice(9);
- } else if (arg === '--output') {
- output_param_found = true;
- } else if (output_param_found) {
- options.output = arg;
- output_param_found = false;
- } else if (arg.slice(0, 11) === "--reporter=") {
- reporter_file = arg.slice(11);
- } else if (arg === '--reporter') {
- reporter_param_found = true;
- } else if (reporter_param_found) {
- reporter_file = arg;
- reporter_param_found = false;
- } else if (arg === '-t') {
- testspec_param_found = true;
- } else if (testspec_param_found) {
- options.testspec = arg;
- testspec_param_found = false;
- } else if (arg === '-f') {
- testFullSpec_param_found = true;
- } else if (testFullSpec_param_found) {
- options.testFullSpec= arg;
- testFullSpec_param_found = false;
- } else if (arg === '--list-reporters') {
- var reporters = fs.readdirSync(__dirname + '/../lib/reporters');
- reporters = reporters.filter(function (reporter_file) {
- return (/\.js$/).test(reporter_file);
- }).map(function (reporter_file) {
- return reporter_file.replace(/\.js$/, '');
- }).filter(function (reporter_file) {
- return reporter_file !== 'index';
- });
- console.log('Build-in reporters: ');
- reporters.forEach(function (reporter_file) {
- var reporter = require('../lib/reporters/' + reporter_file);
- console.log(' * ' + reporter_file + (reporter.info ? ': ' + reporter.info : ''));
- });
- process.exit(0);
- } else if ((arg === '-v') || (arg === '--version')) {
- var content = fs.readFileSync(__dirname + '/../package.json', 'utf8');
- var pkg = JSON.parse(content);
- console.log(pkg.version);
- process.exit(0);
- } else if ((arg === '-h') || (arg === '--help')) {
- console.log(usage);
- process.exit(0);
- } else {
- files.push(arg);
- }
-});
-
-// defaults to `test`
-if (files.length === 0) {
- files = ['test'];
-}
-
-if (config_file) {
- content = fs.readFileSync(config_file, 'utf8');
- var custom_options = JSON.parse(content);
-
- for (var option in custom_options) {
- if (typeof option === 'string') {
- options[option] = custom_options[option];
- }
- }
-}
-
-var builtin_reporters = require(__dirname + '/../lib/reporters');
-if (reporter_file in builtin_reporters) {
- testrunner = builtin_reporters[reporter_file];
-}
-else {
- testrunner = require(reporter_file);
-}
-
-testrunner.run(files, options, function(err) {
- if (err) {
- process.exit(1);
- }
-});
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/bin/nodeunit.json b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/bin/nodeunit.json
deleted file mode 100644
index 5c7778f..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/bin/nodeunit.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "error_prefix": "\u001B[31m",
- "error_suffix": "\u001B[39m",
- "ok_prefix": "\u001B[32m",
- "ok_suffix": "\u001B[39m",
- "bold_prefix": "\u001B[1m",
- "bold_suffix": "\u001B[22m",
- "assertion_prefix": "\u001B[35m",
- "assertion_suffix": "\u001B[39m"
-}
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/async.js b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/async.js
deleted file mode 100644
index f65be61..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/async.js
+++ /dev/null
@@ -1,628 +0,0 @@
-/*global setTimeout: false, console: false */
-(function () {
-
- var async = {};
-
- // global on the server, window in the browser
- var root = this,
- previous_async = root.async;
-
- if (typeof module !== 'undefined' && module.exports) {
- module.exports = async;
- }
- else {
- root.async = async;
- }
-
- async.noConflict = function () {
- root.async = previous_async;
- return async;
- };
-
- //// cross-browser compatiblity functions ////
-
- var _forEach = function (arr, iterator) {
- if (arr.forEach) {
- return arr.forEach(iterator);
- }
- for (var i = 0; i < arr.length; i += 1) {
- iterator(arr[i], i, arr);
- }
- };
-
- var _map = function (arr, iterator) {
- if (arr.map) {
- return arr.map(iterator);
- }
- var results = [];
- _forEach(arr, function (x, i, a) {
- results.push(iterator(x, i, a));
- });
- return results;
- };
-
- var _reduce = function (arr, iterator, memo) {
- if (arr.reduce) {
- return arr.reduce(iterator, memo);
- }
- _forEach(arr, function (x, i, a) {
- memo = iterator(memo, x, i, a);
- });
- return memo;
- };
-
- var _keys = function (obj) {
- if (Object.keys) {
- return Object.keys(obj);
- }
- var keys = [];
- for (var k in obj) {
- if (obj.hasOwnProperty(k)) {
- keys.push(k);
- }
- }
- return keys;
- };
-
- var _indexOf = function (arr, item) {
- if (arr.indexOf) {
- return arr.indexOf(item);
- }
- for (var i = 0; i < arr.length; i += 1) {
- if (arr[i] === item) {
- return i;
- }
- }
- return -1;
- };
-
- //// exported async module functions ////
-
- //// nextTick implementation with browser-compatible fallback ////
- if (typeof setImmediate === 'function') {
- async.nextTick = function (fn) {
- setImmediate(fn);
- };
- }
- else if (typeof process !== 'undefined' && process.nextTick) {
- async.nextTick = process.nextTick;
- }
- else {
- async.nextTick = function (fn) {
- setTimeout(fn, 0);
- };
- }
-
- async.forEach = function (arr, iterator, callback) {
- if (!arr.length) {
- return callback();
- }
- var completed = 0;
- _forEach(arr, function (x) {
- iterator(x, function (err) {
- if (err) {
- callback(err);
- callback = function () {};
- }
- else {
- completed += 1;
- if (completed === arr.length) {
- callback();
- }
- }
- });
- });
- };
-
- async.forEachSeries = function (arr, iterator, callback) {
- if (!arr.length) {
- return callback();
- }
- var completed = 0;
- var iterate = function () {
- iterator(arr[completed], function (err) {
- if (err) {
- callback(err);
- callback = function () {};
- }
- else {
- completed += 1;
- if (completed === arr.length) {
- callback();
- }
- else {
- iterate();
- }
- }
- });
- };
- iterate();
- };
-
-
- var doParallel = function (fn) {
- return function () {
- var args = Array.prototype.slice.call(arguments);
- return fn.apply(null, [async.forEach].concat(args));
- };
- };
- var doSeries = function (fn) {
- return function () {
- var args = Array.prototype.slice.call(arguments);
- return fn.apply(null, [async.forEachSeries].concat(args));
- };
- };
-
-
- var _asyncMap = function (eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (err, v) {
- results[x.index] = v;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- };
- async.map = doParallel(_asyncMap);
- async.mapSeries = doSeries(_asyncMap);
-
-
- // reduce only has a series version, as doing reduce in parallel won't
- // work in many situations.
- async.reduce = function (arr, memo, iterator, callback) {
- async.forEachSeries(arr, function (x, callback) {
- iterator(memo, x, function (err, v) {
- memo = v;
- callback(err);
- });
- }, function (err) {
- callback(err, memo);
- });
- };
- // inject alias
- async.inject = async.reduce;
- // foldl alias
- async.foldl = async.reduce;
-
- async.reduceRight = function (arr, memo, iterator, callback) {
- var reversed = _map(arr, function (x) {
- return x;
- }).reverse();
- async.reduce(reversed, memo, iterator, callback);
- };
- // foldr alias
- async.foldr = async.reduceRight;
-
- var _filter = function (eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (v) {
- if (v) {
- results.push(x);
- }
- callback();
- });
- }, function (err) {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- };
- async.filter = doParallel(_filter);
- async.filterSeries = doSeries(_filter);
- // select alias
- async.select = async.filter;
- async.selectSeries = async.filterSeries;
-
- var _reject = function (eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (v) {
- if (!v) {
- results.push(x);
- }
- callback();
- });
- }, function (err) {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- };
- async.reject = doParallel(_reject);
- async.rejectSeries = doSeries(_reject);
-
- var _detect = function (eachfn, arr, iterator, main_callback) {
- eachfn(arr, function (x, callback) {
- iterator(x, function (result) {
- if (result) {
- main_callback(x);
- }
- else {
- callback();
- }
- });
- }, function (err) {
- main_callback();
- });
- };
- async.detect = doParallel(_detect);
- async.detectSeries = doSeries(_detect);
-
- async.some = function (arr, iterator, main_callback) {
- async.forEach(arr, function (x, callback) {
- iterator(x, function (v) {
- if (v) {
- main_callback(true);
- main_callback = function () {};
- }
- callback();
- });
- }, function (err) {
- main_callback(false);
- });
- };
- // any alias
- async.any = async.some;
-
- async.every = function (arr, iterator, main_callback) {
- async.forEach(arr, function (x, callback) {
- iterator(x, function (v) {
- if (!v) {
- main_callback(false);
- main_callback = function () {};
- }
- callback();
- });
- }, function (err) {
- main_callback(true);
- });
- };
- // all alias
- async.all = async.every;
-
- async.sortBy = function (arr, iterator, callback) {
- async.map(arr, function (x, callback) {
- iterator(x, function (err, criteria) {
- if (err) {
- callback(err);
- }
- else {
- callback(null, {value: x, criteria: criteria});
- }
- });
- }, function (err, results) {
- if (err) {
- return callback(err);
- }
- else {
- var fn = function (left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- };
- callback(null, _map(results.sort(fn), function (x) {
- return x.value;
- }));
- }
- });
- };
-
- async.auto = function (tasks, callback) {
- callback = callback || function () {};
- var keys = _keys(tasks);
- if (!keys.length) {
- return callback(null);
- }
-
- var completed = [];
-
- var listeners = [];
- var addListener = function (fn) {
- listeners.unshift(fn);
- };
- var removeListener = function (fn) {
- for (var i = 0; i < listeners.length; i += 1) {
- if (listeners[i] === fn) {
- listeners.splice(i, 1);
- return;
- }
- }
- };
- var taskComplete = function () {
- _forEach(listeners, function (fn) {
- fn();
- });
- };
-
- addListener(function () {
- if (completed.length === keys.length) {
- callback(null);
- }
- });
-
- _forEach(keys, function (k) {
- var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k];
- var taskCallback = function (err) {
- if (err) {
- callback(err);
- // stop subsequent errors hitting callback multiple times
- callback = function () {};
- }
- else {
- completed.push(k);
- taskComplete();
- }
- };
- var requires = task.slice(0, Math.abs(task.length - 1)) || [];
- var ready = function () {
- return _reduce(requires, function (a, x) {
- return (a && _indexOf(completed, x) !== -1);
- }, true);
- };
- if (ready()) {
- task[task.length - 1](taskCallback);
- }
- else {
- var listener = function () {
- if (ready()) {
- removeListener(listener);
- task[task.length - 1](taskCallback);
- }
- };
- addListener(listener);
- }
- });
- };
-
- async.waterfall = function (tasks, callback) {
- if (!tasks.length) {
- return callback();
- }
- callback = callback || function () {};
- var wrapIterator = function (iterator) {
- return function (err) {
- if (err) {
- callback(err);
- callback = function () {};
- }
- else {
- var args = Array.prototype.slice.call(arguments, 1);
- var next = iterator.next();
- if (next) {
- args.push(wrapIterator(next));
- }
- else {
- args.push(callback);
- }
- async.nextTick(function () {
- iterator.apply(null, args);
- });
- }
- };
- };
- wrapIterator(async.iterator(tasks))();
- };
-
- async.parallel = function (tasks, callback) {
- callback = callback || function () {};
- if (tasks.constructor === Array) {
- async.map(tasks, function (fn, callback) {
- if (fn) {
- fn(function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- callback.call(null, err, args || null);
- });
- }
- }, callback);
- }
- else {
- var results = {};
- async.forEach(_keys(tasks), function (k, callback) {
- tasks[k](function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- results[k] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
- };
-
- async.series = function (tasks, callback) {
- callback = callback || function () {};
- if (tasks.constructor === Array) {
- async.mapSeries(tasks, function (fn, callback) {
- if (fn) {
- fn(function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- callback.call(null, err, args || null);
- });
- }
- }, callback);
- }
- else {
- var results = {};
- async.forEachSeries(_keys(tasks), function (k, callback) {
- tasks[k](function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- results[k] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
- };
-
- async.iterator = function (tasks) {
- var makeCallback = function (index) {
- var fn = function () {
- if (tasks.length) {
- tasks[index].apply(null, arguments);
- }
- return fn.next();
- };
- fn.next = function () {
- return (index < tasks.length - 1) ? makeCallback(index + 1): null;
- };
- return fn;
- };
- return makeCallback(0);
- };
-
- async.apply = function (fn) {
- var args = Array.prototype.slice.call(arguments, 1);
- return function () {
- return fn.apply(
- null, args.concat(Array.prototype.slice.call(arguments))
- );
- };
- };
-
- var _concat = function (eachfn, arr, fn, callback) {
- var r = [];
- eachfn(arr, function (x, cb) {
- fn(x, function (err, y) {
- r = r.concat(y || []);
- cb(err);
- });
- }, function (err) {
- callback(err, r);
- });
- };
- async.concat = doParallel(_concat);
- async.concatSeries = doSeries(_concat);
-
- async.whilst = function (test, iterator, callback) {
- if (test()) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- async.whilst(test, iterator, callback);
- });
- }
- else {
- callback();
- }
- };
-
- async.until = function (test, iterator, callback) {
- if (!test()) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- async.until(test, iterator, callback);
- });
- }
- else {
- callback();
- }
- };
-
- async.queue = function (worker, concurrency) {
- var workers = 0;
- var tasks = [];
- var q = {
- concurrency: concurrency,
- push: function (data, callback) {
- tasks.push({data: data, callback: callback});
- async.nextTick(q.process);
- },
- process: function () {
- if (workers < q.concurrency && tasks.length) {
- var task = tasks.splice(0, 1)[0];
- workers += 1;
- worker(task.data, function () {
- workers -= 1;
- if (task.callback) {
- task.callback.apply(task, arguments);
- }
- q.process();
- });
- }
- },
- length: function () {
- return tasks.length;
- }
- };
- return q;
- };
-
- var _console_fn = function (name) {
- return function (fn) {
- var args = Array.prototype.slice.call(arguments, 1);
- fn.apply(null, args.concat([function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (typeof console !== 'undefined') {
- if (err) {
- if (console.error) {
- console.error(err);
- }
- }
- else if (console[name]) {
- _forEach(args, function (x) {
- console[name](x);
- });
- }
- }
- }]));
- };
- };
- async.log = _console_fn('log');
- async.dir = _console_fn('dir');
- /*async.info = _console_fn('info');
- async.warn = _console_fn('warn');
- async.error = _console_fn('error');*/
-
- async.memoize = function (fn, hasher) {
- var memo = {};
- hasher = hasher || function (x) {
- return x;
- };
- return function () {
- var args = Array.prototype.slice.call(arguments);
- var callback = args.pop();
- var key = hasher.apply(null, args);
- if (key in memo) {
- callback.apply(null, memo[key]);
- }
- else {
- fn.apply(null, args.concat([function () {
- memo[key] = arguments;
- callback.apply(null, arguments);
- }]));
- }
- };
- };
-
-}());
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/console.log.js b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/console.log.js
deleted file mode 100644
index fe146c1..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/console.log.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- A console.log that won't leave you hanging when node exits
- 90% of this file was ripped from node.js
-
- License: see: https://github.com/joyent/node/blob/master/lib/console.js
- */
-
- // console object
-var formatRegExp = /%[sdj]/g;
-function format(f) {
- var util = require('util');
-
- if (typeof f !== 'string') {
- var objects = [];
- for (var i = 0; i < arguments.length; i++) {
- objects.push(util.inspect(arguments[i]));
- }
- return objects.join(' ');
- }
-
-
- var i = 1;
- var args = arguments;
- var str = String(f).replace(formatRegExp, function(x) {
- switch (x) {
- case '%s': return String(args[i++]);
- case '%d': return Number(args[i++]);
- case '%j': return JSON.stringify(args[i++]);
- default:
- return x;
- }
- });
- for (var len = args.length, x = args[i]; i < len; x = args[++i]) {
- if (x === null || typeof x !== 'object') {
- str += ' ' + x;
- } else {
- str += ' ' + util.inspect(x);
- }
- }
- return str;
-}
-
-console.log = function() {
- var res = process.stdout.write(format.apply(this, arguments) + '\n');
-
- // this is the first time stdout got backed up
- if (!res && !process.stdout.pendingWrite) {
- process.stdout.pendingWrite = true;
-
- // magic sauce: keep node alive until stdout has flushed
- process.stdout.once('drain', function () {
- process.stdout.draining = false;
- });
- }
-};
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/History.md b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/History.md
deleted file mode 100644
index 00d2b5b..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/History.md
+++ /dev/null
@@ -1,70 +0,0 @@
-
-0.4.3 / 2011-06-20
-==================
-
- * Fixed stacktraces line number when used multiline js expressions [Octave]
-
-0.4.2 / 2011-05-11
-==================
-
- * Added client side support
-
-0.4.1 / 2011-04-21
-==================
-
- * Fixed error context
-
-0.4.0 / 2011-04-21
-==================
-
- * Added; ported jade's error reporting to ejs. [slaskis]
-
-0.3.1 / 2011-02-23
-==================
-
- * Fixed optional `compile()` options
-
-0.3.0 / 2011-02-14
-==================
-
- * Added 'json' filter [Yuriy Bogdanov]
- * Use exported version of parse function to allow monkey-patching [Anatoliy Chakkaev]
-
-0.2.1 / 2010-10-07
-==================
-
- * Added filter support
- * Fixed _cache_ option. ~4x performance increase
-
-0.2.0 / 2010-08-05
-==================
-
- * Added support for global tag config
- * Added custom tag support. Closes #5
- * Fixed whitespace bug. Closes #4
-
-0.1.0 / 2010-08-04
-==================
-
- * Faster implementation [ashleydev]
-
-0.0.4 / 2010-08-02
-==================
-
- * Fixed single quotes for content outside of template tags. [aniero]
- * Changed; `exports.compile()` now expects only "locals"
-
-0.0.3 / 2010-07-15
-==================
-
- * Fixed single quotes
-
-0.0.2 / 2010-07-09
-==================
-
- * Fixed newline preservation
-
-0.0.1 / 2010-07-09
-==================
-
- * Initial release
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/Makefile b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/Makefile
deleted file mode 100644
index a8b00d9..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-
-SRC = $(shell find lib -name "*.js" -type f)
-UGLIFY_FLAGS = --no-mangle
-
-test:
- @./node_modules/.bin/expresso test/*.test.js
-
-ejs.js: $(SRC)
- @node support/compile.js $^
-
-ejs.min.js: ejs.js
- @uglifyjs $(UGLIFY_FLAGS) $< > $@ \
- && du ejs.min.js \
- && du ejs.js
-
-clean:
- rm -f ejs.js
- rm -f ejs.min.js
-
-.PHONY: test
\ No newline at end of file
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/Readme.md b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/Readme.md
deleted file mode 100644
index 58cb10a..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/Readme.md
+++ /dev/null
@@ -1,152 +0,0 @@
-
-# EJS
-
-Embedded JavaScript templates.
-
-## Installation
-
- $ npm install ejs
-
-## Features
-
- * Complies with the [Express](http://expressjs.com) view system
- * Static caching of intermediate JavaScript
- * Unbuffered code for conditionals etc `<% code %>`
- * Escapes html by default with `<%= code %>`
- * Unescaped buffering with `<%- code %>`
- * Supports tag customization
- * Filter support for designer-friendly templates
- * Client-side support
-
-## Example
-
- <% if (user) { %>
-
<%= user.name %>
- <% } %>
-
-## Usage
-
- ejs.compile(str, options);
- // => Function
-
- ejs.render(str, options);
- // => str
-
-## Options
-
- - `locals` Local variables object
- - `cache` Compiled functions are cached, requires `filename`
- - `filename` Used by `cache` to key caches
- - `scope` Function execution context
- - `debug` Output generated function body
- - `open` Open tag, defaulting to "<%"
- - `close` Closing tag, defaulting to "%>"
-
-## Custom tags
-
-Custom tags can also be applied globally:
-
- var ejs = require('ejs');
- ejs.open = '{{';
- ejs.close = '}}';
-
-Which would make the following a valid template:
-
-
{{= title }}
-
-## Filters
-
-EJS conditionally supports the concept of "filters". A "filter chain"
-is a designer friendly api for manipulating data, without writing JavaScript.
-
-Filters can be applied by supplying the _:_ modifier, so for example if we wish to take the array `[{ name: 'tj' }, { name: 'mape' }, { name: 'guillermo' }]` and output a list of names we can do this simply with filters:
-
-Template:
-
-
-
-## Filter list
-
-Currently these filters are available:
-
- - first
- - last
- - capitalize
- - downcase
- - upcase
- - sort
- - sort_by:'prop'
- - size
- - length
- - plus:n
- - minus:n
- - times:n
- - divided_by:n
- - join:'val'
- - truncate:n
- - truncate_words:n
- - replace:pattern,substitution
- - prepend:val
- - append:val
- - map:'prop'
- - reverse
- - get:'prop'
-
-## Adding filters
-
- To add a filter simply add a method to the `.filters` object:
-
-```js
-ejs.filters.last = function(obj) {
- return obj[obj.length - 1];
-};
-```
-
-## client-side support
-
- include `./ejs.js` or `./ejs.min.js` and `require("ejs").compile(str)`.
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2009-2010 TJ Holowaychuk <tj@vision-media.ca>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/benchmark.js b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/benchmark.js
deleted file mode 100644
index 7b267e1..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/benchmark.js
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-var ejs = require('./lib/ejs'),
- str = '<% if (foo) { %>
<%= foo %>
<% } %>',
- times = 50000;
-
-console.log('rendering ' + times + ' times');
-
-var start = new Date;
-while (times--) {
- ejs.render(str, { cache: true, filename: 'test', locals: { foo: 'bar' }});
-}
-
-console.log('took ' + (new Date - start) + 'ms');
\ No newline at end of file
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/ejs.js b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/ejs.js
deleted file mode 100644
index b8c6aa1..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/ejs.js
+++ /dev/null
@@ -1,531 +0,0 @@
-
-// CommonJS require()
-
-function require(p){
- var path = require.resolve(p)
- , mod = require.modules[path];
- if (!mod) throw new Error('failed to require "' + p + '"');
- if (!mod.exports) {
- mod.exports = {};
- mod.call(mod.exports, mod, mod.exports, require.relative(path));
- }
- return mod.exports;
- }
-
-require.modules = {};
-
-require.resolve = function (path){
- var orig = path
- , reg = path + '.js'
- , index = path + '/index.js';
- return require.modules[reg] && reg
- || require.modules[index] && index
- || orig;
- };
-
-require.register = function (path, fn){
- require.modules[path] = fn;
- };
-
-require.relative = function (parent) {
- return function(p){
- if ('.' != p[0]) return require(p);
-
- var path = parent.split('/')
- , segs = p.split('/');
- path.pop();
-
- for (var i = 0; i < segs.length; i++) {
- var seg = segs[i];
- if ('..' == seg) path.pop();
- else if ('.' != seg) path.push(seg);
- }
-
- return require(path.join('/'));
- };
- };
-
-
-require.register("ejs.js", function(module, exports, require){
-
-/*!
- * EJS
- * Copyright(c) 2010 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('./utils');
-
-/**
- * Library version.
- */
-
-exports.version = '0.4.2';
-
-/**
- * Filters.
- *
- * @type Object
- */
-
-var filters = exports.filters = require('./filters');
-
-/**
- * Intermediate js cache.
- *
- * @type Object
- */
-
-var cache = {};
-
-/**
- * Clear intermediate js cache.
- *
- * @api public
- */
-
-exports.clearCache = function(){
- cache = {};
-};
-
-/**
- * Translate filtered code into function calls.
- *
- * @param {String} js
- * @return {String}
- * @api private
- */
-
-function filtered(js) {
- return js.substr(1).split('|').reduce(function(js, filter){
- var parts = filter.split(':')
- , name = parts.shift()
- , args = parts.shift() || '';
- if (args) args = ', ' + args;
- return 'filters.' + name + '(' + js + args + ')';
- });
-};
-
-/**
- * Re-throw the given `err` in context to the
- * `str` of ejs, `filename`, and `lineno`.
- *
- * @param {Error} err
- * @param {String} str
- * @param {String} filename
- * @param {String} lineno
- * @api private
- */
-
-function rethrow(err, str, filename, lineno){
- var lines = str.split('\n')
- , start = Math.max(lineno - 3, 0)
- , end = Math.min(lines.length, lineno + 3);
-
- // Error context
- var context = lines.slice(start, end).map(function(line, i){
- var curr = i + start + 1;
- return (curr == lineno ? ' >> ' : ' ')
- + curr
- + '| '
- + line;
- }).join('\n');
-
- // Alter exception message
- err.path = filename;
- err.message = (filename || 'ejs') + ':'
- + lineno + '\n'
- + context + '\n\n'
- + err.message;
-
- throw err;
-}
-
-/**
- * Parse the given `str` of ejs, returning the function body.
- *
- * @param {String} str
- * @return {String}
- * @api public
- */
-
-var parse = exports.parse = function(str, options){
- var options = options || {}
- , open = options.open || exports.open || '<%'
- , close = options.close || exports.close || '%>';
-
- var buf = [
- "var buf = [];"
- , "\nwith (locals) {"
- , "\n buf.push('"
- ];
-
- var lineno = 1;
-
- for (var i = 0, len = str.length; i < len; ++i) {
- if (str.slice(i, open.length + i) == open) {
- i += open.length
-
- var prefix, postfix, line = '__stack.lineno=' + lineno;
- switch (str[i]) {
- case '=':
- prefix = "', escape((" + line + ', ';
- postfix = ")), '";
- ++i;
- break;
- case '-':
- prefix = "', (" + line + ', ';
- postfix = "), '";
- ++i;
- break;
- default:
- prefix = "');" + line + ';';
- postfix = "; buf.push('";
- }
-
- var start = i;
- var end = str.indexOf(close, i);
- var js = str.substring(i, end);
- var n = 0;
- while ((n = js.indexOf("\n", n)) > -1) {
- n++;
- lineno++;
- }
- if (js[0] == ':') js = filtered(js);
- buf.push(prefix, js, postfix);
- i += end - start + close.length - 1;
-
- } else if (str[i] == "\\") {
- buf.push("\\\\");
- } else if (str[i] == "'") {
- buf.push("\\'");
- } else if (str[i] == "\r") {
- buf.push(" ");
- } else if (str[i] == "\n") {
- buf.push("\\n");
- lineno++;
- } else {
- buf.push(str[i]);
- }
- }
-
- buf.push("');\n}\nreturn buf.join('');");
- return buf.join('');
-};
-
-/**
- * Compile the given `str` of ejs into a `Function`.
- *
- * @param {String} str
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-var compile = exports.compile = function(str, options){
- options = options || {};
-
- var input = JSON.stringify(str)
- , filename = options.filename
- ? JSON.stringify(options.filename)
- : 'undefined';
-
- // Adds the fancy stack trace meta info
- str = [
- 'var __stack = { lineno: 1, input: ' + input + ', filename: ' + filename + ' };',
- rethrow.toString(),
- 'try {',
- exports.parse(str, options),
- '} catch (err) {',
- ' rethrow(err, __stack.input, __stack.filename, __stack.lineno);',
- '}'
- ].join("\n");
-
- if (options.debug) console.log(str);
- var fn = new Function('locals, filters, escape', str);
- return function(locals){
- return fn.call(this, locals, filters, utils.escape);
- }
-};
-
-/**
- * Render the given `str` of ejs.
- *
- * Options:
- *
- * - `locals` Local variables object
- * - `cache` Compiled functions are cached, requires `filename`
- * - `filename` Used by `cache` to key caches
- * - `scope` Function execution context
- * - `debug` Output generated function body
- * - `open` Open tag, defaulting to "<%"
- * - `close` Closing tag, defaulting to "%>"
- *
- * @param {String} str
- * @param {Object} options
- * @return {String}
- * @api public
- */
-
-exports.render = function(str, options){
- var fn
- , options = options || {};
- if (options.cache) {
- if (options.filename) {
- fn = cache[options.filename] || (cache[options.filename] = compile(str, options));
- } else {
- throw new Error('"cache" option requires "filename".');
- }
- } else {
- fn = compile(str, options);
- }
- return fn.call(options.scope, options.locals || {});
-};
-
-/**
- * Expose to require().
- */
-
-if (require.extensions) {
- require.extensions['.ejs'] = function(module, filename) {
- source = require('fs').readFileSync(filename, 'utf-8');
- module._compile(compile(source, {}), filename);
- };
-} else if (require.registerExtension) {
- require.registerExtension('.ejs', function(src) {
- return compile(src, {});
- });
-}
-
-}); // module: ejs.js
-
-require.register("filters.js", function(module, exports, require){
-
-/*!
- * EJS - Filters
- * Copyright(c) 2010 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * First element of the target `obj`.
- */
-
-exports.first = function(obj) {
- return obj[0];
-};
-
-/**
- * Last element of the target `obj`.
- */
-
-exports.last = function(obj) {
- return obj[obj.length - 1];
-};
-
-/**
- * Capitalize the first letter of the target `str`.
- */
-
-exports.capitalize = function(str){
- str = String(str);
- return str[0].toUpperCase() + str.substr(1, str.length);
-};
-
-/**
- * Downcase the target `str`.
- */
-
-exports.downcase = function(str){
- return String(str).toLowerCase();
-};
-
-/**
- * Uppercase the target `str`.
- */
-
-exports.upcase = function(str){
- return String(str).toUpperCase();
-};
-
-/**
- * Sort the target `obj`.
- */
-
-exports.sort = function(obj){
- return Object.create(obj).sort();
-};
-
-/**
- * Sort the target `obj` by the given `prop` ascending.
- */
-
-exports.sort_by = function(obj, prop){
- return Object.create(obj).sort(function(a, b){
- a = a[prop], b = b[prop];
- if (a > b) return 1;
- if (a < b) return -1;
- return 0;
- });
-};
-
-/**
- * Size or length of the target `obj`.
- */
-
-exports.size = exports.length = function(obj) {
- return obj.length;
-};
-
-/**
- * Add `a` and `b`.
- */
-
-exports.plus = function(a, b){
- return Number(a) + Number(b);
-};
-
-/**
- * Subtract `b` from `a`.
- */
-
-exports.minus = function(a, b){
- return Number(a) - Number(b);
-};
-
-/**
- * Multiply `a` by `b`.
- */
-
-exports.times = function(a, b){
- return Number(a) * Number(b);
-};
-
-/**
- * Divide `a` by `b`.
- */
-
-exports.divided_by = function(a, b){
- return Number(a) / Number(b);
-};
-
-/**
- * Join `obj` with the given `str`.
- */
-
-exports.join = function(obj, str){
- return obj.join(str || ', ');
-};
-
-/**
- * Truncate `str` to `len`.
- */
-
-exports.truncate = function(str, len){
- str = String(str);
- return str.substr(0, len);
-};
-
-/**
- * Truncate `str` to `n` words.
- */
-
-exports.truncate_words = function(str, n){
- var str = String(str)
- , words = str.split(/ +/);
- return words.slice(0, n).join(' ');
-};
-
-/**
- * Replace `pattern` with `substitution` in `str`.
- */
-
-exports.replace = function(str, pattern, substitution){
- return String(str).replace(pattern, substitution || '');
-};
-
-/**
- * Prepend `val` to `obj`.
- */
-
-exports.prepend = function(obj, val){
- return Array.isArray(obj)
- ? [val].concat(obj)
- : val + obj;
-};
-
-/**
- * Append `val` to `obj`.
- */
-
-exports.append = function(obj, val){
- return Array.isArray(obj)
- ? obj.concat(val)
- : obj + val;
-};
-
-/**
- * Map the given `prop`.
- */
-
-exports.map = function(arr, prop){
- return arr.map(function(obj){
- return obj[prop];
- });
-};
-
-/**
- * Reverse the given `obj`.
- */
-
-exports.reverse = function(obj){
- return Array.isArray(obj)
- ? obj.reverse()
- : String(obj).split('').reverse().join('');
-};
-
-/**
- * Get `prop` of the given `obj`.
- */
-
-exports.get = function(obj, prop){
- return obj[prop];
-};
-
-/**
- * Packs the given `obj` into json string
- */
-exports.json = function(obj){
- return JSON.stringify(obj);
-};
-}); // module: filters.js
-
-require.register("utils.js", function(module, exports, require){
-
-/*!
- * EJS
- * Copyright(c) 2010 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Escape the given string of `html`.
- *
- * @param {String} html
- * @return {String}
- * @api private
- */
-
-exports.escape = function(html){
- return String(html)
- .replace(/&(?!\w+;)/g, '&')
- .replace(//g, '>')
- .replace(/"/g, '"');
-};
-
-}); // module: utils.js
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/ejs.min.js b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/ejs.min.js
deleted file mode 100644
index 6b72d94..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/ejs.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// CommonJS require()
-function require(p){var path=require.resolve(p),mod=require.modules[path];if(!mod)throw new Error('failed to require "'+p+'"');mod.exports||(mod.exports={},mod.call(mod.exports,mod,mod.exports,require.relative(path)));return mod.exports}require.modules={},require.resolve=function(path){var orig=path,reg=path+".js",index=path+"/index.js";return require.modules[reg]&®||require.modules[index]&&index||orig},require.register=function(path,fn){require.modules[path]=fn},require.relative=function(parent){return function(p){if("."!=p[0])return require(p);var path=parent.split("/"),segs=p.split("/");path.pop();for(var i=0;i> ":" ")+curr+"| "+line}).join("\n");err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message;throw err}var parse=exports.parse=function(str,options){var options=options||{},open=options.open||exports.open||"<%",close=options.close||exports.close||"%>",buf=["var buf = [];","\nwith (locals) {","\n buf.push('"],lineno=1;for(var i=0,len=str.length;ib)return 1;if(a/g,">").replace(/"/g,""")}})
\ No newline at end of file
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/examples/client.html b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/examples/client.html
deleted file mode 100644
index 7081a04..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/examples/client.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/examples/list.ejs b/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/examples/list.ejs
deleted file mode 100644
index d571330..0000000
--- a/javascript/base/exercices/tests-unitaires/node_modules/nodeunit/deps/ejs/examples/list.ejs
+++ /dev/null
@@ -1,7 +0,0 @@
-<% if (names.length) { %>
-