github.com/falafeljan/pkger@v0.18.0/pkging/pkgtest/pkgtest.go (about)

     1  package pkgtest
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/markbates/pkger/here"
     9  	"github.com/markbates/pkger/pkging"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  type AllFn func(ref *Ref) (pkging.Pkger, error)
    14  
    15  func All(t *testing.T, fn AllFn) {
    16  	r := require.New(t)
    17  
    18  	type tf func(*testing.T, *Ref, pkging.Pkger)
    19  
    20  	tests := map[string]tf{
    21  		"Create":    CreateTest,
    22  		"Current":   CurrentTest,
    23  		"HTTP":      HTTPTest,
    24  		"Info":      InfoTest,
    25  		"MkdirAll":  MkdirAllTest,
    26  		"Open":      OpenTest,
    27  		"Remove":    RemoveTest,
    28  		"RemoveAll": RemoveAllTest,
    29  		"Stat":      StatTest,
    30  		"Walk":      WalkTest,
    31  	}
    32  
    33  	ref, err := NewRef()
    34  	r.NoError(err)
    35  	defer os.RemoveAll(ref.Dir)
    36  
    37  	pkg, err := fn(ref)
    38  	r.NoError(err)
    39  
    40  	for n, tt := range tests {
    41  		t.Run(fmt.Sprintf("%T/%s", pkg, n), func(st *testing.T) {
    42  			st.Parallel()
    43  
    44  			r := require.New(st)
    45  
    46  			ref, err := NewRef()
    47  			r.NoError(err)
    48  			defer os.RemoveAll(ref.Dir)
    49  
    50  			pkg, err := fn(ref)
    51  			r.NoError(err)
    52  
    53  			tt(st, ref, pkg)
    54  		})
    55  	}
    56  
    57  }
    58  
    59  func CmpFileInfo(t *testing.T, a os.FileInfo, b os.FileInfo) {
    60  	t.Helper()
    61  
    62  	r := require.New(t)
    63  	r.Equal(a.IsDir(), b.IsDir())
    64  	r.Equal(a.Name(), b.Name())
    65  	r.NotZero(b.ModTime())
    66  
    67  	if a.IsDir() {
    68  		r.True(b.Mode().IsDir(), b.Mode().String())
    69  		return
    70  	}
    71  
    72  	r.True(b.Mode().IsRegular(), b.Mode().String())
    73  }
    74  
    75  func cmpHereInfo(t *testing.T, a here.Info, b here.Info) {
    76  	t.Helper()
    77  
    78  	r := require.New(t)
    79  
    80  	r.NotZero(a)
    81  	r.NotZero(b)
    82  
    83  	r.Equal(a.ImportPath, b.ImportPath)
    84  	r.Equal(a.Name, b.Name)
    85  
    86  	am := a.Module
    87  	bm := b.Module
    88  
    89  	r.Equal(am.Path, bm.Path)
    90  	r.Equal(am.Main, bm.Main)
    91  	r.Equal(am.GoVersion, bm.GoVersion)
    92  }