I'm adding a new (plain old) ruby class to my Rails app. I have a minimal unit test for the class:
require 'minitest_helper'
class ReportOptionTest < MiniTest::Unit::TestCase
def setup
#report_option = Cmdx::ReportGenerator::ReportOption.new( "testing123" )
end
def test_depends_on
assert #report_option.depends_on.empty?
end
end
If I run just this test via rake, it runs, as I expected, but it runs six times, which I did not:
$ time rake test TEST=test/unit/report_generator/report_option_test.rb
Rack::File headers parameter replaces cache_control after Rack 1.5.
Run options: --seed 64427
# Running tests:
.
Finished tests in 0.003272s, 305.6309 tests/s, 305.6309 assertions/s.
1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
Rack::File headers parameter replaces cache_control after Rack 1.5.
Run options: --seed 17980
# Running tests:
.
Finished tests in 0.003284s, 304.4809 tests/s, 304.4809 assertions/s.
1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
Rack::File headers parameter replaces cache_control after Rack 1.5.
Run options: --seed 45845
# Running tests:
.
Finished tests in 0.003267s, 306.0590 tests/s, 306.0590 assertions/s.
1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
Rack::File headers parameter replaces cache_control after Rack 1.5.
Run options: --seed 49526
# Running tests:
.
Finished tests in 0.003258s, 306.9620 tests/s, 306.9620 assertions/s.
1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
Rack::File headers parameter replaces cache_control after Rack 1.5.
Run options: --seed 53716
# Running tests:
.
Finished tests in 0.003246s, 308.1155 tests/s, 308.1155 assertions/s.
1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
Rack::File headers parameter replaces cache_control after Rack 1.5.
Run options: --seed 44898
# Running tests:
.
Finished tests in 0.003272s, 305.6556 tests/s, 305.6556 assertions/s.
1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
real 0m34.999s
user 0m32.034s
sys 0m1.440s
I note that this page mentions a similar issue. I don't understand what's going on, and whether there's some config setting I need to change to just run the test once, and, frankly, make running the tests finish faster.
Versions:
$ ruby -v
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux]
$ rake -V
rake, version 10.0.3
$ rails -v
Rails 3.2.12
Related
Been spending yesterday compiling the open source Appium tool, and today Selenium.
Between the projects, on Windows, I've had to install different versions of the JDK, ruby, python 2.7 (I had 3.6), git, ffmpeg, opencv4nodejs,nodejs, npm, choco and a variety of other random tools and utilities. cmake. Bundletool. Ant.
Anyway, I've gotten further than I've gotten before, but now for the last few hours I'm stuck.
go.bat clean executes fine
go.bat <anything else> seems to fail, whether its used with test_java, test_htmlunit, build, test_firefox and more.
However, I've not been able to track down where in the miles of rake/buck stuff the actual error is coming from.
An example:
go.bat test_java
Output:
$ ./go.bat test_java
C:\Users\mayom\selenium>java -Xmx4096m -XX:MetaspaceSize=1024m
-XX:ReservedCodeCacheSize=512m -client -jar third_party/jruby/jruby-complete.jar -X-C -S rake test_java python
buckw kill python buckw build --stamp-build=detect --deep
//java/client/test/org/openqa/selenium/atoms:test Starting new Buck
daemon... PARSING BUCK FILES: FINISHED IN 1.7s CREATING ACTION GRAPH:
FINISHED IN 0.4s BUILT 145/223 JOBS 1.2s //javascript/webdriver:key
BUILT 146/223 JOBS 4.1s
//java/client/src/org/openqa/selenium/remote:remote-gen-manifest BUILT
147/223 JOBS 4.8s //third_party/java/jetty:jetty-gen-manifest BUILT
148/223 JOBS 4.5s
//java/client/src/org/openqa/selenium:core-gen-manifest BUILT 149/223
JOBS 1.9s
//java/client/src/org/openqa/selenium/remote:remote-lib-build-info
BUILT 150/223 JOBS 1.3s
//java/client/src/org/openqa/selenium:core-lib-build-info BUILT
151/223 JOBS 2.7s //third_party/java/jetty:jetty-lib-build-info BUILT
181/223 JOBS 1.3s
//java/client/src/org/openqa/selenium/remote:remote-lib-build-info#class-abi
BUILT 185/223 JOBS 1.3s
//third_party/java/jetty:jetty-lib-build-info#class-abi BUILT 189/223
JOBS 0.2s //javascript/atoms:events BUILT 197/223 JOBS 0.8s
//javascript/atoms:inject BUILT 198/223 JOBS 1.4s
//java/client/src/org/openqa/selenium:core-lib-build-info#class-abi
BUILT 199/223 JOBS 0.8s //javascript/atoms:locators BUILT 200/223 JOBS
0.9s //javascript/atoms:html5 BUILT 201/223 JOBS 0.5s //javascript/atoms:devices BUILT 206/223 JOBS 0.4s
//javascript/atoms:action BUILT 207/223 JOBS 0.2s
//javascript/webdriver/atoms:atoms-lib STILL BUILDING
//third_party/java/jetty:move-services (20 seconds) STILL BUILDING
//javascript/atoms/fragments:execute_script (20 seconds) STILL
BUILDING //javascript/webdriver/atoms:inputs (20 seconds)
C:\Users\mayom\selenium\buck-out\gen\third_party\java\jetty\move-services__srcs>md
tmp && cd tmp && jar xf
C:\Users\mayom\selenium\buck-out\gen\third_party\java\jetty\bundle-jars.jar
&& del META-INF/services/* && echo
org.seleniumhq.jetty9.http.Http1FieldPreEncoder
1>META-INF\services\org.seleniumhq.jetty9.http.HttpFieldPreEncoder &&
jar cvf
C:\Users\mayom\selenium\buck-out\gen\third_party\java\jetty\move-services\moved-bundle.jar
*
Parameter format not correct - "services".
STILL BUILDING //javascript/atoms/fragments:execute_script (40
seconds) STILL BUILDING //javascript/webdriver/atoms:inputs (40
seconds) BUILT 209/223 JOBS 45.2s
//javascript/atoms/fragments:execute_script BUILT 210/223 JOBS 50.8s
//javascript/webdriver/atoms:inputs DOWNLOADED 0 ARTIFACTS, 0.00
BYTES, 100.0% CACHE MISS BUILDING: FINISHED IN 1m 2.4s (100%) 210/223
JOBS, 20 UPDATED BUILD FAILED Command failed with exit code 1. stderr:
Parameter format not correct - "services".
When running <genrule>.
When building rule //third_party/java/jetty:move-services. go aborted! python buckw build --stamp-build=detect --deep
//java/client/test/org/openqa/selenium/atoms:test failed with exit
code: 1 C:/Users/mayom/selenium/rake-tasks/buck.rb:52:in block in
buck_cmd' C:/Users/mayom/selenium/rake-tasks/buck.rb:36:inbuck_cmd'
C:/Users/mayom/selenium/rake-tasks/buck.rb:227:in `block in (root)'
Tasks: TOP => test_java =>
//java/client/test/org/openqa/selenium/atoms:test:run =>
//java/client/test/org/openqa/selenium/atoms:test (See full trace by
running task with --trace)
And if I run it with --trace:
$ ./go.bat test_java --trace
C:\Users\mayom\selenium>java -Xmx4096m -XX:MetaspaceSize=1024m
-XX:ReservedCodeCacheSize=512m -client -jar third_party/jruby/jruby-complete.jar -X-C -S rake test_java --trace
Parsing cpp/build.desc Parsing cpp/iedriverserver/build.desc Parsing
javascript/build.desc Parsing javascript/android-atoms/build.desc
Parsing javascript/atoms/build.desc Parsing
javascript/atoms/fragments/build.desc Parsing
javascript/chrome-driver/build.desc Parsing
javascript/ie-driver/build.desc Parsing javascript/jsunit/build.desc
Parsing javascript/node/build.desc Parsing
javascript/remote/build.desc Parsing
javascript/selenium-atoms/build.desc Parsing
javascript/selenium-core/build.desc Parsing
javascript/webdriver/build.desc Parsing
javascript/webdriver/atoms/build.desc Parsing
javascript/webdriver/atoms/fragments/build.desc Parsing
javascript/webdriver/atoms/fragments/inject/build.desc Parsing
javascript/webdriver/atoms/inject/build.desc Parsing py/build.desc
Parsing rb/build.desc Parsing third_party/closure/build.desc Parsing
third_party/firebug/build.desc Parsing third_party/jruby/build.desc
Parsing third_party/js/sizzle/build.desc Parsing
third_party/js/wgxpath/build.desc
** Invoke test_java (first_time)
** Invoke //java/client/test/org/openqa/selenium/atoms:test:run (first_time)
** Invoke //java/client/test/org/openqa/selenium/atoms:test (first_time)
** Execute //java/client/test/org/openqa/selenium/atoms:test python buckw kill python buckw build --stamp-build=detect --deep
//java/client/test/org/openqa/selenium/atoms:test Starting new Buck
daemon... PARSING BUCK FILES: FINISHED IN 1.7s CREATING ACTION GRAPH:
FINISHED IN 0.5s BUILT 146/223 JOBS 3.9s
//java/client/src/org/openqa/selenium/remote:remote-gen-manifest BUILT
147/223 JOBS 4.2s
//java/client/src/org/openqa/selenium:core-gen-manifest BUILT 148/223
JOBS 4.4s //third_party/java/jetty:jetty-gen-manifest BUILT 155/223
JOBS 0.8s
//java/client/src/org/openqa/selenium:core-lib-build-info#class-abi
BUILT 179/223 JOBS 2.5s //third_party/java/jetty:jetty-lib-build-info
BUILT 187/223 JOBS 2.8s
//java/client/src/org/openqa/selenium/remote:remote-lib-build-info
BUILT 189/223 JOBS 0.8s
//java/client/test/org/openqa/selenium/atoms:execute_script BUILT
191/223 JOBS 1.4s
//third_party/java/jetty:jetty-lib-build-info#class-abi BUILT 195/223
JOBS 2.7s //java/client/src/org/openqa/selenium:core-lib-build-info
BUILT 206/223 JOBS 0.7s
//java/client/test/org/openqa/selenium/atoms:atoms_inputs BUILT
207/223 JOBS 1.2s
//java/client/src/org/openqa/selenium/remote:remote-lib-build-info#class-abi
C:\Users\mayom\selenium\buck-out\gen\third_party\java\jetty\move-services__srcs>md
tmp && cd tmp && jar xf
C:\Users\mayom\selenium\buck-out\gen\third_party\java\jetty\bundle-jars.jar
&& del META-INF/services/* && echo
org.seleniumhq.jetty9.http.Http1FieldPreEncoder
1>META-INF\services\org.seleniumhq.jetty9.http.HttpFieldPreEncoder &&
jar cvf
C:\Users\mayom\selenium\buck-out\gen\third_party\java\jetty\move-services\moved-bundle.jar
*
Parameter format not correct - "services".
DOWNLOADED 0 ARTIFACTS, 0.00 BYTES, 100.0% CACHE MISS BUILDING:
FINISHED IN 14.2s (100%) 212/223 JOBS, 12 UPDATED BUILD FAILED Command
failed with exit code 1. stderr: Parameter format not correct -
"services".
When running <genrule>.
When building rule //third_party/java/jetty:move-services. Exception `RuntimeError' at
C:/Users/mayom/selenium/rake-tasks/buck.rb:52 - python buckw build
--stamp-build=detect --deep //java/client/test/org/openqa/selenium/atoms:test failed with exit
code: 1 Exception #<Class:#<RuntimeError:0x1ee40b5c>>' at
C:/Users/mayom/selenium/rake-tasks/buck.rb:52 - python buckw build
--stamp-build=detect --deep //java/client/test/org/openqa/selenium/atoms:test failed with exit
code: 1 Exception#>' at
C:/Users/mayom/selenium/rake-tasks/buck.rb:52 - python buckw build
--stamp-build=detect --deep //java/client/test/org/openqa/selenium/atoms:test failed with exit
code: 1 Exception #<Class:#<RuntimeError:0x1ee40b5c>>' at
C:/Users/mayom/selenium/rake-tasks/buck.rb:52 - python buckw build
--stamp-build=detect --deep //java/client/test/org/openqa/selenium/atoms:test failed with exit
code: 1 go aborted! python buckw build --stamp-build=detect --deep
//java/client/test/org/openqa/selenium/atoms:test failed with exit
code: 1 C:/Users/mayom/selenium/rake-tasks/buck.rb:52:inblock in
buck_cmd' org/jruby/RubyIO.java:4902:in popen3'
uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/jruby/open3_windows.rb:74:in
popen3' C:/Users/mayom/selenium/rake-tasks/buck.rb:36:in buck_cmd'
C:/Users/mayom/selenium/rake-tasks/buck.rb:227:inblock in (root)'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:240:in block in
execute' org/jruby/RubyArray.java:1735:ineach'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:235:in execute'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:179:inblock in
invoke_with_call_chain'
uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/monitor.rb:214:in
mon_synchronize'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:172:in
invoke_with_call_chain'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:201:in block in
invoke_prerequisites' org/jruby/RubyArray.java:1735:ineach'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:199:in
invoke_prerequisites'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:178:inblock in
invoke_with_call_chain'
uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/monitor.rb:214:in
mon_synchronize'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:172:in
invoke_with_call_chain'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:201:in block in
invoke_prerequisites' org/jruby/RubyArray.java:1735:ineach'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:199:in
invoke_prerequisites'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:178:inblock in
invoke_with_call_chain'
uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/monitor.rb:214:in
mon_synchronize'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:172:in
invoke_with_call_chain'
uri:classloader:/gems/rake-10.5.0/lib/rake/task.rb:165:in invoke'
uri:classloader:/gems/rake-10.5.0/lib/rake/application.rb:150:in
invoke_task'
uri:classloader:/gems/rake-10.5.0/lib/rake/application.rb:106:in
block in top_level' org/jruby/RubyArray.java:1735:ineach'
uri:classloader:/gems/rake-10.5.0/lib/rake/application.rb:106:in
block in top_level'
uri:classloader:/gems/rake-10.5.0/lib/rake/application.rb:115:in
run_with_threads'
uri:classloader:/gems/rake-10.5.0/lib/rake/application.rb:100:in
top_level'
uri:classloader:/gems/rake-10.5.0/lib/rake/application.rb:78:inblock
in run'
uri:classloader:/gems/rake-10.5.0/lib/rake/application.rb:176:in
standard_exception_handling'
uri:classloader:/gems/rake-10.5.0/lib/rake/application.rb:75:inrun'
uri:classloader:/gems/rake-10.5.0/bin/rake:33:in <main>'
org/jruby/RubyKernel.java:973:inload'
uri:classloader:/META-INF/jruby.home/bin/rake:1:in `' Tasks: TOP
=> test_java => //java/client/test/org/openqa/selenium/atoms:test:run => //java/client/test/org/openqa/selenium/atoms:test
The parameter 'services'? I can't find for the life of me where that complaint is coming from. Would appreciate anyone with a more indepth knowledge of rake/buck etc than myself.
I am trying to run tests in parallel on my laptop, which has 4 pyhsical and 8 logical CPUs.
➜ sysctl -n hw.ncpu
8
➜ sysctl -n hw.physicalcpu
4
I would like to run at most 4 tests in parallel.
This is the command that I am running:
./gradlew remoteChromeTest -Pparallel=4 --continue --max-workers=8
The parallel property goes into maxParallelForks of the Test task.
Still, Gradle only seems to occupy at most 4 workers concurrently (one of which seems to be reserved for the build itself), which coincides with the number of physical CPUs (not sure if that matters).
The output looks like this:
> Task :remoteChromeTest
Running tests in parallel using 4 processes.
<============-> 92% EXECUTING [12s]
> :remoteChromeTest > 0 tests completed
> :remoteChromeTest > Executing test spec.Spec1
> IDLE
> :remoteChromeTest > Executing test spec.Spec2
> :remoteChromeTest > Executing test spec.Spec3
So, only 3 tests are running in parallel.
What am I missing here? The documentation suggests this could be cranked up beyond the number of actual CPUs. The weird part is that one of the workers shows up as IDLE.
I am getting the same behaviour on another machine, which has only 2 physical cores, and there it is limited to two processes, i.e. no parallel execution at all.
Why is one worker IDLE?
--max-workers is not only for tests execution but also for parallel project execution. In the example, however, you are limiting tests execution parallelism to 4. Try setting maxParallelForks to more than 4 and you will see more parallelism in tests execution. But anyway it will be limited to the minimum between the number of tests and --max-workers.
You can also enable parallel project execution by using the --parallel option. And again, the build parallelism, including the test parallelism, will be limited to --max-workers:
subprojects {
tasks.withType(Test) {
maxParallelForks = 8
}
}
gradle clean build --parallel --max-workers=6
...
<<===========--> 85% EXECUTING [15s]
>> :module-1:test > 4 tests completed
>> :module-2:test > 2 tests completed
>> :module-2:test > Executing test so.Module2Spec3
>> :module-2:test > Executing test so.Module2Spec1
>> :module-1:test > Executing test so.Module1Spec4
>> :module-1:test > Executing test so.Module1Spec2
>> :module-1:test > Executing test so.Module1Spec1
>> :module-1:test > Executing test so.Module1Spec3
gradle clean build --parallel --max-workers=12
...
<===========--> 85% EXECUTING [13s]
> :module-1:test > 0 tests completed
> :module-2:test > 0 tests completed
> :module-2:test > Executing test so.Module2Spec1
> :module-2:test > Executing test so.Module2Spec2
> :module-2:test > Executing test so.Module2Spec3
> :module-2:test > Executing test so.Module2Spec4
> :module-1:test > Executing test so.Module1Spec1
> :module-1:test > Executing test so.Module1Test2
> :module-1:test > Executing test so.Module1Spec4
> :module-1:test > Executing test so.Module1Test3
> :module-1:test > Executing test so.Module1Test1
> :module-1:test > Executing test so.Module1Spec3
> :module-1:test > Executing test so.Module1Spec2
> :module-1:test > Executing test so.Module1Test4
The answer is there is no executable task left, the rest of tasks are depended on the current running ones, you will see that the status IDLE will change after some of in progress tasks are done.
I'm building fortran project with cmake and I can't find solution to print to console FRUIT test results, they look something like these:
Test module initialized
. : successful assert, F : failed assert
7.00000000000000 -3.60000000000000 7.00000000000000
FFF
Start of FRUIT summary:
Some tests failed!
-- Failed assertion messages:
[_not_set_]:Expected [7.00000000000000], Got [1.00000000000000]
[_not_set_]:Expected [-3.60000000000000], Got [2.00000000000000]
[_not_set_]:Expected [7.00000000000000], Got [6.00000000000000]
-- end of failed assertion messages.
Total asserts : 3
Successful : 0
Failed : 3
Successful rate: 0.00%
Successful asserts / total asserts : [ 0 / 3 ]
Successful cases / total cases : [ 0 / 0 ]
-- end of FRUIT summary
The output I'm getting with make test looks like:
make test
Running tests...
Test project /home/konrad/Desktop/fortran
Start 1: unit_tests
1/1 Test #1: unit_tests ....................... Passed 0.01 sec
100% tests passed, 0 tests failed out of 1
Total Test time (real) = 0.01 sec
And since passing cmake tests doesn't mean passing FRUIT ones, I want to print FRUIT file everytime I run tests (just for the sake of making it work). I've tried adding printing commands at the end of test command (like this less), adding
-P ${CMAKE_TEST_DIR}/unit_tests.txt
at the end of add_test, building custom after build commands (which I can't make to run after make test so if you knew how to do that would solve it as well, seems like make test or test is not really a target)
Last part of my cmake file with all the testing code:
add_executable(task ${TASK_SOURCES})
add_executable(tests ${TEST_SOURCES})
enable_testing()
set(run_command "${CMAKE_BINARY_DIR}/tests")
set(UNIT_TEST_NAME "unit_tests.txt")
file(MAKE_DIRECTORY ${CMAKE_TEST_DIR})
add_test( NAME unit_tests
COMMAND sh -c
"rm -f ${CMAKE_TEST_DIR}/${UNIT_TEST_NAME} \
&& ${run_command} \
>> ${CMAKE_TEST_DIR}/${UNIT_TEST_NAME} \
&& less ${CMAKE_TEST_DIR}/${UNIT_TEST_NAME}"
)
I have solved a lack of tests output with custom CMake target that will invoke ctest in verbose mode etc.
e.g.
enable_testing()
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
--force-new-ctest-process
--verbose
--output-on-failure
)
The output of cmake tests is captured to a file (Testing/Temporary/LastTest.log in my current project).
cmake tests rely on the return code of the test program, with one test program per test.
If you wish to run a program that is a "driver" for your tests, I recommend to use add_custom_target. This commands will add a target that runs a command of your choice.
For instance:
add_custom_target(Name unit_tests tests)
add_dependencies(unit_tests tests)
I am not sure whether the add_dependencies line is needed in this case though (as tests is a target managed by cmake).
Then, you can run
make unit_tests
and it will run your test driver.
I've installed gulp-npm-test following their documentation, that is, in my gulp directory I've got a file test.js that looks like this:
var gulp = require('gulp')
require('gulp-npm-test')(gulp)
var gulp = require('gulp-npm-test')(gulp, {
withoutNpmRun: false
})
But when I run gulp test I get the output like the following:
[17:12:41] Using gulpfile ~/my-project/gulpfile.js
[17:12:41] Starting 'test'...
> my-project#0.0.1 test /Users/wogsland/my-project
> jest
PASS frontend/tests/components/atoms/InputText.test.js
.
.
(many more Jest test passes, no fails)
.
.
FAIL gulp/tasks/test.js
● Test suite failed to run
Your test suite must contain at least one test.
at onResult (node_modules/jest/node_modules/jest-cli/build/TestRunner.js:192:18)
Test Suites: 1 failed, 135 passed, 136 total
Tests: 135 passed, 135 total
Snapshots: 209 passed, 209 total
Time: 92.237s
Ran all test suites.
npm ERR! Test failed. See above for more details.
What am I missing here? I've go a bunch of tests
Looks like the matcher that figures out which files are tests, matches everything that includes in the filename test.js. The default is [ '**/__tests__/**/*.js?(x)', '**/?(*.)(spec|test).js?(x)' ]. So either adapt this one, its testMatch in your jest settings. Or use testPathIgnorePatterns to exclude the /gulp folder.
When running react-native tests in mocha, I'm getting the following error:
> mocha --require test/init.js --compilers js:test/compiler.js 'src/**/*.spec.js'
Initializing tap mocha reporter...
1..7
ok 1 test1
…
not ok 7 test7
ReferenceError: fetch is not defined
at foo (src/foo.js:59:8)
at Context.<anonymous> (src/__specs__/foo.spec.js:9:30)
# tests 7
# pass 6
# fail 1
npm ERR! Test failed. See above for more details.
The problem was that fetch isn't available in a node environment like mocha. I'm not sure why react-native-mock (which I'm also using) doesn't have a mock for it, but the solution was to require isomorphic-fetch when initializing my mocha tests.
Specifically, add an init file to your mocha command-line if you don't have one already:
> mocha --require init.js …
and in init.js, require isomorphic-fetch:
require('isomorphic-fetch')
Then re-run mocha:
> mocha --require test/init.js --compilers js:test/compiler.js 'src/**/*.spec.js' && standard
Initializing tap mocha reporter...
1..7
ok 1 test1
…
ok 7 test7
# tests 7
# pass 7
# fail 0