Skip to content

Commit 5036697

Browse files
[skip-changelog] Migrate tests from test_completion.py to completion_test.go (#1844)
* Migrated TestCompletionNoArgs from test_completion.py to completion_test.go * Migrated TestCompletionBash from test_completion.py to completion_test.go * Migrated TestCompletionZsh from test_completion.py to completion_test.go * Migrated TestCompletionFish from test_completion.py to completion_test.go * Migrated TestCompletionPowershell from test_completion.py to completion_test.go * Migrated TestCompletionBashNoDesc from test_completion.py to completion_test.go * Migrated TestCompletionZshNoDesc from test_completion.py to completion_test.go * Migrated TestCompletionFishNoDesc from test_completion.py to completion_test.go * Migrated TestCompletionPowershellNoDesc from test_completion.py to completion_test.go * Migrated TestStaticCompletions from test_completion.py to completion_test.go * Migrated TestConfigCompletion from test_completion.py to completion_test.go * Migrated TestLibCompletion from test_completion.py to completion_test.go * Migrated TestCoreCompletion to completion_test.go and deleted test_completion.py
1 parent fd63b21 commit 5036697

File tree

2 files changed

+237
-201
lines changed

2 files changed

+237
-201
lines changed
+237
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
// This file is part of arduino-cli.
2+
//
3+
// Copyright 2022 ARDUINO SA (http://www.arduino.cc/)
4+
//
5+
// This software is released under the GNU General Public License version 3,
6+
// which covers the main part of arduino-cli.
7+
// The terms of this license can be found at:
8+
// https://www.gnu.org/licenses/gpl-3.0.en.html
9+
//
10+
// You can be released from the requirements of the above licenses by purchasing
11+
// a commercial license. Buying such a license is mandatory if you want to
12+
// modify or otherwise use the software for commercial activities involving the
13+
// Arduino software without disclosing the source code of your own applications.
14+
// To purchase a commercial license, send an email to [email protected].
15+
16+
package completion_test
17+
18+
import (
19+
"testing"
20+
21+
"github.com/arduino/arduino-cli/internal/integrationtest"
22+
"github.com/stretchr/testify/require"
23+
)
24+
25+
// test if the completion command behaves correctly
26+
func TestCompletionNoArgs(t *testing.T) {
27+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
28+
defer env.CleanUp()
29+
30+
stdout, stderr, err := cli.Run("completion")
31+
require.Error(t, err)
32+
require.Contains(t, string(stderr), "Error: accepts 1 arg(s), received 0")
33+
require.Empty(t, stdout)
34+
}
35+
36+
func TestCompletionBash(t *testing.T) {
37+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
38+
defer env.CleanUp()
39+
40+
stdout, stderr, err := cli.Run("completion", "bash")
41+
require.NoError(t, err)
42+
require.Empty(t, stderr)
43+
require.Contains(t, string(stdout), "# bash completion V2 for arduino-cli")
44+
require.Contains(t, string(stdout), "__start_arduino-cli()")
45+
}
46+
47+
func TestCompletionZsh(t *testing.T) {
48+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
49+
defer env.CleanUp()
50+
51+
stdout, stderr, err := cli.Run("completion", "zsh")
52+
require.NoError(t, err)
53+
require.Empty(t, stderr)
54+
require.Contains(t, string(stdout), "#compdef _arduino-cli arduino-cli")
55+
require.Contains(t, string(stdout), "_arduino-cli()")
56+
}
57+
58+
func TestCompletionFish(t *testing.T) {
59+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
60+
defer env.CleanUp()
61+
62+
stdout, stderr, err := cli.Run("completion", "fish")
63+
require.NoError(t, err)
64+
require.Empty(t, stderr)
65+
require.Contains(t, string(stdout), "# fish completion for arduino-cli")
66+
require.Contains(t, string(stdout), "function __arduino_cli_perform_completion")
67+
}
68+
69+
func TestCompletionPowershell(t *testing.T) {
70+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
71+
defer env.CleanUp()
72+
73+
stdout, stderr, err := cli.Run("completion", "powershell")
74+
require.NoError(t, err)
75+
require.Empty(t, stderr)
76+
require.Contains(t, string(stdout), "# powershell completion for arduino-cli")
77+
require.Contains(t, string(stdout), "Register-ArgumentCompleter -CommandName 'arduino-cli' -ScriptBlock")
78+
}
79+
80+
func TestCompletionBashNoDesc(t *testing.T) {
81+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
82+
defer env.CleanUp()
83+
84+
stdout, stderr, err := cli.Run("completion", "bash", "--no-descriptions")
85+
require.NoError(t, err)
86+
require.Empty(t, stderr)
87+
require.Contains(t, string(stdout), "# bash completion V2 for arduino-cli")
88+
require.Contains(t, string(stdout), "__start_arduino-cli()")
89+
require.Contains(t, string(stdout), "__completeNoDesc")
90+
}
91+
92+
func TestCompletionZshNoDesc(t *testing.T) {
93+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
94+
defer env.CleanUp()
95+
96+
stdout, stderr, err := cli.Run("completion", "zsh", "--no-descriptions")
97+
require.NoError(t, err)
98+
require.Empty(t, stderr)
99+
require.Contains(t, string(stdout), "#compdef _arduino-cli arduino-cli")
100+
require.Contains(t, string(stdout), "_arduino-cli()")
101+
require.Contains(t, string(stdout), "__completeNoDesc")
102+
}
103+
104+
func TestCompletionFishNoDesc(t *testing.T) {
105+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
106+
defer env.CleanUp()
107+
108+
stdout, stderr, err := cli.Run("completion", "fish", "--no-descriptions")
109+
require.NoError(t, err)
110+
require.Empty(t, stderr)
111+
require.Contains(t, string(stdout), "# fish completion for arduino-cli")
112+
require.Contains(t, string(stdout), "function __arduino_cli_perform_completion")
113+
require.Contains(t, string(stdout), "__completeNoDesc")
114+
}
115+
116+
func TestCompletionPowershellNoDesc(t *testing.T) {
117+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
118+
defer env.CleanUp()
119+
120+
stdout, stderr, err := cli.Run("completion", "powershell", "--no-descriptions")
121+
require.Error(t, err)
122+
require.Empty(t, stdout)
123+
require.Contains(t, string(stderr), "Error: command description is not supported by powershell")
124+
}
125+
126+
// test if the completion suggestions returned are meaningful
127+
// we use the __complete hidden command
128+
// https://github.com/spf13/cobra/blob/master/shell_completions.md#debugging
129+
130+
// test static completions
131+
func TestStaticCompletions(t *testing.T) {
132+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
133+
defer env.CleanUp()
134+
135+
stdout, _, _ := cli.Run("__complete", "--format", "")
136+
require.Contains(t, string(stdout), "json")
137+
138+
stdout, _, _ = cli.Run("__complete", "--log-format", "")
139+
require.Contains(t, string(stdout), "json")
140+
141+
stdout, _, _ = cli.Run("__complete", "--log-level", "")
142+
require.Contains(t, string(stdout), "trace")
143+
}
144+
145+
// here we test if the completions coming from the core are working
146+
func TestConfigCompletion(t *testing.T) {
147+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
148+
defer env.CleanUp()
149+
150+
stdout, _, _ := cli.Run("__complete", "config", "add", "")
151+
require.Contains(t, string(stdout), "board_manager.additional_urls")
152+
stdout, _, _ = cli.Run("__complete", "config", "remove", "")
153+
require.Contains(t, string(stdout), "board_manager.additional_urls")
154+
stdout, _, _ = cli.Run("__complete", "config", "delete", "")
155+
require.Contains(t, string(stdout), "board_manager.additional_urls")
156+
stdout, _, _ = cli.Run("__complete", "config", "set", "")
157+
require.Contains(t, string(stdout), "board_manager.additional_urls")
158+
}
159+
160+
// here we test if the completions coming from the libs are working
161+
func TestLibCompletion(t *testing.T) {
162+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
163+
defer env.CleanUp()
164+
165+
_, _, err := cli.Run("lib", "update-index")
166+
require.NoError(t, err)
167+
stdout, _, _ := cli.Run("__complete", "lib", "install", "")
168+
require.Contains(t, string(stdout), "WiFi101")
169+
stdout, _, _ = cli.Run("__complete", "lib", "download", "")
170+
require.Contains(t, string(stdout), "WiFi101")
171+
stdout, _, _ = cli.Run("__complete", "lib", "uninstall", "")
172+
require.NotContains(t, string(stdout), "WiFi101") // not yet installed
173+
174+
_, _, err = cli.Run("lib", "install", "Wifi101")
175+
require.NoError(t, err)
176+
stdout, _, _ = cli.Run("__complete", "lib", "uninstall", "")
177+
require.Contains(t, string(stdout), "WiFi101")
178+
stdout, _, _ = cli.Run("__complete", "lib", "examples", "")
179+
require.Contains(t, string(stdout), "WiFi101")
180+
stdout, _, _ = cli.Run("__complete", "lib", "deps", "")
181+
require.Contains(t, string(stdout), "WiFi101")
182+
}
183+
184+
// here we test if the completions coming from the core are working
185+
func TestCoreCompletion(t *testing.T) {
186+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
187+
defer env.CleanUp()
188+
189+
_, _, err := cli.Run("core", "update-index")
190+
require.NoError(t, err)
191+
stdout, _, _ := cli.Run("__complete", "core", "install", "")
192+
require.Contains(t, string(stdout), "arduino:avr")
193+
stdout, _, _ = cli.Run("__complete", "core", "download", "")
194+
require.Contains(t, string(stdout), "arduino:avr")
195+
stdout, _, _ = cli.Run("__complete", "core", "uninstall", "")
196+
require.NotContains(t, string(stdout), "arduino:avr")
197+
198+
// we install a core because the provided completions comes from it
199+
_, _, err = cli.Run("core", "install", "arduino:[email protected]")
200+
require.NoError(t, err)
201+
202+
stdout, _, _ = cli.Run("__complete", "core", "uninstall", "")
203+
require.Contains(t, string(stdout), "arduino:avr")
204+
205+
stdout, _, _ = cli.Run("__complete", "board", "details", "-b", "")
206+
require.Contains(t, string(stdout), "arduino:avr:uno")
207+
stdout, _, _ = cli.Run("__complete", "burn-bootloader", "-b", "")
208+
require.Contains(t, string(stdout), "arduino:avr:uno")
209+
stdout, _, _ = cli.Run("__complete", "compile", "-b", "")
210+
require.Contains(t, string(stdout), "arduino:avr:uno")
211+
stdout, _, _ = cli.Run("__complete", "debug", "-b", "")
212+
require.Contains(t, string(stdout), "arduino:avr:uno")
213+
stdout, _, _ = cli.Run("__complete", "lib", "examples", "-b", "")
214+
require.Contains(t, string(stdout), "arduino:avr:uno")
215+
stdout, _, _ = cli.Run("__complete", "upload", "-b", "")
216+
require.Contains(t, string(stdout), "arduino:avr:uno")
217+
stdout, _, _ = cli.Run("__complete", "monitor", "-b", "")
218+
require.Contains(t, string(stdout), "arduino:avr:uno")
219+
stdout, _, _ = cli.Run("__complete", "burn-bootloader", "-l", "")
220+
require.Contains(t, string(stdout), "network")
221+
stdout, _, _ = cli.Run("__complete", "compile", "-l", "")
222+
require.Contains(t, string(stdout), "network")
223+
stdout, _, _ = cli.Run("__complete", "debug", "-l", "")
224+
require.Contains(t, string(stdout), "network")
225+
stdout, _, _ = cli.Run("__complete", "upload", "-l", "")
226+
require.Contains(t, string(stdout), "network")
227+
stdout, _, _ = cli.Run("__complete", "monitor", "-l", "")
228+
require.Contains(t, string(stdout), "network")
229+
stdout, _, _ = cli.Run("__complete", "burn-bootloader", "-P", "")
230+
require.Contains(t, string(stdout), "atmel_ice")
231+
stdout, _, _ = cli.Run("__complete", "compile", "-P", "")
232+
require.Contains(t, string(stdout), "atmel_ice")
233+
stdout, _, _ = cli.Run("__complete", "debug", "-P", "")
234+
require.Contains(t, string(stdout), "atmel_ice")
235+
stdout, _, _ = cli.Run("__complete", "upload", "-P", "")
236+
require.Contains(t, string(stdout), "atmel_ice")
237+
}

0 commit comments

Comments
 (0)