diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-07-13 11:41:02 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-07-15 17:14:26 +0200 |
commit | 022c4795510306e08a4aba31504ca382d41c7fac (patch) | |
tree | d4c29f62038d0f336d90f32f46bc5b4f5c3ddc28 /hugofs/fileinfo_test.go | |
parent | f27e542442d19436f1428cc22bb03aca398d37a7 (diff) | |
download | hugo-022c4795510306e08a4aba31504ca382d41c7fac.tar.gz hugo-022c4795510306e08a4aba31504ca382d41c7fac.zip |
hugofs: Make FileMeta a struct
This commit started out investigating a `concurrent map read write` issue, ending by replacing the map with a struct.
This is easier to reason about, and it's more effective:
```
name old time/op new time/op delta
SiteNew/Regular_Deep_content_tree-16 71.5ms ± 3% 69.4ms ± 5% ~ (p=0.200 n=4+4)
name old alloc/op new alloc/op delta
SiteNew/Regular_Deep_content_tree-16 29.7MB ± 0% 27.9MB ± 0% -5.82% (p=0.029 n=4+4)
name old allocs/op new allocs/op delta
SiteNew/Regular_Deep_content_tree-16 313k ± 0% 303k ± 0% -3.35% (p=0.029 n=4+4)
```
See #8749
Diffstat (limited to 'hugofs/fileinfo_test.go')
-rw-r--r-- | hugofs/fileinfo_test.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/hugofs/fileinfo_test.go b/hugofs/fileinfo_test.go new file mode 100644 index 000000000..8d6a2ff7a --- /dev/null +++ b/hugofs/fileinfo_test.go @@ -0,0 +1,51 @@ +// Copyright 2021 The Hugo Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package hugofs + +import ( + "testing" + + qt "github.com/frankban/quicktest" +) + +func TestFileMeta(t *testing.T) { + c := qt.New(t) + + c.Run("Merge", func(c *qt.C) { + src := &FileMeta{ + Filename: "fs1", + Path: "ps1", + } + dst := &FileMeta{ + Filename: "fd1", + } + + dst.Merge(src) + + c.Assert(dst.Path, qt.Equals, "ps1") + c.Assert(dst.Filename, qt.Equals, "fd1") + }) + + c.Run("Copy", func(c *qt.C) { + src := &FileMeta{ + Filename: "fs1", + Path: "ps1", + } + dst := src.Copy() + + c.Assert(dst, qt.Not(qt.Equals), src) + c.Assert(dst, qt.DeepEquals, src) + }) + +} |