Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 65354c4

Browse files
committed
Updated error messages and integration tests
1 parent ebb1e0d commit 65354c4

File tree

5 files changed

+92
-38
lines changed

5 files changed

+92
-38
lines changed

‎commands/cmderrors/cmderrors.go‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ func composeErrorMsg(msg string, cause error) string {
3131
if cause == nil {
3232
return msg
3333
}
34+
if msg == "" {
35+
return cause.Error()
36+
}
3437
return fmt.Sprintf("%v: %v", msg, cause)
3538
}
3639

‎commands/service_profile_lib_remove.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func (s *arduinoCoreServerImpl) ProfileLibRemove(ctx context.Context, req *rpc.P
5353
}
5454
removedLib, err := profile.RemoveLibrary(libToRemove)
5555
if err != nil {
56-
return nil, &cmderrors.InvalidArgumentError{Message: "failed to remove library", Cause: err}
56+
return nil, &cmderrors.InvalidArgumentError{Cause: err}
5757
}
5858

5959
err = projectFilePath.WriteFile([]byte(sk.Project.AsYaml()))

‎internal/arduino/sketch/profiles.go‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,9 @@ func (l *ProfileLibraryReference) String() string {
395395
if l.InstallDir != nil {
396396
return fmt.Sprintf("%s@dir:%s", l.Library, l.InstallDir)
397397
}
398+
if l.Version == nil {
399+
return l.Library
400+
}
398401
return fmt.Sprintf("%s@%s", l.Library, l.Version)
399402
}
400403

‎internal/cli/profile/lib.go‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,8 @@ func runLibRemoveCommand(ctx context.Context, args []string, srv rpc.ArduinoCore
165165
},
166166
})
167167
if err != nil {
168-
feedback.Fatal(i18n.Tr("Error removing %s from the profile %s: %v", lib.Name, profileArg.Get(), err), feedback.ErrGeneric)
168+
feedback.Fatal(fmt.Sprintf("%s: %v",
169+
i18n.Tr("Error removing library %[1]s from the profile", lib.Name), err), feedback.ErrGeneric)
169170
}
170171
feedback.PrintResult(libRemoveResult{
171172
Library: result.NewProfileLibraryReference_IndexLibraryResult(resp.GetLibrary().GetIndexLibrary()),

‎internal/integrationtest/profiles/profiles_test.go‎

Lines changed: 83 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -272,15 +272,9 @@ func TestProfileLib(t *testing.T) {
272272
_, _, err := cli.Run("core", "update-index")
273273
require.NoError(t, err)
274274

275-
_, _, err = cli.Run("sketch", "new", cli.SketchbookDir().Join("Simple").String())
276-
require.NoError(t, err)
277-
278275
_, _, err = cli.Run("core", "install", "arduino:avr")
279276
require.NoError(t, err)
280277

281-
_, _, err = cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "Uno", "-b", "arduino:avr:uno")
282-
require.NoError(t, err)
283-
284278
integrationtest.CLISubtests{
285279
{"AddLibToDefaultProfile", addLibToDefaultProfile},
286280
{"ChangeLibVersionDefaultProfile", changeLibVersionDefaultProfile},
@@ -291,43 +285,94 @@ func TestProfileLib(t *testing.T) {
291285
}
292286

293287
func addLibToDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
294-
_, _, err := cli.Run("profile", "lib", "add", "Modulino@0.5.0", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
288+
sk := cli.SketchbookDir().Join("addLibToDefaultProfile")
289+
_, _, err := cli.Run("sketch", "new", sk.String())
295290
require.NoError(t, err)
296-
fileContent, err := cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFile()
291+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno")
297292
require.NoError(t, err)
298-
require.Equal(t, "profiles:\n Uno:\n fqbn: arduino:avr:uno\n platforms:\n - platform: arduino:avr (1.8.6)\n libraries:\n - Modulino (0.5.0)\n\ndefault_profile: Uno\n", string(fileContent))
299-
}
300293

301-
func changeLibVersionDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
302-
fileContent, err := cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFile()
294+
out, _, err := cli.Run("profile", "lib", "add", "Modulino@0.5.0", "--dest-dir", sk.String(), "--json")
303295
require.NoError(t, err)
304-
require.Equal(t, "profiles:\n Uno:\n fqbn: arduino:avr:uno\n platforms:\n - platform: arduino:avr (1.8.6)\n libraries:\n - Modulino (0.5.0)\n\ndefault_profile: Uno\n", string(fileContent))
296+
requirejson.Parse(t, out).Query(".added_libraries").MustContain(`[{"name":"Modulino", "version":"0.5.0"}]`)
305297

306-
_, _, err =cli.Run("profile", "lib", "add", "Modulino@0.4.0", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
298+
fileContent, err :=sk.Join("sketch.yaml").ReadFile()
307299
require.NoError(t, err)
308-
fileContent, err = cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFile()
300+
require.Contains(t, string(fileContent), " - Modulino (0.5.0)\n")
301+
require.Contains(t, string(fileContent), " - Arduino_LSM6DSOX (") // dependency added as well
302+
}
303+
304+
func changeLibVersionDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
305+
sk := cli.SketchbookDir().Join("changeLibVersionDefaultProfile")
306+
_, _, err := cli.Run("sketch", "new", sk.String())
309307
require.NoError(t, err)
310-
require.Equal(t, "profiles:\n Uno:\n fqbn: arduino:avr:uno\n platforms:\n - platform: arduino:avr (1.8.6)\n libraries:\n - Modulino (0.4.0)\n\ndefault_profile: Uno\n", string(fileContent))
308+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno")
309+
require.NoError(t, err)
310+
311+
{
312+
out, _, err := cli.Run("profile", "lib", "add", "Modulino@0.5.0", "--dest-dir", sk.String(), "--json")
313+
require.NoError(t, err)
314+
outjson := requirejson.Parse(t, out)
315+
outjson.Query(".added_libraries").MustContain(`[{"name":"Modulino", "version":"0.5.0"},{"name":"Arduino_LSM6DSOX"}]`)
316+
outjson.Query(".skipped_libraries").LengthMustEqualTo(0)
317+
318+
fileContent, err := sk.Join("sketch.yaml").ReadFile()
319+
require.NoError(t, err)
320+
require.Contains(t, string(fileContent), " - Modulino (0.5.0)\n")
321+
require.Contains(t, string(fileContent), " - Arduino_LSM6DSOX (") // dependency added as well
322+
}
323+
324+
{
325+
out, _, err := cli.Run("profile", "lib", "add", "Modulino@0.4.0", "--dest-dir", sk.String(), "--json")
326+
require.NoError(t, err)
327+
outjson := requirejson.Parse(t, out)
328+
outjson.Query(".added_libraries").MustContain(`[{"name":"Modulino", "version":"0.4.0"}]`)
329+
outjson.Query(".skipped_libraries").MustContain(`[{"name":"Arduino_LSM6DSOX"}]`)
330+
331+
fileContent, err := sk.Join("sketch.yaml").ReadFile()
332+
require.NoError(t, err)
333+
require.Contains(t, string(fileContent), " - Modulino (0.4.0)\n")
334+
}
311335
}
312336

313337
func removeLibFromDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
314-
_, _, err := cli.Run("profile", "lib", "remove", "Modulino", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
338+
sk := cli.SketchbookDir().Join("removeLibFromDefaultProfile")
339+
_, _, err := cli.Run("sketch", "new", sk.String())
315340
require.NoError(t, err)
316-
fileContent, err := cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFile()
341+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno")
317342
require.NoError(t, err)
318-
require.Equal(t, "profiles:\n Uno:\n fqbn: arduino:avr:uno\n platforms:\n - platform: arduino:avr (1.8.6)\n\ndefault_profile: Uno\n", string(fileContent))
343+
344+
_, _, err = cli.Run("profile", "lib", "add", "Modulino@0.5.0", "--dest-dir", sk.String(), "--json")
345+
require.NoError(t, err)
346+
347+
_, _, err = cli.Run("profile", "lib", "remove", "Modulino", "--dest-dir", sk.String())
348+
require.NoError(t, err)
349+
fileContent, err := sk.Join("sketch.yaml").ReadFile()
350+
require.NoError(t, err)
351+
require.NotContains(t, string(fileContent), " - Modulino")
319352
}
320353

321354
func addInexistentLibToDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
322-
_, stderr, err := cli.Run("profile", "lib", "add", "foobar", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
355+
sk := cli.SketchbookDir().Join("addInexistentLibToDefaultProfile")
356+
_, _, err := cli.Run("sketch", "new", sk.String())
357+
require.NoError(t, err)
358+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno")
359+
require.NoError(t, err)
360+
361+
_, stderr, err := cli.Run("profile", "lib", "add", "foobar", "--dest-dir", sk.String())
323362
require.Error(t, err)
324363
require.Equal(t, "Error adding foobar to the profile : Library 'foobar@latest' not found\n", string(stderr))
325364
}
326365

327366
func removeLibNotInDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
328-
_, stderr, err := cli.Run("profile", "lib", "remove", "Arduino_JSON", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
367+
sk := cli.SketchbookDir().Join("removeLibNotInDefaultProfile")
368+
_, _, err := cli.Run("sketch", "new", sk.String())
369+
require.NoError(t, err)
370+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno")
371+
require.NoError(t, err)
372+
373+
_, stderr, err := cli.Run("profile", "lib", "remove", "Arduino_JSON", "--dest-dir", sk.String())
329374
require.Error(t, err)
330-
require.Equal(t, "Error removing Arduino_JSON from the profile: Library 'Arduino_JSON' not found\n", string(stderr))
375+
require.Equal(t, "Error removing library Arduino_JSON from the profile: Library 'Arduino_JSON' not found\n", string(stderr))
331376
}
332377

333378
func TestProfileLibSpecificProfile(t *testing.T) {
@@ -338,30 +383,31 @@ func TestProfileLibSpecificProfile(t *testing.T) {
338383
_, _, err := cli.Run("core", "update-index")
339384
require.NoError(t, err)
340385

341-
_, _, err = cli.Run("sketch", "new", cli.SketchbookDir().Join("Simple").String())
386+
sk := cli.SketchbookDir().Join("Simple")
387+
_, _, err = cli.Run("sketch", "new", sk.String())
342388
require.NoError(t, err)
343389

344390
_, _, err = cli.Run("core", "install", "arduino:avr")
345391
require.NoError(t, err)
346392

347-
_, _, err = cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "Uno", "-b", "arduino:avr:uno")
393+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno")
348394
require.NoError(t, err)
349395

350396
// Add a second profile
351-
_, _, err = cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "my_profile", "-b", "arduino:avr:uno")
397+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "my_profile", "-b", "arduino:avr:uno")
352398
require.NoError(t, err)
353399

354400
// Add library to a specific profile
355-
_, _, err = cli.Run("profile", "lib", "add", "Modulino@0.5.0", "-m", "my_profile", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
401+
_, _, err = cli.Run("profile", "lib", "add", "Modulino@0.5.0", "-m", "my_profile", "--dest-dir", sk.String(), "--no-deps")
356402
require.NoError(t, err)
357-
fileContent, err := cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFile()
403+
fileContent, err := sk.Join("sketch.yaml").ReadFile()
358404
require.NoError(t, err)
359405
require.Contains(t, string(fileContent), " my_profile:\n fqbn: arduino:avr:uno\n platforms:\n - platform: arduino:avr (1.8.6)\n libraries:\n - Modulino (0.5.0)\n")
360406

361407
// Remove library from a specific profile
362-
_, _, err = cli.Run("profile", "lib", "remove", "Modulino", "-m", "my_profile", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
408+
_, _, err = cli.Run("profile", "lib", "remove", "Modulino", "-m", "my_profile", "--dest-dir", sk.String())
363409
require.NoError(t, err)
364-
fileContent, err = cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFile()
410+
fileContent, err = sk.Join("sketch.yaml").ReadFile()
365411
require.NoError(t, err)
366412
require.NotContains(t, string(fileContent), "- Modulino (0.5.0)")
367413
}
@@ -374,33 +420,34 @@ func TestProfileSetDefault(t *testing.T) {
374420
_, _, err := cli.Run("core", "update-index")
375421
require.NoError(t, err)
376422

377-
_, _, err = cli.Run("sketch", "new", cli.SketchbookDir().Join("Simple").String())
423+
sk := cli.SketchbookDir().Join("Simple")
424+
_, _, err = cli.Run("sketch", "new", sk.String())
378425
require.NoError(t, err)
379426

380427
_, _, err = cli.Run("core", "install", "arduino:avr")
381428
require.NoError(t, err)
382429

383-
_, _, err = cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "Uno", "-b", "arduino:avr:uno")
430+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno")
384431
require.NoError(t, err)
385432

386433
// Add a second profile
387-
_, _, err = cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "my_profile", "-b", "arduino:avr:uno")
434+
_, _, err = cli.Run("profile", "init", sk.String(), "-m", "my_profile", "-b", "arduino:avr:uno")
388435
require.NoError(t, err)
389-
fileContent, err := cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFileAsLines()
436+
fileContent, err := sk.Join("sketch.yaml").ReadFileAsLines()
390437
require.NoError(t, err)
391438
require.Contains(t, fileContent, "default_profile: Uno")
392439
require.NotContains(t, fileContent, "default_profile: my_profile")
393440

394441
// Change default profile
395-
_, _, err = cli.Run("profile", "set-default", "my_profile", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
442+
_, _, err = cli.Run("profile", "set-default", "my_profile", "--dest-dir", sk.String())
396443
require.NoError(t, err)
397-
fileContent, err = cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFileAsLines()
444+
fileContent, err = sk.Join("sketch.yaml").ReadFileAsLines()
398445
require.NoError(t, err)
399446
require.NotContains(t, fileContent, "default_profile: Uno")
400447
require.Contains(t, fileContent, "default_profile: my_profile")
401448

402449
// Changing to an inexistent profile returns an error
403-
_, stderr, err := cli.Run("profile", "set-default", "inexistent_profile", "--dest-dir", cli.SketchbookDir().Join("Simple").String())
450+
_, stderr, err := cli.Run("profile", "set-default", "inexistent_profile", "--dest-dir", sk.String())
404451
require.Error(t, err)
405452
require.Equal(t, "Cannot set inexistent_profile as default profile: Profile 'inexistent_profile' not found\n", string(stderr))
406453
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /