| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package main |
| |
| import ( |
| "io/ioutil" |
| "log" |
| "os" |
| "os/signal" |
| "path/filepath" |
| ) |
| |
| // This program writes predefined data to stderr and stdout. It expects to find |
| // the predefined data in two files given by its own path plus the suffixes |
| // ".stderr.testdata" and ".stdout.testdata". |
| // |
| // It will terminate when it has both written its data and received a SIGINT. |
| func main() { |
| // Trap SIGINT. This program will wait to exit until the corresponding channel is notified. |
| sigint := make(chan os.Signal) |
| signal.Notify(sigint, os.Interrupt) |
| |
| myPath, err := filepath.Abs(os.Args[0]) |
| stderrDataPath := myPath + ".stderr.testdata" |
| stdoutDataPath := myPath + ".stdout.testdata" |
| |
| stderrData, err := ioutil.ReadFile(stderrDataPath) |
| if err != nil { |
| log.Fatalf("Failed to read file %s with error %v", stderrDataPath, err) |
| } |
| stdoutData, err := ioutil.ReadFile(stdoutDataPath) |
| if err != nil { |
| log.Fatalf("Failed to read file %s with error %v", stdoutDataPath, err) |
| } |
| |
| os.Stderr.Write(stderrData) |
| os.Stdout.Write(stdoutData) |
| |
| <-sigint |
| } |