diff --git a/samples/munit-instrument/.haxerc b/samples/munit-instrument/.haxerc new file mode 100644 index 0000000..ef43126 --- /dev/null +++ b/samples/munit-instrument/.haxerc @@ -0,0 +1,4 @@ +{ + "version": "4.3.6", + "resolveLibs": "scoped" +} \ No newline at end of file diff --git a/samples/munit-instrument/.vscode/launch.json b/samples/munit-instrument/.vscode/launch.json new file mode 100644 index 0000000..2d8019e --- /dev/null +++ b/samples/munit-instrument/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug", + "type": "haxe-eval", + "request": "launch", + "args": ["test.hxml", "--lib", "test-adapter"] + } + ] +} \ No newline at end of file diff --git a/samples/munit-instrument/.vscode/settings.json b/samples/munit-instrument/.vscode/settings.json new file mode 100644 index 0000000..890fd89 --- /dev/null +++ b/samples/munit-instrument/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "[haxe]": { + "editor.formatOnSave": true, + "editor.formatOnPaste": true + }, + "haxeTestExplorer.coverageCommand": [ + "${haxe}", + "testCoverage.hxml", + "-lib", + "test-adapter" + ], + "haxeTestExplorer.lcovPath": "lcov.info", + "haxeTestExplorer.enableAttributableCoverage": true, + "haxeTestExplorer.enableCoverageUI": true, +} \ No newline at end of file diff --git a/samples/munit-instrument/.vscode/tasks.json b/samples/munit-instrument/.vscode/tasks.json new file mode 100644 index 0000000..23c0b2b --- /dev/null +++ b/samples/munit-instrument/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "haxe", + "args": "active configuration", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/hxjsonast.hxml b/samples/munit-instrument/haxe_libraries/hxjsonast.hxml new file mode 100644 index 0000000..841e786 --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/hxjsonast.hxml @@ -0,0 +1,3 @@ +# @install: lix --silent download "haxelib:/hxjsonast#1.1.0" into hxjsonast/1.1.0/haxelib +-cp ${HAXE_LIBCACHE}/hxjsonast/1.1.0/haxelib/src +-D hxjsonast=1.1.0 \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/instrument.hxml b/samples/munit-instrument/haxe_libraries/instrument.hxml new file mode 100644 index 0000000..4d4ee63 --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/instrument.hxml @@ -0,0 +1,4 @@ +# @install: lix --silent download "haxelib:/instrument#1.3.1" into instrument/1.3.1/haxelib +-lib safety +-cp ${HAXE_LIBCACHE}/instrument/1.3.1/haxelib/src +-D instrument=1.3.1 \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/json2object.hxml b/samples/munit-instrument/haxe_libraries/json2object.hxml new file mode 100644 index 0000000..897b5a3 --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/json2object.hxml @@ -0,0 +1,4 @@ +# @install: lix --silent download "haxelib:/json2object#3.11.0" into json2object/3.11.0/haxelib +-lib hxjsonast +-cp ${HAXE_LIBCACHE}/json2object/3.11.0/haxelib/src +-D json2object=3.11.0 \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/mconsole.hxml b/samples/munit-instrument/haxe_libraries/mconsole.hxml new file mode 100644 index 0000000..993fd0f --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/mconsole.hxml @@ -0,0 +1,3 @@ +# @install: lix --silent download "haxelib:/mconsole#1.6.0" into mconsole/1.6.0/haxelib +-cp ${HAXE_LIBCACHE}/mconsole/1.6.0/haxelib/ +-D mconsole=1.6.0 \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/mcover.hxml b/samples/munit-instrument/haxe_libraries/mcover.hxml new file mode 100644 index 0000000..6753e5b --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/mcover.hxml @@ -0,0 +1,5 @@ +# @install: lix --silent download "haxelib:/mcover#2.2.2" into mcover/2.2.2/haxelib +-lib mconsole +-lib munit +-cp ${HAXE_LIBCACHE}/mcover/2.2.2/haxelib/ +-D mcover=2.2.2 \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/mlib.hxml b/samples/munit-instrument/haxe_libraries/mlib.hxml new file mode 100644 index 0000000..d1f13fe --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/mlib.hxml @@ -0,0 +1,4 @@ +# @install: lix --silent download "haxelib:/mlib#2.0.3" into mlib/2.0.3/haxelib +# @run: haxelib run-dir mlib "${HAXE_LIBCACHE}/mlib/2.0.3/haxelib" +-cp ${HAXE_LIBCACHE}/mlib/2.0.3/haxelib/ +-D mlib=2.0.3 \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/munit.hxml b/samples/munit-instrument/haxe_libraries/munit.hxml new file mode 100644 index 0000000..028b909 --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/munit.hxml @@ -0,0 +1,6 @@ +# @install: lix --silent download "haxelib:/munit#2.3.5" into munit/2.3.5/haxelib +# @run: haxelib run-dir munit "${HAXE_LIBCACHE}/munit/2.3.5/haxelib" +-lib mcover +-lib mlib +-cp ${HAXE_LIBCACHE}/munit/2.3.5/haxelib/ +-D munit=2.3.5 \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/safety.hxml b/samples/munit-instrument/haxe_libraries/safety.hxml new file mode 100644 index 0000000..973dc8b --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/safety.hxml @@ -0,0 +1,3 @@ +# @install: lix --silent download "haxelib:/safety#1.1.2" into safety/1.1.2/haxelib +-cp ${HAXE_LIBCACHE}/safety/1.1.2/haxelib/src +-D safety=1.1.2 \ No newline at end of file diff --git a/samples/munit-instrument/haxe_libraries/test-adapter.hxml b/samples/munit-instrument/haxe_libraries/test-adapter.hxml new file mode 100644 index 0000000..8d8e63a --- /dev/null +++ b/samples/munit-instrument/haxe_libraries/test-adapter.hxml @@ -0,0 +1,5 @@ +-lib json2object +-cp ../../test-adapter +-D test-adapter=2.0.7 +${SCOPE_DIR}/../../test-adapter/extraParams.hxml +--macro Sys.println("haxe_libraries/test-adapter.hxml:3: [Warning] Using dev version of library test-adapter") \ No newline at end of file diff --git a/samples/munit-instrument/src/Main.hx b/samples/munit-instrument/src/Main.hx new file mode 100644 index 0000000..cf4b73b --- /dev/null +++ b/samples/munit-instrument/src/Main.hx @@ -0,0 +1,39 @@ +class Main { + public function new() { + doNothing(); + } + + public function doSomething(condition:Bool) { + if (condition) { + doNothing(); + return false; + } else { + doNothing(); + } + doNothing(); + return true; + } + + public function doSomethingFullCoverage(condition:Bool) { + if (condition) { + doNothing(); + return false; + } else { + doNothing(); + } + doNothing(); + return true; + } + + public function doNothing() { + return true; + } + + public function doMoreNothing() { + return true; + } + + static function main() { + new Main(); + } +} diff --git a/samples/munit-instrument/test.hxml b/samples/munit-instrument/test.hxml new file mode 100644 index 0000000..11041f4 --- /dev/null +++ b/samples/munit-instrument/test.hxml @@ -0,0 +1,4 @@ +-cp src +-cp tests +-lib munit +-x Test \ No newline at end of file diff --git a/samples/munit-instrument/testCoverage.hxml b/samples/munit-instrument/testCoverage.hxml new file mode 100644 index 0000000..2ee5274 --- /dev/null +++ b/samples/munit-instrument/testCoverage.hxml @@ -0,0 +1,10 @@ +-cp src +-cp tests +-lib munit +-lib instrument +-x Test + +-D coverage-console-summary-reporter + +--macro instrument.Instrumentation.coverage([''], ['src'], []) +-D instrument-quiet diff --git a/samples/munit-instrument/tests/Test.hx b/samples/munit-instrument/tests/Test.hx new file mode 100644 index 0000000..f701a0a --- /dev/null +++ b/samples/munit-instrument/tests/Test.hx @@ -0,0 +1,46 @@ +import massive.munit.Assert; +import massive.munit.TestRunner; +import massive.munit.client.RichPrintClient; + +class Test { + static function main() { + var client = new RichPrintClient(); + var runner = new TestRunner(client); + runner.run([TestSuite]); + + #if instrument + instrument.coverage.Coverage.endCoverage(); + #end + } +} + +class TestSuite extends massive.munit.TestSuite { + public function new() { + super(); + add(TestMain); + } +} + +class TestMain { + @Test + function testDoNothing() { + var main = new Main(); + + Assert.isTrue(main.doNothing()); + } + + @Test + function testDoSomething() { + var main = new Main(); + + Assert.isTrue(main.doSomething(false)); + } + + @Test + function testDoSomethingFullCoverage() { + var main = new Main(); + + Assert.isTrue(main.doSomethingFullCoverage(false)); + Assert.isFalse(main.doSomethingFullCoverage(true)); + } +}