1// Copyright 2018 Google Inc. All rights reserved. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package blueprint 16 17import "testing" 18 19func TestGlobCache(t *testing.T) { 20 ctx := NewContext() 21 ctx.MockFileSystem(map[string][]byte{ 22 "Blueprints": nil, 23 "a/a": nil, 24 "a/b": nil, 25 }) 26 27 // Test a simple glob with no excludes 28 matches, err := ctx.glob("a/*", nil) 29 if err != nil { 30 t.Error("unexpected error", err) 31 } 32 if len(matches) != 2 || matches[0] != "a/a" || matches[1] != "a/b" { 33 t.Error(`expected ["a/a", "a/b"], got`, matches) 34 } 35 36 // Test the same glob with an empty excludes array to make sure 37 // excludes=nil does not conflict with excludes=[]string{} in the 38 // cache. 39 matches, err = ctx.glob("a/*", []string{}) 40 if err != nil { 41 t.Error("unexpected error", err) 42 } 43 if len(matches) != 2 || matches[0] != "a/a" || matches[1] != "a/b" { 44 t.Error(`expected ["a/a", "a/b"], got`, matches) 45 } 46 47 // Test the same glob with a different excludes array 48 matches, err = ctx.glob("a/*", []string{"a/b"}) 49 if err != nil { 50 t.Error("unexpected error", err) 51 } 52 if len(matches) != 1 || matches[0] != "a/a" { 53 t.Error(`expected ["a/a"], got`, matches) 54 } 55} 56