]> Cypherpunks repositories - gostls13.git/commitdiff
errors: new package
authorRuss Cox <rsc@golang.org>
Wed, 2 Nov 2011 01:46:59 +0000 (21:46 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 2 Nov 2011 01:46:59 +0000 (21:46 -0400)
The only function is errors.New, at least for now.

R=r, gustavo, adg, r
CC=golang-dev
https://golang.org/cl/5321061

src/pkg/Makefile
src/pkg/errors/Makefile [new file with mode: 0644]
src/pkg/errors/errors.go [new file with mode: 0644]
src/pkg/errors/errors_test.go [new file with mode: 0644]

index ffb1547c56735407207fa1e3979082d38f14309a..f23f7fc4eda7e8db518ff1b302da69d4ca9db275 100644 (file)
@@ -75,6 +75,7 @@ DIRS=\
        encoding/git85\
        encoding/hex\
        encoding/pem\
+       errors\
        exec\
        exp/ebnf\
        exp/ebnflint\
diff --git a/src/pkg/errors/Makefile b/src/pkg/errors/Makefile
new file mode 100644 (file)
index 0000000..05b4de5
--- /dev/null
@@ -0,0 +1,11 @@
+# Copyright 2011 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+include ../../Make.inc
+
+TARG=errors
+GOFILES=\
+       errors.go\
+
+include ../../Make.pkg
diff --git a/src/pkg/errors/errors.go b/src/pkg/errors/errors.go
new file mode 100644 (file)
index 0000000..3085a79
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright 2011 The Go 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 errors implements functions to manipulate errors.
+package errors
+
+// New returns an error that formats as the given text.
+func New(text string) error {
+       return &errorString{text}
+}
+
+// errorString is a trivial implementation of error.
+type errorString struct {
+       s string
+}
+
+func (e *errorString) Error() string {
+       return e.s
+}
diff --git a/src/pkg/errors/errors_test.go b/src/pkg/errors/errors_test.go
new file mode 100644 (file)
index 0000000..c537eeb
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright 2011 The Go 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 errors_test
+
+import (
+       . "errors"
+       "testing"
+)
+
+func TestNewEqual(t *testing.T) {
+       // Different allocations should not be equal.
+       if New("abc") == New("abc") {
+               t.Errorf(`New("abc") == New("abc")`)
+       }
+       if New("abc") == New("xyz") {
+               t.Errorf(`New("abc") == New("xyz")`)
+       }
+
+       // Same allocation should be equal to itself (not crash).
+       err := New("jkl")
+       if err != err {
+               t.Errorf(`err != err`)
+       }
+}
+
+func TestErrorMethod(t *testing.T) {
+       err := New("abc")
+       if err.Error() != "abc" {
+               t.Errorf(`New("abc").Error() = %q, want %q`, err.Error(), "abc")
+       }
+}