github.com/rigado/snapd@v2.42.5-go-mod+incompatible/asserts/findwildcard_test.go (about) 1 // -*- Mode: Go; indent-tabs-mode: t -*- 2 3 /* 4 * Copyright (C) 2015 Canonical Ltd 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 3 as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 package asserts 21 22 import ( 23 "errors" 24 "io/ioutil" 25 "os" 26 "path/filepath" 27 "sort" 28 29 "gopkg.in/check.v1" 30 ) 31 32 type findWildcardSuite struct{} 33 34 var _ = check.Suite(&findWildcardSuite{}) 35 36 func (fs *findWildcardSuite) TestFindWildcard(c *check.C) { 37 top := filepath.Join(c.MkDir(), "top") 38 39 err := os.MkdirAll(top, os.ModePerm) 40 c.Assert(err, check.IsNil) 41 err = os.MkdirAll(filepath.Join(top, "acc-id1"), os.ModePerm) 42 c.Assert(err, check.IsNil) 43 err = os.MkdirAll(filepath.Join(top, "acc-id1", "abcd"), os.ModePerm) 44 c.Assert(err, check.IsNil) 45 err = os.MkdirAll(filepath.Join(top, "acc-id1", "e5cd"), os.ModePerm) 46 c.Assert(err, check.IsNil) 47 err = os.MkdirAll(filepath.Join(top, "acc-id2"), os.ModePerm) 48 c.Assert(err, check.IsNil) 49 err = os.MkdirAll(filepath.Join(top, "acc-id2", "f444"), os.ModePerm) 50 c.Assert(err, check.IsNil) 51 52 err = ioutil.WriteFile(filepath.Join(top, "acc-id1", "abcd", "active"), nil, os.ModePerm) 53 c.Assert(err, check.IsNil) 54 err = ioutil.WriteFile(filepath.Join(top, "acc-id1", "abcd", "active.1"), nil, os.ModePerm) 55 c.Assert(err, check.IsNil) 56 err = ioutil.WriteFile(filepath.Join(top, "acc-id1", "e5cd", "active"), nil, os.ModePerm) 57 c.Assert(err, check.IsNil) 58 err = ioutil.WriteFile(filepath.Join(top, "acc-id2", "f444", "active"), nil, os.ModePerm) 59 c.Assert(err, check.IsNil) 60 61 var res []string 62 foundCb := func(relpath []string) error { 63 res = append(res, relpath...) 64 return nil 65 } 66 67 err = findWildcard(top, []string{"*", "*", "active"}, foundCb) 68 c.Assert(err, check.IsNil) 69 sort.Strings(res) 70 c.Check(res, check.DeepEquals, []string{"acc-id1/abcd/active", "acc-id1/e5cd/active", "acc-id2/f444/active"}) 71 72 res = nil 73 err = findWildcard(top, []string{"*", "*", "active*"}, foundCb) 74 c.Assert(err, check.IsNil) 75 sort.Strings(res) 76 c.Check(res, check.DeepEquals, []string{"acc-id1/abcd/active", "acc-id1/abcd/active.1", "acc-id1/e5cd/active", "acc-id2/f444/active"}) 77 78 res = nil 79 err = findWildcard(top, []string{"zoo", "*", "active"}, foundCb) 80 c.Assert(err, check.IsNil) 81 c.Check(res, check.HasLen, 0) 82 83 res = nil 84 err = findWildcard(top, []string{"zoo", "*", "active*"}, foundCb) 85 c.Assert(err, check.IsNil) 86 c.Check(res, check.HasLen, 0) 87 88 res = nil 89 err = findWildcard(top, []string{"a*", "zoo", "active"}, foundCb) 90 c.Assert(err, check.IsNil) 91 c.Check(res, check.HasLen, 0) 92 93 res = nil 94 err = findWildcard(top, []string{"acc-id1", "*cd", "active"}, foundCb) 95 c.Assert(err, check.IsNil) 96 sort.Strings(res) 97 c.Check(res, check.DeepEquals, []string{"acc-id1/abcd/active", "acc-id1/e5cd/active"}) 98 99 res = nil 100 err = findWildcard(top, []string{"acc-id1", "*cd", "active*"}, foundCb) 101 c.Assert(err, check.IsNil) 102 sort.Strings(res) 103 c.Check(res, check.DeepEquals, []string{"acc-id1/abcd/active", "acc-id1/abcd/active.1", "acc-id1/e5cd/active"}) 104 105 } 106 107 func (fs *findWildcardSuite) TestFindWildcardSomeErrors(c *check.C) { 108 top := filepath.Join(c.MkDir(), "top-errors") 109 110 err := os.MkdirAll(top, os.ModePerm) 111 c.Assert(err, check.IsNil) 112 err = os.MkdirAll(filepath.Join(top, "acc-id1"), os.ModePerm) 113 c.Assert(err, check.IsNil) 114 err = os.MkdirAll(filepath.Join(top, "acc-id2"), os.ModePerm) 115 c.Assert(err, check.IsNil) 116 117 err = ioutil.WriteFile(filepath.Join(top, "acc-id1", "abcd"), nil, os.ModePerm) 118 c.Assert(err, check.IsNil) 119 120 err = os.MkdirAll(filepath.Join(top, "acc-id2", "dddd"), os.ModePerm) 121 c.Assert(err, check.IsNil) 122 123 var res []string 124 var retErr error 125 foundCb := func(relpath []string) error { 126 res = append(res, relpath...) 127 return retErr 128 } 129 130 myErr := errors.New("boom") 131 retErr = myErr 132 err = findWildcard(top, []string{"acc-id1", "*"}, foundCb) 133 c.Check(err, check.Equals, myErr) 134 135 retErr = nil 136 res = nil 137 err = findWildcard(top, []string{"acc-id2", "*"}, foundCb) 138 c.Check(err, check.ErrorMatches, "expected a regular file: .*") 139 }