diff --git a/platform/lang-api/src/com/intellij/execution/util/EnvVariablesTable.java b/platform/lang-api/src/com/intellij/execution/util/EnvVariablesTable.java index 30f8fb29f12f..95ca22c93363 100644 --- a/platform/lang-api/src/com/intellij/execution/util/EnvVariablesTable.java +++ b/platform/lang-api/src/com/intellij/execution/util/EnvVariablesTable.java @@ -304,7 +304,7 @@ public class EnvVariablesTable extends ListTableWithButtons pairs = new ArrayList<>(); int start = 0; int end; - for (end = content.indexOf(";"); end < content.length()-1; end = content.indexOf(";", end+1)) { + for (end = content.indexOf(";"); end < content.length(); end = content.indexOf(";", end+1)) { if (end == -1) { pairs.add(content.substring(start).replace("\\;", ";")); break; @@ -317,7 +317,7 @@ public class EnvVariablesTable extends ListTableWithButtons } for (String pair : pairs) { int pos = pair.indexOf('='); - if (pos == -1) continue; + if (pos <= 0) continue; while (pos > 0 && pair.charAt(pos - 1) == '\\') { pos = pair.indexOf('=', pos + 1); } diff --git a/platform/lang-api/testSources/com/intellij/execution/util/EnvVariablesTableTest.java b/platform/lang-api/testSources/com/intellij/execution/util/EnvVariablesTableTest.java new file mode 100644 index 000000000000..716cdd792f92 --- /dev/null +++ b/platform/lang-api/testSources/com/intellij/execution/util/EnvVariablesTableTest.java @@ -0,0 +1,28 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.execution.util; + +import org.junit.Test; + +import java.util.Map; + +import static org.junit.Assert.*; + +public class EnvVariablesTableTest { + + @Test + public void parseEnvsFromText() { + assertEquals(3, EnvVariablesTable.parseEnvsFromText("t1=val1;t2=val2;t3=val3;").size()); + assertEquals(4, EnvVariablesTable.parseEnvsFromText("t1=val1;t2=val2;t3=val3;;empty=;").size()); + assertEquals(3, EnvVariablesTable.parseEnvsFromText("t1=val1;t2=val2;t3=val3;;").size()); + assertEquals(3, EnvVariablesTable.parseEnvsFromText("t1=val1;t2=val2;t3=val3;;;").size()); + assertEquals(3, EnvVariablesTable.parseEnvsFromText("t1=val1;t2=val2;t3=val3;;noise;").size()); + assertEquals(3, EnvVariablesTable.parseEnvsFromText("t1=val1;t2=val2;t3=val3").size()); + + Map map = EnvVariablesTable.parseEnvsFromText("t1=val1;t2=val2;t3=val\\;3"); + assertEquals(3, map.size()); + assertEquals("val;3", map.get("t3")); + + assertEquals(0, EnvVariablesTable.parseEnvsFromText("test").size()); + assertEquals(1, EnvVariablesTable.parseEnvsFromText("test=test").size()); + } +} \ No newline at end of file