MCPcopy Create free account
hub / github.com/buke/quickjs-go / TestValueAwait

Function TestValueAwait

value_test.go:1549–1591  ·  view source on GitHub ↗

TestValueAwait tests promise await functionality

(t *testing.T)

Source from the content-addressed store, hash-verified

1547
1548// TestValueAwait tests promise await functionality
1549func TestValueAwait(t *testing.T) {
1550 useStableOwnerHooksForLegacySubtests(t)
1551
1552 rt := NewRuntime()
1553 defer rt.Close()
1554 ctx := rt.NewContext()
1555 defer ctx.Close()
1556
1557 // Test awaiting resolved promise - FIXED: removed error handling
1558 resolvedPromise := ctx.Eval(`Promise.resolve("resolved value")`)
1559 require.False(t, resolvedPromise.IsException()) // Check for exceptions instead of error
1560
1561 result := resolvedPromise.Await()
1562 defer result.Free()
1563 // Check if result is an exception or valid value
1564 if result.IsException() {
1565 err := ctx.Exception()
1566 t.Logf("Promise await resulted in exception: %v", err)
1567 } else {
1568 require.Equal(t, "resolved value", result.String())
1569 }
1570
1571 // Test awaiting non-promise value (should return as-is) - FIXED: removed error handling
1572 normalValue := ctx.NewString("not a promise")
1573
1574 result2 := normalValue.Await()
1575 defer result2.Free()
1576 if result2.IsException() {
1577 err := ctx.Exception()
1578 t.Logf("Non-promise await resulted in exception: %v", err)
1579 } else {
1580 require.Equal(t, "not a promise", result2.String())
1581 }
1582
1583 // Test awaiting rejected promise - FIXED: removed error handling
1584 rejectedPromise := ctx.Eval(`Promise.reject(new Error("test error"))`)
1585 require.False(t, rejectedPromise.IsException()) // Check for exceptions instead of error
1586
1587 result3 := rejectedPromise.Await()
1588 defer result3.Free()
1589 // Rejected promise should result in an exception when awaited
1590 require.True(t, result3.IsException())
1591}
1592
1593// TestValueClassInstanceEdgeCases tests uncovered branches in class instance methods
1594func TestValueClassInstanceEdgeCases(t *testing.T) {

Callers

nothing calls this directly

Calls 13

CloseMethod · 0.95
NewContextMethod · 0.95
CloseMethod · 0.95
EvalMethod · 0.95
ExceptionMethod · 0.95
NewStringMethod · 0.95
NewRuntimeFunction · 0.85
IsExceptionMethod · 0.80
EqualMethod · 0.80
AwaitMethod · 0.45
FreeMethod · 0.45

Tested by

no test coverage detected