blob: 957fae3a9cc2f475a6f0698699b4522961a86021 [file] [log] [blame]
// Copyright 2019 The Chromium OS 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 (
"errors"
"fmt"
"syscall"
"testing"
)
func TestNewErrorwithSourceLocfMessage(t *testing.T) {
err := newErrorwithSourceLocf("a%sc", "b")
if err.Error() != "errors_test.go:15: abc" {
t.Errorf("Error message incorrect. Got: %s", err.Error())
}
}
func TestWrapErrorwithSourceLocfMessage(t *testing.T) {
cause := errors.New("someCause")
err := wrapErrorwithSourceLocf(cause, "a%sc", "b")
if err.Error() != "errors_test.go:23: abc: someCause" {
t.Errorf("Error message incorrect. Got: %s", err.Error())
}
}
func TestNewUserErrorf(t *testing.T) {
err := newUserErrorf("a%sc", "b")
if err.Error() != "abc" {
t.Errorf("Error message incorrect. Got: %s", err.Error())
}
}
func TestSubprocessOk(t *testing.T) {
exitCode, err := wrapSubprocessErrorWithSourceLoc(nil, nil)
if exitCode != 0 {
t.Errorf("unexpected exit code. Got: %d", exitCode)
}
if err != nil {
t.Errorf("unexpected error. Got: %s", err)
}
}
func TestSubprocessExitCodeError(t *testing.T) {
exitCode, err := wrapSubprocessErrorWithSourceLoc(nil, newExitCodeError(23))
if exitCode != 23 {
t.Errorf("unexpected exit code. Got: %d", exitCode)
}
if err != nil {
t.Errorf("unexpected error. Got: %s", err)
}
}
func TestSubprocessCCacheError(t *testing.T) {
_, err := wrapSubprocessErrorWithSourceLoc(&command{Path: "/usr/bin/ccache"}, syscall.ENOENT)
if _, ok := err.(userError); !ok {
t.Errorf("unexpected error type. Got: %T", err)
}
if err.Error() != "ccache not found under /usr/bin/ccache. Please install it" {
t.Errorf("unexpected error message. Got: %s", err)
}
}
func TestSubprocessGeneralError(t *testing.T) {
cmd := &command{Path: "somepath"}
_, err := wrapSubprocessErrorWithSourceLoc(cmd, errors.New("someerror"))
if err.Error() != fmt.Sprintf("errors_test.go:68: failed to execute %#v: someerror", cmd) {
t.Errorf("Error message incorrect. Got: %s", err.Error())
}
}