@@ -21,9 +21,16 @@ import (
2121 "testing"
2222
2323 "github.com/arduino/arduino-cli/internal/integrationtest"
24+ "github.com/arduino/go-paths-helper"
2425 "github.com/stretchr/testify/require"
2526)
2627
28+ // returns a reader that tells the mocked monitor to exit
29+ func quitMonitor () io.Reader {
30+ // tells mocked monitor to exit
31+ return bytes .NewBufferString ("QUIT\n " )
32+ }
33+
2734func TestMonitorConfigFlags (t * testing.T ) {
2835 env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
2936 defer env .CleanUp ()
@@ -38,14 +45,8 @@ func TestMonitorConfigFlags(t *testing.T) {
3845 cli .InstallMockedSerialDiscovery (t )
3946 cli .InstallMockedSerialMonitor (t )
4047
41- // Test monitor command
42- quit := func () io.Reader {
43- // tells mocked monitor to exit
44- return bytes .NewBufferString ("QUIT\n " )
45- }
46-
4748 t .Run ("NoArgs" , func (t * testing.T ) {
48- stdout , _ , err := cli .RunWithCustomInput (quit (), "monitor" , "-p" , "/dev/ttyARG" , "--raw" )
49+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARG" , "--raw" )
4950 require .NoError (t , err )
5051 require .Contains (t , string (stdout ), "Opened port: /dev/ttyARG" )
5152 require .Contains (t , string (stdout ), "Configuration baudrate = 9600" )
@@ -54,7 +55,7 @@ func TestMonitorConfigFlags(t *testing.T) {
5455 })
5556
5657 t .Run ("BaudConfig" , func (t * testing.T ) {
57- stdout , _ , err := cli .RunWithCustomInput (quit (), "monitor" , "-p" , "/dev/ttyARG" , "-c" , "baudrate=115200" , "--raw" )
58+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARG" , "-c" , "baudrate=115200" , "--raw" )
5859 require .NoError (t , err )
5960 require .Contains (t , string (stdout ), "Opened port: /dev/ttyARG" )
6061 require .Contains (t , string (stdout ), "Configuration baudrate = 115200" )
@@ -64,7 +65,7 @@ func TestMonitorConfigFlags(t *testing.T) {
6465 })
6566
6667 t .Run ("BaudAndParitfyConfig" , func (t * testing.T ) {
67- stdout , _ , err := cli .RunWithCustomInput (quit (), "monitor" , "-p" , "/dev/ttyARG" ,
68+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARG" ,
6869 "-c" , "baudrate=115200" , "-c" , "parity=even" , "--raw" )
6970 require .NoError (t , err )
7071 require .Contains (t , string (stdout ), "Opened port: /dev/ttyARG" )
@@ -75,16 +76,181 @@ func TestMonitorConfigFlags(t *testing.T) {
7576 })
7677
7778 t .Run ("InvalidConfigKey" , func (t * testing.T ) {
78- _ , stderr , err := cli .RunWithCustomInput (quit (), "monitor" , "-p" , "/dev/ttyARG" ,
79+ _ , stderr , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARG" ,
7980 "-c" , "baud=115200" , "-c" , "parity=even" , "--raw" )
8081 require .Error (t , err )
8182 require .Contains (t , string (stderr ), "invalid port configuration: baud=115200" )
8283 })
8384
8485 t .Run ("InvalidConfigValue" , func (t * testing.T ) {
85- _ , stderr , err := cli .RunWithCustomInput (quit (), "monitor" , "-p" , "/dev/ttyARG" ,
86+ _ , stderr , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARG" ,
8687 "-c" , "parity=9600" , "--raw" )
8788 require .Error (t , err )
8889 require .Contains (t , string (stderr ), "invalid port configuration value for parity: 9600" )
8990 })
9091}
92+
93+ func TestMonitorFlags (t * testing.T ) {
94+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
95+ defer env .CleanUp ()
96+
97+ // Install AVR platform
98+ _ , _ , err := cli .Run ("core" , "install" , "arduino:avr@1.8.6" )
99+ require .NoError (t , err )
100+
101+ // Patch the Yun board to require special RTS/DTR serial configuration
102+ f , err := cli .DataDir ().Join ("packages" , "arduino" , "hardware" , "avr" , "1.8.6" , "boards.txt" ).Append ()
103+ require .NoError (t , err )
104+ _ , err = f .WriteString (`
105+ uno.serial.disableRTS=true
106+ uno.serial.disableDTR=false
107+ yun.serial.disableRTS=true
108+ yun.serial.disableDTR=true
109+ ` )
110+ require .NoError (t , err )
111+ require .NoError (t , f .Close ())
112+
113+ // Install mocked discovery and monitor for testing
114+ cli .InstallMockedSerialDiscovery (t )
115+ cli .InstallMockedSerialMonitor (t )
116+
117+ // Create test sketches
118+ getSketchPath := func (sketch string ) string {
119+ p , err := paths .New ("testdata" , sketch ).Abs ()
120+ require .NoError (t , err )
121+ require .True (t , p .IsDir ())
122+ return p .String ()
123+ }
124+ sketch := getSketchPath ("SketchWithNoProfiles" )
125+ sketchWithPort := getSketchPath ("SketchWithDefaultPort" )
126+ sketchWithFQBN := getSketchPath ("SketchWithDefaultFQBN" )
127+ sketchWithPortAndFQBN := getSketchPath ("SketchWithDefaultPortAndFQBN" )
128+
129+ t .Run ("NoFlags" , func (t * testing.T ) {
130+ t .Run ("NoDefaultPortNoDefaultFQBN" , func (t * testing.T ) {
131+ _ , stderr , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "--raw" , sketch )
132+ require .Error (t , err )
133+ require .Contains (t , string (stderr ), "No monitor available for the port protocol default" )
134+ })
135+
136+ t .Run ("WithDefaultPort" , func (t * testing.T ) {
137+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "--raw" , sketchWithPort )
138+ require .NoError (t , err )
139+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyDEF" )
140+ require .Contains (t , string (stdout ), "Configuration rts = on" )
141+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
142+ })
143+
144+ t .Run ("WithDefaultFQBN" , func (t * testing.T ) {
145+ _ , stderr , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "--raw" , sketchWithFQBN )
146+ require .Error (t , err )
147+ require .Contains (t , string (stderr ), "No monitor available for the port protocol default" )
148+ })
149+
150+ t .Run ("WithDefaultPortAndQBN" , func (t * testing.T ) {
151+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "--raw" , sketchWithPortAndFQBN )
152+ require .NoError (t , err )
153+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyDEF" )
154+ require .Contains (t , string (stdout ), "Configuration rts = off" )
155+ require .Contains (t , string (stdout ), "Configuration dtr = off" )
156+ })
157+ })
158+
159+ t .Run ("WithPortFlag" , func (t * testing.T ) {
160+ t .Run ("NoDefaultPortNoDefaultFQBN" , func (t * testing.T ) {
161+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARGS" , "--raw" , sketch )
162+ require .NoError (t , err )
163+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyARGS" )
164+ require .Contains (t , string (stdout ), "Configuration rts = on" )
165+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
166+ })
167+
168+ t .Run ("WithDefaultPort" , func (t * testing.T ) {
169+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARGS" , "--raw" , sketchWithPort )
170+ require .NoError (t , err )
171+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyARGS" )
172+ require .Contains (t , string (stdout ), "Configuration rts = on" )
173+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
174+ })
175+
176+ t .Run ("WithDefaultFQBN" , func (t * testing.T ) {
177+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARGS" , "--raw" , sketchWithFQBN )
178+ require .NoError (t , err )
179+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyARGS" )
180+ require .Contains (t , string (stdout ), "Configuration rts = off" )
181+ require .Contains (t , string (stdout ), "Configuration dtr = off" )
182+ })
183+
184+ t .Run ("WithDefaultPortAndQBN" , func (t * testing.T ) {
185+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARGS" , "--raw" , sketchWithPortAndFQBN )
186+ require .NoError (t , err )
187+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyARGS" )
188+ require .Contains (t , string (stdout ), "Configuration rts = off" )
189+ require .Contains (t , string (stdout ), "Configuration dtr = off" )
190+ })
191+ })
192+
193+ t .Run ("WithFQBNFlag" , func (t * testing.T ) {
194+ t .Run ("NoDefaultPortNoDefaultFQBN" , func (t * testing.T ) {
195+ _ , stderr , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-b" , "arduino:avr:uno" , "--raw" , sketch )
196+ require .Error (t , err )
197+ require .Contains (t , string (stderr ), "No monitor available for the port protocol default" )
198+ })
199+
200+ t .Run ("WithDefaultPort" , func (t * testing.T ) {
201+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-b" , "arduino:avr:uno" , "--raw" , sketchWithPort )
202+ require .NoError (t , err )
203+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyDEF" )
204+ require .Contains (t , string (stdout ), "Configuration rts = off" )
205+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
206+ })
207+
208+ t .Run ("WithDefaultFQBN" , func (t * testing.T ) {
209+ _ , stderr , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-b" , "arduino:avr:uno" , "--raw" , sketchWithFQBN )
210+ require .Error (t , err )
211+ require .Contains (t , string (stderr ), "No monitor available for the port protocol default" )
212+ })
213+
214+ t .Run ("WithDefaultPortAndQBN" , func (t * testing.T ) {
215+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-b" , "arduino:avr:uno" , "--raw" , sketchWithPortAndFQBN )
216+ require .NoError (t , err )
217+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyDEF" )
218+ require .Contains (t , string (stdout ), "Configuration rts = off" )
219+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
220+ })
221+ })
222+
223+ t .Run ("WithPortAndFQBNFlags" , func (t * testing.T ) {
224+ t .Run ("NoDefaultPortNoDefaultFQBN" , func (t * testing.T ) {
225+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARGS" , "-b" , "arduino:avr:uno" , "--raw" , sketch )
226+ require .NoError (t , err )
227+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyARGS" )
228+ require .Contains (t , string (stdout ), "Configuration rts = off" )
229+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
230+ })
231+
232+ t .Run ("WithDefaultPort" , func (t * testing.T ) {
233+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARGS" , "-b" , "arduino:avr:uno" , "--raw" , sketchWithPort )
234+ require .NoError (t , err )
235+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyARGS" )
236+ require .Contains (t , string (stdout ), "Configuration rts = off" )
237+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
238+ })
239+
240+ t .Run ("WithDefaultFQBN" , func (t * testing.T ) {
241+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARGS" , "-b" , "arduino:avr:uno" , "--raw" , sketchWithFQBN )
242+ require .NoError (t , err )
243+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyARGS" )
244+ require .Contains (t , string (stdout ), "Configuration rts = off" )
245+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
246+ })
247+
248+ t .Run ("WithDefaultPortAndQBN" , func (t * testing.T ) {
249+ stdout , _ , err := cli .RunWithCustomInput (quitMonitor (), "monitor" , "-p" , "/dev/ttyARGS" , "-b" , "arduino:avr:uno" , "--raw" , sketchWithPortAndFQBN )
250+ require .NoError (t , err )
251+ require .Contains (t , string (stdout ), "Opened port: /dev/ttyARGS" )
252+ require .Contains (t , string (stdout ), "Configuration rts = off" )
253+ require .Contains (t , string (stdout ), "Configuration dtr = on" )
254+ })
255+ })
256+ }
0 commit comments