1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
// Copyright (c) 2018-2020, Sylabs Inc. All rights reserved.
// This software is licensed under a 3-clause BSD license. Please consult the
// LICENSE.md file distributed with the sources of this project regarding your
// rights to use or distribute this software.
package progress
import (
"bytes"
"context"
"fmt"
"testing"
"github.com/sylabs/singularity/v4/pkg/sylog"
)
func TestProgressCallback(t *testing.T) {
const input = "Hello World!"
ctx := context.Background()
// Check the progress bar, or invisible copy-through, works at all sylog
// levels
levels := []int{
int(sylog.DebugLevel),
int(sylog.VerboseLevel),
int(sylog.InfoLevel),
int(sylog.WarnLevel),
int(sylog.ErrorLevel),
int(sylog.FatalLevel),
}
for _, l := range levels {
t.Run(fmt.Sprintf("level%d", l), func(t *testing.T) {
sylog.SetLevel(l, true)
cb := BarCallback(ctx)
src := bytes.NewBufferString(input)
dst := bytes.Buffer{}
err := cb(int64(len(input)), src, &dst)
if err != nil {
t.Errorf("Unexpected error from ProgressCallBack: %v", err)
}
output := dst.String()
if output != input {
t.Errorf("Output from callback '%s' != input '%s'", output, input)
}
})
}
}
|