os_test.go (2782B)
1 // Copyright 2017 The Hugo Authors. 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 // http://www.apache.org/licenses/LICENSE-2.0 7 // 8 // Unless required by applicable law or agreed to in writing, software 9 // distributed under the License is distributed on an "AS IS" BASIS, 10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package os_test 15 16 import ( 17 "path/filepath" 18 "testing" 19 20 "github.com/gohugoio/hugo/hugolib" 21 "github.com/gohugoio/hugo/tpl/os" 22 23 qt "github.com/frankban/quicktest" 24 ) 25 26 func TestReadFile(t *testing.T) { 27 t.Parallel() 28 29 b := newFileTestBuilder(t).Build() 30 31 // helpers.PrintFs(b.H.PathSpec.BaseFs.Work, "", _os.Stdout) 32 33 ns := os.New(b.H.Deps) 34 35 for _, test := range []struct { 36 filename string 37 expect any 38 }{ 39 {filepath.FromSlash("/f/f1.txt"), "f1-content"}, 40 {filepath.FromSlash("f/f1.txt"), "f1-content"}, 41 {filepath.FromSlash("../f2.txt"), false}, 42 {"", false}, 43 {"b", false}, 44 } { 45 46 result, err := ns.ReadFile(test.filename) 47 48 if bb, ok := test.expect.(bool); ok && !bb { 49 b.Assert(err, qt.Not(qt.IsNil)) 50 continue 51 } 52 53 b.Assert(err, qt.IsNil) 54 b.Assert(result, qt.Equals, test.expect) 55 } 56 } 57 58 func TestFileExists(t *testing.T) { 59 t.Parallel() 60 c := qt.New(t) 61 62 b := newFileTestBuilder(t).Build() 63 ns := os.New(b.H.Deps) 64 65 for _, test := range []struct { 66 filename string 67 expect any 68 }{ 69 {filepath.FromSlash("/f/f1.txt"), true}, 70 {filepath.FromSlash("f/f1.txt"), true}, 71 {filepath.FromSlash("../f2.txt"), false}, 72 {"b", false}, 73 {"", nil}, 74 } { 75 result, err := ns.FileExists(test.filename) 76 77 if test.expect == nil { 78 c.Assert(err, qt.Not(qt.IsNil)) 79 continue 80 } 81 82 c.Assert(err, qt.IsNil) 83 c.Assert(result, qt.Equals, test.expect) 84 } 85 } 86 87 func TestStat(t *testing.T) { 88 t.Parallel() 89 b := newFileTestBuilder(t).Build() 90 ns := os.New(b.H.Deps) 91 92 for _, test := range []struct { 93 filename string 94 expect any 95 }{ 96 {filepath.FromSlash("/f/f1.txt"), int64(10)}, 97 {filepath.FromSlash("f/f1.txt"), int64(10)}, 98 {"b", nil}, 99 {"", nil}, 100 } { 101 result, err := ns.Stat(test.filename) 102 103 if test.expect == nil { 104 b.Assert(err, qt.Not(qt.IsNil)) 105 continue 106 } 107 108 b.Assert(err, qt.IsNil) 109 b.Assert(result.Size(), qt.Equals, test.expect) 110 } 111 } 112 113 func newFileTestBuilder(t *testing.T) *hugolib.IntegrationTestBuilder { 114 files := ` 115 -- f/f1.txt -- 116 f1-content 117 -- home/f2.txt -- 118 f2-content 119 ` 120 121 return hugolib.NewIntegrationTestBuilder( 122 hugolib.IntegrationTestConfig{ 123 T: t, 124 TxtarString: files, 125 WorkingDir: "/mywork", 126 }, 127 ) 128 }