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 }