github.com/msaf1980/nfpmc@v0.1.6/cmd/nfpmc/packager_test.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  	"runtime"
     7  	"testing"
     8  
     9  	_ "github.com/goreleaser/nfpm/v2/apk"
    10  	_ "github.com/goreleaser/nfpm/v2/deb"
    11  	"github.com/goreleaser/nfpm/v2/files"
    12  	_ "github.com/goreleaser/nfpm/v2/rpm"
    13  
    14  	"github.com/stretchr/testify/assert"
    15  )
    16  
    17  // func Test_rewriteFileName(t *testing.T) {
    18  // 	tests := []struct {
    19  // 		name     string
    20  // 		filesMap StringMap
    21  // 		want     string
    22  // 		wantErr  bool
    23  // 	}{
    24  // 		{
    25  // 			name:     "out/usr/bin/test",
    26  // 			filesMap: StringMap{"out/": "/", "conf/": "/etc/", "doc/": "/usr/share/test"},
    27  // 			want:     "/usr/bin/test",
    28  // 			wantErr:  false,
    29  // 		},
    30  // 		{
    31  // 			name:     "conf/test.conf",
    32  // 			filesMap: StringMap{"out/": "/", "conf/": "/etc/", "doc/": "/usr/share/test"},
    33  // 			want:     "/etc/test.conf",
    34  // 			wantErr:  false,
    35  // 		},
    36  // 		{
    37  // 			name:     "none/usr/bin/test",
    38  // 			filesMap: StringMap{"out/": "/", "conf/": "/etc/", "doc/": "/usr/share/test"},
    39  // 			want:     "",
    40  // 			wantErr:  true,
    41  // 		},
    42  // 	}
    43  // 	for _, tt := range tests {
    44  // 		t.Run(tt.name, func(t *testing.T) {
    45  // 			got, err := rewriteFileName(tt.name, tt.filesMap)
    46  // 			if (err != nil) != tt.wantErr {
    47  // 				t.Errorf("rewriteFileName(%s) error = %v, wantErr %v", tt.name, err, tt.wantErr)
    48  // 				return
    49  // 			}
    50  // 			if got != tt.want {
    51  // 				t.Errorf("rewriteFileName(%s) = %v, want %v", tt.name, got, tt.want)
    52  // 			}
    53  // 		})
    54  // 	}
    55  // }
    56  
    57  func TestPackage(t *testing.T) {
    58  	// /d, _ := diff.NewDiffer(diff.TagName("json"))
    59  
    60  	_, filename, _, _ := runtime.Caller(0)
    61  	testDir := path.Join(path.Dir(path.Dir(path.Dir(filename))), "test")
    62  
    63  	var p Packager
    64  
    65  	err := os.Chdir(testDir)
    66  	assert.NoErrorf(t, err, "Chdir")
    67  
    68  	p.Info.Name = "test"
    69  	p.Info.Version = "1.0.0"
    70  	p.Info.Release = "1"
    71  
    72  	err = p.Init()
    73  	assert.NoErrorf(t, err, "Package.Init")
    74  
    75  	// Init files list
    76  	verifyContent := files.Contents{
    77  		&files.Content{Source: "out/test-example", Destination: "/usr/bin/test-example", Type: defaultStr},
    78  		// &files.Content{Source: "conf/test-example.conf", Destination: "/etc/test-example.conf", Type: defaultStr},
    79  		// &files.Content{Source: "docs/test-example.txt", Destination: "/usr/share/test/test-example.txt", Type: defaultStr},
    80  		&files.Content{Source: "conf/test-example.conf", Destination: "/etc/test-example.conf", Type: defaultStr},
    81  		&files.Content{Source: "docs/test-example.txt", Destination: "/usr/share/test/test-example.txt", Type: defaultStr},
    82  	}
    83  	err = p.AddFiles([]string{"out/test-example=/usr/bin/test-example", "conf/=/etc/", "docs/=/usr/share/test/"})
    84  	assert.NoErrorf(t, err, "Package.AddFiles")
    85  	assert.Equalf(t, verifyContent, p.Info.Contents, "Package.AddFiles Contents mismatch")
    86  
    87  	// Add symlink
    88  	verifyContent = files.Contents{
    89  		&files.Content{Source: "out/test-example", Destination: "/usr/bin/test-example", Type: defaultStr},
    90  		// &files.Content{Source: "conf/test-example.conf", Destination: "/etc/test-example.conf", Type: defaultStr},
    91  		// &files.Content{Source: "docs/test-example.txt", Destination: "/usr/share/test/test-example.txt", Type: defaultStr},
    92  		&files.Content{Source: "conf/test-example.conf", Destination: "/etc/test-example.conf", Type: defaultStr},
    93  		&files.Content{Source: "docs/test-example.txt", Destination: "/usr/share/test/test-example.txt", Type: defaultStr},
    94  		&files.Content{Source: "/usr/bin/test-example", Destination: "/usr/bin/test-link", Type: symlinkStr},
    95  	}
    96  	err = p.AddSymlinks([]string{"/usr/bin/test-example=/usr/bin/test-link"})
    97  	assert.NoErrorf(t, err, "Package.AddSymlinks")
    98  	assert.Equalf(t, verifyContent, p.Info.Contents, "Package.AddSymlinks Contents mismatch")
    99  
   100  	// Add duplicate symlink, must failed
   101  	err = p.AddSymlinks([]string{"/usr/bin/test-noexist=/usr/bin/test-link"})
   102  	if err == nil {
   103  		t.Errorf("Package.AddSymlinks success, but already exist\n")
   104  	}
   105  
   106  	// Set config
   107  	verifyContent = files.Contents{
   108  		&files.Content{Source: "out/test-example", Destination: "/usr/bin/test-example", Type: defaultStr},
   109  		// &files.Content{Source: "conf/test-example.conf", Destination: "/etc/test-example.conf", Type: configStr},
   110  		// &files.Content{Source: "docs/test-example.txt", Destination: "/usr/share/test/test-example.txt", Type: defaultStr},
   111  		&files.Content{Source: "conf/test-example.conf", Destination: "/etc/test-example.conf", Type: configStr},
   112  		&files.Content{Source: "docs/test-example.txt", Destination: "/usr/share/test/test-example.txt", Type: defaultStr},
   113  		&files.Content{Source: "/usr/bin/test-example", Destination: "/usr/bin/test-link", Type: symlinkStr},
   114  	}
   115  	err = p.SetConfigFiles([]string{"/etc"})
   116  	assert.NoErrorf(t, err, "Package.SetConfigFiles")
   117  	assert.Equalf(t, verifyContent, p.Info.Contents, "Package.SetConfigFiles Contents mismatch")
   118  
   119  	// Set doc for config, must failed
   120  	err = p.SetDocFiles([]string{"/etc/test-example.conf"})
   121  	assert.NoErrorf(t, err, "Package.SetDocsFiles success, but already exist")
   122  
   123  	// Set config
   124  	verifyContent = files.Contents{
   125  		&files.Content{Source: "out/test-example", Destination: "/usr/bin/test-example", Type: defaultStr},
   126  		// &files.Content{Source: "conf/test-example.conf", Destination: "/etc/test-example.conf", Type: configStr},
   127  		// &files.Content{Source: "docs/test-example.txt", Destination: "/usr/share/test/test-example.txt", Type: docStr},
   128  		&files.Content{Source: "conf/test-example.conf", Destination: "/etc/test-example.conf", Type: configStr},
   129  		&files.Content{Source: "docs/test-example.txt", Destination: "/usr/share/test/test-example.txt", Type: docStr},
   130  		&files.Content{Source: "/usr/bin/test-example", Destination: "/usr/bin/test-link", Type: symlinkStr},
   131  	}
   132  	err = p.SetDocFiles([]string{"/usr/share/test/test-example.txt"})
   133  	assert.NoErrorf(t, err, "Package.SetDocFiles")
   134  
   135  	assert.Equalf(t, verifyContent, p.Info.Contents, "Package.SetDocFiles Contents mismatch")
   136  }