diff options
Diffstat (limited to 'ldd/exec_test.go')
| -rw-r--r-- | ldd/exec_test.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/ldd/exec_test.go b/ldd/exec_test.go new file mode 100644 index 00000000..a6d3a7e5 --- /dev/null +++ b/ldd/exec_test.go @@ -0,0 +1,45 @@ +package ldd_test + +import ( + "errors" + "os" + "os/exec" + "testing" + + "hakurei.app/container" + "hakurei.app/ldd" + "hakurei.app/message" +) + +func TestExec(t *testing.T) { + t.Parallel() + + t.Run("failure", func(t *testing.T) { + t.Parallel() + + _, err := ldd.Exec(t.Context(), nil, "/proc/nonexistent") + + var exitError *exec.ExitError + if !errors.As(err, &exitError) { + t.Fatalf("Exec: error has incorrect concrete type: %#v", err) + } + + const want = 1 + if got := exitError.ExitCode(); got != want { + t.Fatalf("Exec: ExitCode = %d, want %d", got, want) + } + }) + + t.Run("success", func(t *testing.T) { + msg := message.New(nil) + msg.GetLogger().SetPrefix("check: ") + if entries, err := ldd.Exec(t.Context(), nil, container.MustExecutable(msg)); err != nil { + t.Fatalf("Exec: error = %v", err) + } else if testing.Verbose() { + // result cannot be measured here as build information is not known + t.Logf("Exec: %q", entries) + } + }) +} + +func TestMain(m *testing.M) { container.TryArgv0(nil); os.Exit(m.Run()) } |
