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

Function TestContextModules

context_test.go:524–655  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

522}
523
524func TestContextModules(t *testing.T) {
525 useStableOwnerHooksForLegacySubtests(t)
526
527 rt := NewRuntime(WithModuleImport(true))
528 defer rt.Close()
529 ctx := rt.NewContext()
530 defer ctx.Close()
531
532 moduleCode := `export function add(a, b) { return a + b; }`
533
534 t.Run("ModuleLoading", func(t *testing.T) {
535 // Basic module loading
536 result := ctx.LoadModule(moduleCode, "math_module")
537 defer result.Free()
538 require.False(t, result.IsException())
539
540 // Module with load_only option
541 result2 := ctx.LoadModule(moduleCode, "math_module2", EvalLoadOnly(true))
542 defer result2.Free()
543 require.False(t, result2.IsException())
544 })
545
546 t.Run("ModuleBytecode", func(t *testing.T) {
547 bytecode, err := ctx.Compile(moduleCode, EvalFlagModule(true), EvalFlagCompileOnly(true))
548 require.NoError(t, err)
549
550 // Basic bytecode loading
551 result := ctx.LoadModuleBytecode(bytecode)
552 defer result.Free()
553 require.False(t, result.IsException())
554
555 // Bytecode loading with load_only flag
556 result2 := ctx.LoadModuleBytecode(bytecode, EvalLoadOnly(true))
557 defer result2.Free()
558 require.False(t, result2.IsException())
559 })
560
561 t.Run("ModuleFiles", func(t *testing.T) {
562 moduleFile := "./test_module.js"
563 moduleContent := `export const value = 42;`
564 err := os.WriteFile(moduleFile, []byte(moduleContent), 0644)
565 require.NoError(t, err)
566 defer os.Remove(moduleFile)
567
568 // LoadModuleFile
569 moduleResult := ctx.LoadModuleFile(moduleFile, "test_module")
570 defer moduleResult.Free()
571 require.False(t, moduleResult.IsException())
572
573 // CompileModule tests
574 compiledModule, err := ctx.CompileModule(moduleFile, "compiled_module")
575 require.NoError(t, err)
576 require.NotEmpty(t, compiledModule)
577
578 compiledModule2, err := ctx.CompileModule(moduleFile, "compiled_module2", EvalFlagStrict(true))
579 require.NoError(t, err)
580 require.NotEmpty(t, compiledModule2)
581 })

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
NewContextMethod · 0.95
CloseMethod · 0.95
LoadModuleMethod · 0.95
CompileMethod · 0.95
LoadModuleBytecodeMethod · 0.95
LoadModuleFileMethod · 0.95
CompileModuleMethod · 0.95
ExceptionMethod · 0.95
NewRuntimeFunction · 0.85
WithModuleImportFunction · 0.85

Tested by

no test coverage detected