From 1cb31d719d40cfeccb5774045389ddf8b595f9e2 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 30 Oct 2025 18:43:12 -0500 Subject: [PATCH] Remove utest dependency from tests --- functions.sh | 6 ++-- hank-vscode/haxe_libraries/utest.hxml | 5 --- hank/HankAssert.hx | 50 +++++++++++++++++---------- hank/StoryTestCase.hx | 9 ++--- haxe_libraries/utest.hxml | 5 --- test.sh | 2 ++ tests/main/Examples.hx | 7 ++-- 7 files changed, 42 insertions(+), 42 deletions(-) delete mode 100644 hank-vscode/haxe_libraries/utest.hxml delete mode 100644 haxe_libraries/utest.hxml create mode 100755 test.sh diff --git a/functions.sh b/functions.sh index 257e4ee..6acd32c 100644 --- a/functions.sh +++ b/functions.sh @@ -1,15 +1,15 @@ t() { - haxe -cp hank -lib utest -lib hscript hxml/$1.hxml --interp > test-output.txt + haxe -cp hank -lib hscript hxml/$1.hxml --interp > test-output.txt $VISUAL test-output.txt } ta() { - haxe -cp hank -lib utest -lib hscript hxml/all-platforms.hxml > test-output.txt + haxe -cp hank -lib hscript hxml/all-platforms.hxml > test-output.txt $VISUAL test-output.txt } tas() { - haxe -D stop_on_error -cp hank -lib utest -lib hscript hxml/all-platforms.hxml > test-output.txt + haxe -D stop_on_error -cp hank -lib hscript hxml/all-platforms.hxml > test-output.txt $VISUAL test-output.txt } diff --git a/hank-vscode/haxe_libraries/utest.hxml b/hank-vscode/haxe_libraries/utest.hxml deleted file mode 100644 index 7c20620..0000000 --- a/hank-vscode/haxe_libraries/utest.hxml +++ /dev/null @@ -1,5 +0,0 @@ -# @install: lix --silent download "haxelib:/utest#1.13.2" into utest/1.13.2/haxelib --cp ${HAXE_LIBCACHE}/utest/1.13.2/haxelib/src --D utest=1.13.2 ---macro utest.utils.Macro.checkHaxe() ---macro utest.utils.Macro.importEnvSettings() diff --git a/hank/HankAssert.hx b/hank/HankAssert.hx index 3270a85..f4e4be0 100644 --- a/hank/HankAssert.hx +++ b/hank/HankAssert.hx @@ -1,65 +1,77 @@ package hank; -import utest.Assert; import haxe.ds.Option; import hank.LogUtil; +using StringTools; class HankAssert { + public static function assert(condition: Bool, message: String) { + if (condition) pass(message); + else fail(message); + } + + public static function pass(message: String) { + message = ' ✓' + message; + LogUtil.cleanTrace(message); + } + + public static function fail(message: String) { + message = ' ✗' + message; + LogUtil.cleanTrace(message); + } + /** Assert that two complex values (i.e. algebraic enums) are the same. **/ public static function equals(expected:Dynamic, actual:Dynamic, ?pos:String) { var verboseMessage = ' Asserting that ${actual} is expected value ${expected}'; - if (Std.string(expected) == Std.string(actual)) { - verboseMessage = ' ✓' + verboseMessage; - } else { - verboseMessage = ' ✗' + verboseMessage; - } - LogUtil.cleanTrace(verboseMessage); - var failureMessage = 'Assertion that ${actual} is expected value ${expected} failed ${if (pos!= null) 'at ${pos}' else ''}'; - Assert.equals(Std.string(Type.typeof(expected)), Std.string(Type.typeof(actual)), failureMessage); - Assert.equals(Std.string(expected), Std.string(actual), failureMessage); + assert(Std.string(expected) == Std.string(actual), verboseMessage); } /** Assert that a string contains an expected substring. **/ public static function contains(expected:String, actual:String) { - Assert.notEquals(-1, actual.indexOf(expected)); + var verboseMessage = ' Asserting that "${actual}" contains "${expected}"'; + assert(actual.contains(expected), verboseMessage); } /** Assert that a string does not contain an unexpected substring. **/ public static function notContains(unexpected:String, actual:String) { - Assert.equals(-1, actual.indexOf(unexpected)); + var verboseMessage = ' Asserting that "${actual}" does not contain "${unexpected}"'; + assert(!actual.contains(unexpected), verboseMessage); } public static function isSome(option:Option) { + var verboseMessage = ' Asserting that ${option} is Some(_)'; switch (option) { case Some(_): - Assert.equals(0, 0); + pass(verboseMessage); case None: - Assert.fail(); + fail(verboseMessage); } } public static function isNone(option:Option) { + var verboseMessage = ' Asserting that ${option} is None'; switch (option) { case Some(_): - Assert.fail(); + fail(verboseMessage); case None: - Assert.equals(0, 0); + pass(verboseMessage); } } public static function throws(f:Void->Void, ?message:String) { try { f(); - Assert.fail("Expected an exception to be thrown"); + fail("Expected an exception to be thrown"); } catch (e:String) { if (message != null) { - Assert.equals(message, e); + equals(message, e); + } else { + pass("An exception was thrown, as expected"); } - Assert.equals(0, 0); } } } diff --git a/hank/StoryTestCase.hx b/hank/StoryTestCase.hx index bfdf5cc..a67aea3 100644 --- a/hank/StoryTestCase.hx +++ b/hank/StoryTestCase.hx @@ -6,14 +6,12 @@ import hank.Story.StoryFrame; import hank.LogUtil; import hank.HankBuffer; import haxe.CallStack; -import utest.Assert; -class StoryTestCase extends utest.Test { +class StoryTestCase { var testsDirectory:String; var files:PreloadedFiles = new Map(); public function new(testsDirectory:String, ?preloadedFiles:PreloadedFiles) { - super(); this.testsDirectory = testsDirectory; if (preloadedFiles != null) this.files = preloadedFiles; @@ -68,7 +66,7 @@ class StoryTestCase extends utest.Test { } catch (e:Dynamic) { var failMessage = ' Error testing $folder/$file at transcript line $lastTranscriptLine: $e, ${LogUtil.prettifyStack(CallStack.exceptionStack())}'; LogUtil.cleanTrace(failMessage); - Assert.fail(failMessage); + HankAssert.fail(failMessage); } #end } @@ -100,7 +98,6 @@ class StoryTestCase extends utest.Test { } catch (e:Dynamic) { LogUtil.cleanTrace(' Error parsing $storyFile: $e'); LogUtil.prettyPrintStack(CallStack.exceptionStack()); - Assert.fail(); return; } #end @@ -130,7 +127,7 @@ class StoryTestCase extends utest.Test { } while (line != null && line.startsWith("*")); // Assert that the storyframe is a corresponding HasChoices enum - HankAssert.equals(HasChoices(choices), frame); + HankAssert.equals(HasChoices(choices, [for(choice in choices) []]), frame); continue; } else if (line.startsWith(">")) { diff --git a/haxe_libraries/utest.hxml b/haxe_libraries/utest.hxml deleted file mode 100644 index 7c20620..0000000 --- a/haxe_libraries/utest.hxml +++ /dev/null @@ -1,5 +0,0 @@ -# @install: lix --silent download "haxelib:/utest#1.13.2" into utest/1.13.2/haxelib --cp ${HAXE_LIBCACHE}/utest/1.13.2/haxelib/src --D utest=1.13.2 ---macro utest.utils.Macro.checkHaxe() ---macro utest.utils.Macro.importEnvSettings() diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..2fd776c --- /dev/null +++ b/test.sh @@ -0,0 +1,2 @@ +source functions.sh +t examples diff --git a/tests/main/Examples.hx b/tests/main/Examples.hx index 360a51a..fde3f00 100644 --- a/tests/main/Examples.hx +++ b/tests/main/Examples.hx @@ -1,16 +1,15 @@ package tests.main; -import utest.Test; import hank.StoryTestCase; import hank.LogUtil; @:build(hank.FileLoadingMacro.build(["examples/"])) -class Examples extends Test { +class Examples /*extends Test*/ { public static function main() { trace('Testing examples for target ${LogUtil.currentTarget()}'); - utest.UTest.run([new StoryTestCase("examples" + new StoryTestCase("examples" #if !sys , files #end - )]); + ).testAllExamples(); } } \ No newline at end of file