IDEA-210262 [Environment variables] when pasting several variables with semicolon at the line end

- the last entry is removed
This commit is contained in:
Vassiliy.Kudryashov
2019-04-02 23:18:54 +03:00
parent 90ba281939
commit c52ccd3fe8
2 changed files with 30 additions and 2 deletions
@@ -304,7 +304,7 @@ public class EnvVariablesTable extends ListTableWithButtons<EnvironmentVariable>
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<EnvironmentVariable>
}
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);
}
@@ -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<String, String> 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());
}
}