diff --git a/src/io/flutter/run/SdkFields.java b/src/io/flutter/run/SdkFields.java index c32d4adfcb..8894cddf67 100644 --- a/src/io/flutter/run/SdkFields.java +++ b/src/io/flutter/run/SdkFields.java @@ -93,7 +93,8 @@ public boolean hasAdditionalArgs() { public String[] getAdditionalArgsParsed() { if (hasAdditionalArgs()) { assert additionalArgs != null; - return ParametersListUtil.parse(additionalArgs, false, true, true).toArray(new String[0]); + return ParametersListUtil.parse(additionalArgs, false, false, true).stream().filter(s -> !s.isEmpty()) + .toArray(String[]::new); } return new String[0]; @@ -115,7 +116,8 @@ public boolean hasAttachArgs() { public String[] getAttachArgsParsed() { if (hasAttachArgs()) { assert attachArgs != null; - return ParametersListUtil.parse(attachArgs, false, true, true).toArray(new String[0]); + return ParametersListUtil.parse(attachArgs, false, false, true).stream().filter(s -> !s.isEmpty()) + .toArray(String[]::new); } return new String[0]; } diff --git a/testSrc/unit/io/flutter/run/SdkFieldsTest.java b/testSrc/unit/io/flutter/run/SdkFieldsTest.java index 484bbada16..ad4b16cae9 100644 --- a/testSrc/unit/io/flutter/run/SdkFieldsTest.java +++ b/testSrc/unit/io/flutter/run/SdkFieldsTest.java @@ -67,23 +67,29 @@ public void roundTripShouldPreserveFields() { @Test public void supportsSpacesInAdditionalArgs() { final SdkFields sdkFields = new SdkFields(); - sdkFields.setAdditionalArgs("--dart-define='VALUE=foo bar' --other=baz"); - - assertArrayEquals(new String[]{ - "--dart-define=VALUE=foo bar", - "--other=baz" - }, sdkFields.getAdditionalArgsParsed()); + sdkFields.setAdditionalArgs(" --dart-define=\"VALUE=foo bar\" "); + assertArrayEquals(new String[] { "--dart-define=VALUE=foo bar" }, sdkFields.getAdditionalArgsParsed()); } @Test public void supportsSpacesInAttachArgs() { final SdkFields sdkFields = new SdkFields(); - sdkFields.setAttachArgs("--dart-define='VALUE=foo bar' --other=baz"); + sdkFields.setAttachArgs(" --dart-define=\"VALUE=foo bar\" "); + assertArrayEquals(new String[] { "--dart-define=VALUE=foo bar" }, sdkFields.getAttachArgsParsed()); + } + + @Test + public void getAdditionalArgsParsed_edgeCases() { + final SdkFields sdkFields = new SdkFields(); + + sdkFields.setAdditionalArgs(null); + assertEquals(0, sdkFields.getAdditionalArgsParsed().length); + + sdkFields.setAdditionalArgs(" "); + assertArrayEquals(new String[0], sdkFields.getAdditionalArgsParsed()); - assertArrayEquals(new String[]{ - "--dart-define=VALUE=foo bar", - "--other=baz" - }, sdkFields.getAttachArgsParsed()); + sdkFields.setAdditionalArgs(" --foo --bar "); + assertArrayEquals(new String[] { "--foo", "--bar" }, sdkFields.getAdditionalArgsParsed()); } private void addOption(Element elt, String name, String value) { diff --git a/testSrc/unit/io/flutter/run/bazel/BazelFieldsTest.java b/testSrc/unit/io/flutter/run/bazel/BazelFieldsTest.java index 32418b105d..2f5b3cfdd7 100644 --- a/testSrc/unit/io/flutter/run/bazel/BazelFieldsTest.java +++ b/testSrc/unit/io/flutter/run/bazel/BazelFieldsTest.java @@ -65,9 +65,18 @@ public void roundTripShouldPreserveFields() { assertEquals("bazel_or_dart_target", after.getTarget()); assertEquals("bazel_args --1 -2=3", after.getBazelArgs()); assertEquals("additional_args --1 --2=3", after.getAdditionalArgs()); + assertTrue(after.getEnableReleaseMode()); } + @Test + public void constructorHandlesNulls() { + final BazelFields fields = new BazelFields(null, null, null, false); + assertNull(fields.getTarget()); + assertNull(fields.getBazelArgs()); + assertNull(fields.getAdditionalArgs()); + } + private void addOption(Element elt, String name, String value) { final Element child = new Element("option"); child.setAttribute("name", name); diff --git a/testSrc/unit/io/flutter/run/bazelTest/BazelTestFieldsTest.java b/testSrc/unit/io/flutter/run/bazelTest/BazelTestFieldsTest.java index f14986a959..7d9a63d2c5 100644 --- a/testSrc/unit/io/flutter/run/bazelTest/BazelTestFieldsTest.java +++ b/testSrc/unit/io/flutter/run/bazelTest/BazelTestFieldsTest.java @@ -70,6 +70,15 @@ public void roundTripShouldPreserveFields() { assertEquals("--no-watch --other-args", after.getAdditionalArgs()); } + @Test + public void constructorHandlesNulls() { + final BazelTestFields fields = new BazelTestFields(null, null, null, null); + assertNull(fields.getTestName()); + assertNull(fields.getEntryFile()); + assertNull(fields.getBazelTarget()); + assertNull(fields.getAdditionalArgs()); + } + private void addOption(Element elt, String name, String value) { final Element child = new Element("option"); child.setAttribute("name", name);