github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/test_states.go (about) 1 package lang 2 3 import "fmt" 4 5 func testStates(p *Process) { 6 for _, name := range p.testState { 7 p.Tests.mutex.Lock() 8 block := p.Tests.stateBlocks[name] 9 p.Tests.mutex.Unlock() 10 if len(block) == 0 { 11 p.Tests.AddResult(&TestProperties{Name: name}, p, TestError, "No test state defined with that name") 12 continue 13 } 14 15 fork := p.Fork(F_PARENT_VARTABLE | F_BACKGROUND | F_NO_STDIN | F_CREATE_STDOUT | F_CREATE_STDERR) 16 fork.Name.Set(fmt.Sprintf("<state_%s> (%s)", name, p.Name.String())) 17 _, err := fork.Execute(block) 18 if err != nil { 19 p.Tests.AddResult(&TestProperties{Name: name}, p, TestError, err.Error()) 20 } 21 22 stdout, err := fork.Stdout.ReadAll() 23 if err != nil { 24 p.Tests.AddResult(&TestProperties{Name: name}, p, TestError, "state stdout: "+err.Error()) 25 } else { 26 p.Tests.AddResult(&TestProperties{Name: name}, p, TestState, "state stdout: "+string(stdout)) 27 } 28 29 stderr, err := fork.Stderr.ReadAll() 30 if err != nil { 31 p.Tests.AddResult(&TestProperties{Name: name}, p, TestError, "state stderr: "+err.Error()) 32 } else { 33 p.Tests.AddResult(&TestProperties{Name: name}, p, TestState, "state stderr: "+string(stderr)) 34 35 } 36 } 37 }