Skip to content

Commit f97a11e

Browse files
authored
CI - UTest2 (HaxeFoundation#1120)
* std tests now use utest * utest for native tests * utest for telemetry * rest of the tests hopefully working * another isNull test * Easier to reason about assert * Swivel asserts around * More aggressive stack clearing * Non debug haxe tests
1 parent d4e8d40 commit f97a11e

49 files changed

Lines changed: 735 additions & 1465 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/setup/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ runs:
1414
- name: install haxe libraries
1515
shell: pwsh
1616
run: |
17-
haxelib install utest
17+
haxelib git utest https://github.com/haxe-utest/utest
1818
haxelib git hx4compat https://github.com/HaxeFoundation/hx4compat
1919
haxelib dev hxcpp ${{ github.workspace }}
2020
haxelib list

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ jobs:
3333
with:
3434
haxe: ${{ inputs.haxe }}
3535
- name: build
36-
run: haxe compile.hxml --debug -D HXCPP_M${{ inputs.arch }}
36+
run: haxe compile.hxml -D HXCPP_M${{ inputs.arch }}
3737
- name: run
38-
run: bin${{ inputs.sep }}TestMain-debug
38+
run: bin${{ inputs.sep }}TestMain
3939

4040
cffi:
4141
runs-on: ${{ inputs.os }}

test/cffi/compile-neko.hxml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
-cp src
2-
-main TestMain
3-
-neko bin/neko/TestMain.n
4-
-cp ../unit
1+
-p src
2+
-m TestMain
3+
-L utest
4+
--neko bin/neko/TestMain.n

test/cffi/compile-utf8.hxml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
-cp src
2-
-main TestMain
3-
-cpp bin/cpp-utf8
4-
-cp ../unit
1+
-p src
2+
-m TestMain
3+
-L utest
54
-D disable_unicode_strings
5+
--cpp bin/cpp-utf8

test/cffi/compile.hxml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
-cp src
2-
-main TestMain
3-
-cpp bin/cpp
4-
-cp ../unit
1+
-p src
2+
-m TestMain
3+
-L utest
4+
--cpp bin/cpp

test/cffi/src/TestBase.hx

Lines changed: 0 additions & 18 deletions
This file was deleted.

test/cffi/src/TestCffi.hx

Lines changed: 54 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import neko.vm.Gc;
99
import Loader;
1010

1111
import haxe.io.BytesData;
12+
import utest.Test;
13+
import utest.Assert;
1214

13-
class TestCffi extends TestBase
15+
class TestCffi extends Test
1416
{
1517
static var isBool:Dynamic->Bool = Lib.load("prime", "isBool", 1);
1618
static var isNull:Dynamic->Bool = Lib.load("prime", "isNull", 1);
@@ -49,45 +51,45 @@ class TestCffi extends TestBase
4951
{
5052
cpp.Prime.nekoInit("prime");
5153

52-
assertTrue( isBool!=null );
53-
assertTrue( isBool(true) );
54-
assertTrue( isBool(false) );
55-
assertFalse( isBool(21) );
56-
assertFalse( isBool("Hello") );
57-
assertFalse( isBool(null) );
54+
Assert.isTrue( isBool!=null );
55+
Assert.isTrue( isBool(true) );
56+
Assert.isTrue( isBool(false) );
57+
Assert.isFalse( isBool(21) );
58+
Assert.isFalse( isBool("Hello") );
59+
Assert.isFalse( isBool(null) );
5860

59-
assertTrue( isNull!=null );
60-
assertTrue( isNull(null) );
61-
assertFalse( isNull(false) );
62-
assertFalse( isNull(32) );
63-
assertFalse( isNull("") );
61+
Assert.isTrue( isNull!=null );
62+
Assert.isTrue( isNull(null) );
63+
Assert.isFalse( isNull(false) );
64+
Assert.isFalse( isNull(32) );
65+
Assert.isFalse( isNull("") );
6466

65-
assertTrue( allocNull!=null );
66-
assertEquals(null, allocNull() );
67+
Assert.isTrue( allocNull!=null );
68+
Assert.isNull( allocNull() );
6769

68-
assertTrue( appendString!=null );
69-
assertTrue( bufferToString!=null );
70-
assertTrue( getRoot!=null );
71-
assertTrue( setRoot!=null );
70+
Assert.isTrue( appendString!=null );
71+
Assert.isTrue( bufferToString!=null );
72+
Assert.isTrue( getRoot!=null );
73+
Assert.isTrue( setRoot!=null );
7274

73-
assertTrue( createAnon!=null );
75+
Assert.isTrue( createAnon!=null );
7476

7577

76-
assertFalse( valIsBuffer(null) );
77-
assertFalse( valIsBuffer(1) );
78-
assertFalse( valIsBuffer({}) );
79-
assertFalse( valIsBuffer("String Buf") );
78+
Assert.isFalse( valIsBuffer(null) );
79+
Assert.isFalse( valIsBuffer(1) );
80+
Assert.isFalse( valIsBuffer({}) );
81+
Assert.isFalse( valIsBuffer("String Buf") );
8082

8183
if (cppObjectAsDynamic!=null)
82-
assertTrue( getObjectAsString()==null);
84+
Assert.isNull( getObjectAsString() );
8385

8486
var anon = createAnon();
8587
for(f in Reflect.fields(anon))
8688
{
8789
#if cpp
8890
var value:Dynamic = Reflect.field(anon, f);
8991
//trace(f + " " + Type.typeof(value) );
90-
assertTrue( Std.string(Type.typeof(value)) == f );
92+
Assert.isTrue( Std.string(Type.typeof(value)) == f );
9193
#end
9294
}
9395

@@ -102,52 +104,51 @@ class TestCffi extends TestBase
102104
var bytes = haxe.io.Bytes.ofString(base).getData();
103105

104106
#if !neko
105-
assertTrue( valIsBuffer(bytes) );
107+
Assert.isTrue( valIsBuffer(bytes) );
106108
// Can't acess neko buffer from haxe code
107109
bytes = appendString(bytes,"World");
108110
var result = bufferToString(bytes);
109-
assertEq(result,"Hello World");
111+
Assert.equals("Hello World", result);
110112
#end
111113

112-
assertEq(valToString(null,1),"String:null1");
113-
assertEq(valToString("x",1.1),"String:x1.1");
114-
assertEq(valToString("Hello"," World"),"String:Hello World");
115-
assertEq(valToString([1],[]),"String:[1][]");
114+
Assert.equals("String:null1", valToString(null,1));
115+
Assert.equals("String:x1.1", valToString("x",1.1));
116+
Assert.equals("String:Hello World", valToString("Hello"," World"));
117+
Assert.equals("String:[1][]", valToString([1],[]));
116118

117-
assertEq(subBuffer("hello",4),"Cold as hell");
119+
Assert.equals("Cold as hell", subBuffer("hello",4));
118120

119121
#if !neko
120-
assertEq(charString(99,97,116),"A cat");
122+
Assert.equals("A cat", charString(99,97,116));
121123
#end
122124

123125
var bytes = haxe.io.Bytes.ofString("String Buffer");
124-
assertEq( byteDataSize(bytes), 13 );
125-
assertEq( byteDataByte(bytes,1), 't'.code );
126+
Assert.equals( 13, byteDataSize(bytes) );
127+
Assert.equals( 't'.code, byteDataByte(bytes,1) );
126128

127-
assertEq( getAbstractFreeCount(), 0 );
129+
Assert.equals( 0, getAbstractFreeCount() );
128130

129131
var createdAbs = createAbstract();
130-
assertTrue( createdAbs!=null );
131-
assertEq( getAbstract(createdAbs), 99 );
132+
Assert.notNull( createdAbs );
133+
Assert.equals( 99, getAbstract(createdAbs) );
132134
// Explicitly freeing abstract does not call finalizer
133135
freeAbstract( createdAbs );
134-
assertEq( getAbstractFreeCount(), 0 );
135-
assertEq( getAbstract(createdAbs), -1 );
136-
assertEq( getAbstractFreeCount(), 0 );
136+
Assert.equals( 0, getAbstractFreeCount() );
137+
Assert.equals( -1, getAbstract(createdAbs) );
138+
Assert.equals( 0, getAbstractFreeCount() );
137139
createdAbs = null;
138140
Gc.run(true);
139-
assertEq( getAbstractFreeCount(), 0 );
141+
Assert.equals( 0, getAbstractFreeCount() );
140142

141143
var allocatedAbs = allocAbstract();
142-
assertTrue( allocatedAbs!=null );
143-
assertEq( getAbstract(allocatedAbs), 99 );
144-
assertEq( getAbstractFreeCount(), 0 );
144+
Assert.notNull( allocatedAbs );
145+
Assert.equals( 99, getAbstract(allocatedAbs) );
146+
Assert.equals( 0, getAbstractFreeCount() );
145147
freeAbstract( allocatedAbs );
146-
assertEq( getAbstract(allocatedAbs), -1 );
147-
assertEq( getAbstractFreeCount(), 0 );
148+
Assert.equals( -1, getAbstract(allocatedAbs) );
149+
Assert.equals( 0, getAbstractFreeCount() );
148150
allocatedAbs = null;
149151

150-
151152
createDeepAbstracts(2);
152153
clearStack(12);
153154

@@ -156,21 +157,21 @@ class TestCffi extends TestBase
156157
var freeCount = getAbstractFreeCount();
157158
if (freeCount!=2)
158159
{
159-
Sys.println('\nWarning: $freeCount != 2');
160+
Assert.warn('$freeCount != 2');
160161
}
161162

162163
for(i in 0...100)
163-
assertEq( getRoot(i)+"", [i]+"" );
164+
Assert.equals( [i]+"", getRoot(i)+"" );
164165

165166
clearRoots();
166167

167168
for(i in 0...100)
168-
assertEq( getRoot(i), null );
169+
Assert.isNull( getRoot(i) );
169170

170-
assertEq( getAbstractFreeCount(), 2 );
171+
Assert.equals( 2, getAbstractFreeCount() );
171172
}
172173

173-
function clearStack(count:Int, ?nothing:Dynamic):Dynamic
174+
function clearStack(count:Int, ?_:Dynamic, ?_:Dynamic, ?_:Dynamic, ?_:Dynamic, ?_:Dynamic):Dynamic
174175
{
175176
if (count==0)
176177
return 0;

test/cffi/src/TestMain.hx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,7 @@ class TestMain
33
{
44
public static function main()
55
{
6-
var r = new haxe.unit.TestRunner();
7-
r.add(new TestCffi());
8-
r.add(new TestPrime());
9-
10-
var t0 = haxe.Timer.stamp();
11-
var success = r.run();
12-
trace(" Time : " + (haxe.Timer.stamp()-t0)*1000 );
13-
Sys.exit(success ? 0 : 1);
6+
utest.UTest.run([ new TestCffi(), new TestPrime() ]);
147
}
158
}
169

test/cffi/src/TestPrime.hx

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import utest.Assert;
2+
import utest.Test;
13

2-
3-
class TestPrime extends TestBase
4+
class TestPrime extends Test
45
{
56
static var add = Loader.load("addInts", "iii" );
67
#if cpp
@@ -28,51 +29,51 @@ class TestPrime extends TestBase
2829
{
2930
cpp.Prime.nekoInit("prime");
3031

31-
assertTrue(add!=null);
32-
assertEquals(7, add(2,5));
32+
Assert.notNull(add);
33+
Assert.equals(7, add(2,5));
3334

3435
#if cpp
3536
printString("Hello World");
3637
#end
3738

3839
var len = distance3d(3,4,5);
39-
assertClose(50,len*len);
40+
Assert.floatEquals(50,len*len, 0.001);
4041

4142
fields( { x:11, name:"Hello" } );
4243
fields( null );
4344

44-
assertEquals("Ok", stringVal("HxString"));
45+
Assert.equals("Ok", stringVal("HxString"));
4546

46-
assertEquals(null, getNullString());
47+
Assert.isNull(getNullString());
4748

48-
assertEquals( ""+[1], ""+select(0, [1], "Hello", {x:1}, add) );
49+
Assert.equals( ""+[1], ""+select(0, [1], "Hello", {x:1}, add) );
4950
var shouldBeNull:String = "" + select(0, null, "Hello", {x:1}, add);
5051
trace( "null ?" + shouldBeNull + "/" + shouldBeNull.length );
51-
assertEquals( "null", shouldBeNull );
52-
//assertEquals( "null", ""+select(0, null, "Hello", {x:1}, add) );
53-
assertEquals( ""+"Hello", ""+select(1, [1], "Hello", {x:1}, add));
54-
assertEquals( ""+{x:1}, ""+select(2, [1], "Hello", {x:1}, add) );
55-
assertEquals( ""+add, ""+select(3, [1], "Hello", {x:1}, add) );
52+
Assert.equals( "null", shouldBeNull );
53+
//Assert.equals( "null", ""+select(0, null, "Hello", {x:1}, add) );
54+
Assert.equals( ""+"Hello", ""+select(1, [1], "Hello", {x:1}, add));
55+
Assert.equals( ""+{x:1}, ""+select(2, [1], "Hello", {x:1}, add) );
56+
Assert.equals( ""+add, ""+select(3, [1], "Hello", {x:1}, add) );
5657

57-
assertClose( 7.3, floats(true,4.2,3.1) );
58-
assertClose( 1.1, floats(false,4.2,3.1) );
58+
Assert.floatEquals( 7.3, floats(true,4.2,3.1), 0.001 );
59+
Assert.floatEquals( 1.1, floats(false,4.2,3.1), 0.001 );
5960

60-
assertEquals( 5, multi5(1,1,1,1,1) );
61-
assertEquals( 6, multi6(1,1,1,1,1,1) );
62-
assertEquals( 7, multi7(1,1,1,1,1,1,1) );
63-
assertEquals( 8, multi8(1,1,1,1,1,1,1,1) );
64-
assertEquals( 9, multi9(1,1,1,1,1,1,1,1,1) );
65-
assertEquals( 10, multi10(1,1,1,1,1,1,1,1,1,1) );
66-
assertEquals( 11, multi11(1,1,1,1,1,1,1,1,1,1,1) );
67-
assertEquals( 12, multi12(1,1,1,1,1,1,1,1,1,1,1,1) );
61+
Assert.equals( 5, multi5(1,1,1,1,1) );
62+
Assert.equals( 6, multi6(1,1,1,1,1,1) );
63+
Assert.equals( 7, multi7(1,1,1,1,1,1,1) );
64+
Assert.equals( 8, multi8(1,1,1,1,1,1,1,1) );
65+
Assert.equals( 9, multi9(1,1,1,1,1,1,1,1,1) );
66+
Assert.equals( 10, multi10(1,1,1,1,1,1,1,1,1,1) );
67+
Assert.equals( 11, multi11(1,1,1,1,1,1,1,1,1,1,1) );
68+
Assert.equals( 12, multi12(1,1,1,1,1,1,1,1,1,1,1,1) );
6869

6970
var s0 = "hello";
7071
var s1 = "こんにちは";
71-
assertTrue( addStrings(s0,s0) == s0+s0 );
72+
Assert.isTrue( addStrings(s0,s0) == s0+s0 );
7273
var s01 = addStrings(s0,s1);
73-
assertTrue( s01 == s0+s1 );
74+
Assert.isTrue( s01 == s0+s1 );
7475
var s11 = addStrings(s1,s1);
75-
assertTrue( s11 == s1+s1 );
76+
Assert.isTrue( s11 == s1+s1 );
7677

7778
}
7879
}

test/cppia/compile-client.hxml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
-main Client
1+
-m Client
22
-D dll_import=host_classes.info
3-
-cppia bin/client.cppia
4-
-cp ../unit
3+
--cppia bin/client.cppia

0 commit comments

Comments
 (0)