@@ -15,7 +15,7 @@ import (
1515 "github.com/google/go-cmp/cmp"
1616)
1717
18- func TestPluginPackage (t * testing.T ) {
18+ func TestPluginPackage_Source (t * testing.T ) {
1919 _ , filename , _ , ok := runtime .Caller (0 )
2020 if ! ok {
2121 t .Fatal ("failed to get current file path" )
@@ -30,7 +30,6 @@ func TestPluginPackage(t *testing.T) {
3030 plugin .WithBuildTargets ([]plugin.BuildTarget {
3131 {OS : plugin .GoOSLinux , Arch : plugin .GoArchAmd64 },
3232 {OS : plugin .GoOSWindows , Arch : plugin .GoArchAmd64 },
33- {OS : plugin .GoOSDarwin , Arch : plugin .GoArchAmd64 },
3433 }),
3534 )
3635 msg := `Test message
@@ -54,7 +53,7 @@ with multiple lines and **markdown**`
5453 srv := Plugin (p )
5554 cmd := srv .newCmdPluginRoot ()
5655 distDir := t .TempDir ()
57- cmd .SetArgs ([]string {"package" , "--dist-dir" , distDir , "-m" , tc .message , simplePluginPath , packageVersion })
56+ cmd .SetArgs ([]string {"package" , "--dist-dir" , distDir , "-m" , tc .message , "source" , packageVersion , simplePluginPath })
5857 err := cmd .Execute ()
5958 if tc .wantErr && err == nil {
6059 t .Fatalf ("expected error, got nil" )
@@ -68,7 +67,6 @@ with multiple lines and **markdown**`
6867 expect := []string {
6968 "docs" ,
7069 "package.json" ,
71- "plugin-testPlugin-v1.2.3-darwin-amd64.zip" ,
7270 "plugin-testPlugin-v1.2.3-linux-amd64.zip" ,
7371 "plugin-testPlugin-v1.2.3-windows-amd64.zip" ,
7472 "tables.json" ,
@@ -80,13 +78,13 @@ with multiple lines and **markdown**`
8078 expectPackage := PackageJSON {
8179 SchemaVersion : 1 ,
8280 Name : "testPlugin" ,
81+ Type : "source" ,
8382 Message : msg ,
8483 Version : "v1.2.3" ,
8584 Protocols : []int {3 },
8685 SupportedTargets : []TargetBuild {
8786 {OS : plugin .GoOSLinux , Arch : plugin .GoArchAmd64 , Path : "plugin-testPlugin-v1.2.3-linux-amd64.zip" , Checksum : "sha256:" + sha256sum (filepath .Join (distDir , "plugin-testPlugin-v1.2.3-linux-amd64.zip" ))},
8887 {OS : plugin .GoOSWindows , Arch : plugin .GoArchAmd64 , Path : "plugin-testPlugin-v1.2.3-windows-amd64.zip" , Checksum : "sha256:" + sha256sum (filepath .Join (distDir , "plugin-testPlugin-v1.2.3-windows-amd64.zip" ))},
89- {OS : plugin .GoOSDarwin , Arch : plugin .GoArchAmd64 , Path : "plugin-testPlugin-v1.2.3-darwin-amd64.zip" , Checksum : "sha256:" + sha256sum (filepath .Join (distDir , "plugin-testPlugin-v1.2.3-darwin-amd64.zip" ))},
9088 },
9189 PackageType : plugin .PackageTypeNative ,
9290 }
@@ -102,6 +100,89 @@ with multiple lines and **markdown**`
102100 }
103101}
104102
103+ func TestPluginPackage_Destination (t * testing.T ) {
104+ _ , filename , _ , ok := runtime .Caller (0 )
105+ if ! ok {
106+ t .Fatal ("failed to get current file path" )
107+ }
108+ dir := filepath .Dir (filepath .Dir (filename ))
109+ simplePluginPath := filepath .Join (dir , "examples/simple_plugin" )
110+ packageVersion := "v1.2.3"
111+ p := plugin .NewPlugin (
112+ "testPlugin" ,
113+ "development" ,
114+ memdb .NewMemDBClient ,
115+ plugin .WithBuildTargets ([]plugin.BuildTarget {
116+ {OS : plugin .GoOSWindows , Arch : plugin .GoArchAmd64 },
117+ {OS : plugin .GoOSDarwin , Arch : plugin .GoArchAmd64 },
118+ }),
119+ )
120+ msg := `Test message
121+ with multiple lines and **markdown**`
122+ testCases := []struct {
123+ name string
124+ message string
125+ wantErr bool
126+ }{
127+ {
128+ name : "inline message" ,
129+ message : msg ,
130+ },
131+ {
132+ name : "message from file" ,
133+ message : "@testdata/message.txt" ,
134+ },
135+ }
136+ for _ , tc := range testCases {
137+ t .Run (tc .name , func (t * testing.T ) {
138+ srv := Plugin (p )
139+ cmd := srv .newCmdPluginRoot ()
140+ distDir := t .TempDir ()
141+ cmd .SetArgs ([]string {"package" , "--dist-dir" , distDir , "-m" , tc .message , "destination" , packageVersion , simplePluginPath })
142+ err := cmd .Execute ()
143+ if tc .wantErr && err == nil {
144+ t .Fatalf ("expected error, got nil" )
145+ } else if err != nil {
146+ t .Fatalf ("unexpected error: %v" , err )
147+ }
148+ files , err := os .ReadDir (distDir )
149+ if err != nil {
150+ t .Fatal (err )
151+ }
152+ expect := []string {
153+ "docs" ,
154+ "package.json" ,
155+ "plugin-testPlugin-v1.2.3-darwin-amd64.zip" ,
156+ "plugin-testPlugin-v1.2.3-windows-amd64.zip" ,
157+ }
158+ if diff := cmp .Diff (expect , fileNames (files )); diff != "" {
159+ t .Fatalf ("unexpected files in dist directory (-want +got):\n %s" , diff )
160+ }
161+
162+ expectPackage := PackageJSON {
163+ SchemaVersion : 1 ,
164+ Name : "testPlugin" ,
165+ Type : "destination" ,
166+ Message : msg ,
167+ Version : "v1.2.3" ,
168+ Protocols : []int {3 },
169+ SupportedTargets : []TargetBuild {
170+ {OS : plugin .GoOSWindows , Arch : plugin .GoArchAmd64 , Path : "plugin-testPlugin-v1.2.3-windows-amd64.zip" , Checksum : "sha256:" + sha256sum (filepath .Join (distDir , "plugin-testPlugin-v1.2.3-windows-amd64.zip" ))},
171+ {OS : plugin .GoOSDarwin , Arch : plugin .GoArchAmd64 , Path : "plugin-testPlugin-v1.2.3-darwin-amd64.zip" , Checksum : "sha256:" + sha256sum (filepath .Join (distDir , "plugin-testPlugin-v1.2.3-darwin-amd64.zip" ))},
172+ },
173+ PackageType : plugin .PackageTypeNative ,
174+ }
175+ checkPackageJSONContents (t , filepath .Join (distDir , "package.json" ), expectPackage )
176+
177+ expectDocs := []string {
178+ "configuration.md" ,
179+ "overview.md" ,
180+ }
181+ checkDocs (t , filepath .Join (distDir , "docs" ), expectDocs )
182+ })
183+ }
184+ }
185+
105186func sha256sum (filename string ) string {
106187 f , err := os .Open (filename )
107188 if err != nil {
0 commit comments