Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

capture_output.go 657B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package testlib
  2. import (
  3. "bytes"
  4. "io"
  5. "os"
  6. "strings"
  7. )
  8. func CaptureStdout(callback func()) string {
  9. return captureOutput(&os.Stdout, callback)
  10. }
  11. func CaptureStderr(callback func()) string {
  12. return captureOutput(&os.Stderr, callback)
  13. }
  14. func captureOutput(filefp **os.File, callback func()) string {
  15. oldFp := *filefp
  16. defer func() {
  17. *filefp = oldFp
  18. }()
  19. reader, writer, _ := os.Pipe()
  20. buf := &bytes.Buffer{}
  21. closeChan := make(chan bool)
  22. go func() {
  23. io.Copy(buf, reader) //nolint: errcheck
  24. close(closeChan)
  25. }()
  26. *filefp = writer
  27. callback()
  28. writer.Close() //nolint: errcheck
  29. <-closeChan
  30. return strings.TrimSpace(buf.String())
  31. }