hugo

Fork of github.com/gohugoio/hugo with reverse pagination support

git clone git://git.shimmy1996.com/hugo.git

apply_test.go (2598B)

    1 // Copyright 2019 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 collections
   15 
   16 import (
   17 	"context"
   18 	"fmt"
   19 	"io"
   20 	"reflect"
   21 	"testing"
   22 
   23 	qt "github.com/frankban/quicktest"
   24 	"github.com/gohugoio/hugo/config"
   25 	"github.com/gohugoio/hugo/deps"
   26 	"github.com/gohugoio/hugo/langs"
   27 	"github.com/gohugoio/hugo/output"
   28 	"github.com/gohugoio/hugo/tpl"
   29 )
   30 
   31 type templateFinder int
   32 
   33 func (templateFinder) Lookup(name string) (tpl.Template, bool) {
   34 	return nil, false
   35 }
   36 
   37 func (templateFinder) HasTemplate(name string) bool {
   38 	return false
   39 }
   40 
   41 func (templateFinder) LookupVariant(name string, variants tpl.TemplateVariants) (tpl.Template, bool, bool) {
   42 	return nil, false, false
   43 }
   44 
   45 func (templateFinder) LookupVariants(name string) []tpl.Template {
   46 	return nil
   47 }
   48 
   49 func (templateFinder) LookupLayout(d output.LayoutDescriptor, f output.Format) (tpl.Template, bool, error) {
   50 	return nil, false, nil
   51 }
   52 
   53 func (templateFinder) Execute(t tpl.Template, wr io.Writer, data any) error {
   54 	return nil
   55 }
   56 
   57 func (templateFinder) ExecuteWithContext(ctx context.Context, t tpl.Template, wr io.Writer, data any) error {
   58 	return nil
   59 }
   60 
   61 func (templateFinder) GetFunc(name string) (reflect.Value, bool) {
   62 	if name == "dobedobedo" {
   63 		return reflect.Value{}, false
   64 	}
   65 
   66 	return reflect.ValueOf(fmt.Sprint), true
   67 }
   68 
   69 func TestApply(t *testing.T) {
   70 	t.Parallel()
   71 	c := qt.New(t)
   72 	d := &deps.Deps{Language: langs.NewDefaultLanguage(config.New())}
   73 	d.SetTmpl(new(templateFinder))
   74 	ns := New(d)
   75 
   76 	strings := []any{"a\n", "b\n"}
   77 
   78 	ctx := context.Background()
   79 
   80 	result, err := ns.Apply(ctx, strings, "print", "a", "b", "c")
   81 	c.Assert(err, qt.IsNil)
   82 	c.Assert(result, qt.DeepEquals, []any{"abc", "abc"})
   83 
   84 	_, err = ns.Apply(ctx, strings, "apply", ".")
   85 	c.Assert(err, qt.Not(qt.IsNil))
   86 
   87 	var nilErr *error
   88 	_, err = ns.Apply(ctx, nilErr, "chomp", ".")
   89 	c.Assert(err, qt.Not(qt.IsNil))
   90 
   91 	_, err = ns.Apply(ctx, strings, "dobedobedo", ".")
   92 	c.Assert(err, qt.Not(qt.IsNil))
   93 
   94 	_, err = ns.Apply(ctx, strings, "foo.Chomp", "c\n")
   95 	if err == nil {
   96 		t.Errorf("apply with unknown func should fail")
   97 	}
   98 }