Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: go/src/infra/gae/libs/wrapper/brokenfeatures_test.go

Issue 1230303003: Revert "Refactor current GAE abstraction library to be free of the SDK*" (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package gae 5 package wrapper
6 6
7 import ( 7 import (
8 "errors" 8 "errors"
9 "fmt" 9 "fmt"
10 "sync" 10 "sync"
11 "testing" 11 "testing"
12 12
13 . "github.com/smartystreets/goconvey/convey" 13 . "github.com/smartystreets/goconvey/convey"
14 ) 14 )
15 15
16 type foo struct { 16 type foo struct {
17 BrokenFeatures 17 BrokenFeatures
18 } 18 }
19 19
20 func (f *foo) RunIfNotBroken(fn func() error) error { 20 func (f *foo) halp() error { // test the ability to call IsBroken from an intern al helper
21 » // can 'override' RunIfNotBroken 21 » return f.IsBroken()
22 » return f.BrokenFeatures.RunIfNotBroken(fn)
23 } 22 }
24 23
25 func (f *foo) Foo() (ret string, err error) { 24 func (f *foo) Foo() (string, error) {
26 » err = f.RunIfNotBroken(func() error { 25 » err := f.halp()
27 » » ret = "foo" 26 » if err != nil {
28 » » return nil 27 » » return "", err
29 » }) 28 » }
30 » return 29 » return "foo", nil
31 } 30 }
32 31
33 func (f *foo) Bar() (ret string, err error) { 32 func (f *foo) Bar() (string, error) {
34 » err = f.RunIfNotBroken(func() error { 33 » err := f.halp()
35 » » ret = "bar" 34 » if err != nil {
36 » » return nil 35 » » return "", err
37 » }) 36 » }
38 » return 37 » return "bar", nil
39 } 38 }
40 39
41 type override struct { 40 type override struct {
42 BrokenFeatures 41 BrokenFeatures
43 totallyRekt bool 42 totallyRekt bool
44 } 43 }
45 44
46 func (o *override) RunIfNotBroken(f func() error) error { 45 func (o *override) IsBroken() error {
47 if o.totallyRekt { 46 if o.totallyRekt {
48 return fmt.Errorf("totallyRekt") 47 return fmt.Errorf("totallyRekt")
49 } 48 }
50 » return o.BrokenFeatures.RunIfNotBroken(f) 49 » return o.BrokenFeatures.IsBroken()
51 } 50 }
52 51
53 func (o *override) Foo() error { 52 func (o *override) Foo() error {
54 » return o.RunIfNotBroken(func() error { return nil }) 53 » return o.IsBroken()
55 } 54 }
56 55
57 func TestBrokenFeatures(t *testing.T) { 56 func TestBrokenFeatures(t *testing.T) {
58 e := errors.New("sup") 57 e := errors.New("sup")
59 eCustom := fmt.Errorf("bad stuff happened") 58 eCustom := fmt.Errorf("bad stuff happened")
60 f := foo{BrokenFeatures{DefaultError: e}} 59 f := foo{BrokenFeatures{DefaultError: e}}
61 60
62 Convey("BrokenFeatures", t, func() { 61 Convey("BrokenFeatures", t, func() {
63 Convey("can break functions", func() { 62 Convey("can break functions", func() {
64 s, err := f.Foo() 63 s, err := f.Foo()
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 111
113 Convey("Can be broken if not embedded", func(c C) { 112 Convey("Can be broken if not embedded", func(c C) {
114 var wg sync.WaitGroup 113 var wg sync.WaitGroup
115 wg.Add(1) 114 wg.Add(1)
116 go func() { 115 go func() {
117 defer wg.Done() 116 defer wg.Done()
118 bf := BrokenFeatures{DefaultError: e} 117 bf := BrokenFeatures{DefaultError: e}
119 // break some feature so we're forced to crawl t he stack. 118 // break some feature so we're forced to crawl t he stack.
120 bf.BreakFeatures(nil, "Nerds") 119 bf.BreakFeatures(nil, "Nerds")
121 // should break because there's no exported func tions on the stack. 120 // should break because there's no exported func tions on the stack.
122 » » » » err := bf.RunIfNotBroken(func() error { return n il }) 121 » » » » c.So(bf.IsBroken(), ShouldEqual, ErrBrokenFeatur esBroken)
123 » » » » c.So(err, ShouldEqual, ErrBrokenFeaturesBroken)
124 }() 122 }()
125 wg.Wait() 123 wg.Wait()
126 }) 124 })
127 }) 125 })
128 } 126 }
OLDNEW
« no previous file with comments | « go/src/infra/gae/libs/wrapper/brokenfeatures.go ('k') | go/src/infra/gae/libs/wrapper/context.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698