From 7fca9546e73fd514c87d6920dbe5d07289a6aee0 Mon Sep 17 00:00:00 2001 From: Mattes Mrzik Date: Mon, 23 Oct 2023 18:11:56 +0200 Subject: [PATCH] #78: #106: added test for saving changes to ide.properties (#107) --- ...nvironmentVariablesPropertiesFileTest.java | 77 ++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/cli/src/test/java/com/devonfw/tools/ide/environment/EnvironmentVariablesPropertiesFileTest.java b/cli/src/test/java/com/devonfw/tools/ide/environment/EnvironmentVariablesPropertiesFileTest.java index 47a1b490a..269bbdfb1 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/environment/EnvironmentVariablesPropertiesFileTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/environment/EnvironmentVariablesPropertiesFileTest.java @@ -1,6 +1,10 @@ package com.devonfw.tools.ide.environment; +import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.ArrayList; +import java.util.List; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; @@ -37,4 +41,75 @@ public void testLoad() { assertThat(variables.getVariables()).hasSize(4); } -} + @Test + void testSave() throws Exception { + + // arrange + List linesToWrite = new ArrayList<>(); + linesToWrite.add("# first comment"); + linesToWrite.add("# second comment"); + linesToWrite.add("var0=0"); + linesToWrite.add("var1=1"); + linesToWrite.add("var2=2"); + linesToWrite.add("export var3=3"); + linesToWrite.add("export var4=4"); + linesToWrite.add("export var5=5"); + linesToWrite.add("export var6=6"); + linesToWrite.add("# third comment"); + linesToWrite.add("var7=7"); + linesToWrite.add("var8=8"); + linesToWrite.add("# 4th comment"); + linesToWrite.add("# 5th comment"); + linesToWrite.add("var9=9"); + + Path propertiesFilePath = Path.of("target/tmp-EnvironmentVariablesPropertiesFileTest-ide.properties"); + Files.write(propertiesFilePath, linesToWrite, StandardOpenOption.CREATE_NEW); + // check if this writing was correct + List lines = Files.readAllLines(propertiesFilePath); + assertThat(lines).containsExactlyElementsOf(linesToWrite); + + AbstractEnvironmentVariables parent = null; + EnvironmentVariablesType type = EnvironmentVariablesType.SETTINGS; + + EnvironmentVariablesPropertiesFile variables = new EnvironmentVariablesPropertiesFile(parent, type, + propertiesFilePath, LOGGER); + + // act + variables.set("var5", "5", true); + variables.set("var1", "1.0", false); + variables.set("var10", "10", false); + variables.set("var11", "11", true); // var11 must be set after var 10, the other lines can be shuffled + variables.set("var3", "3", false); + variables.set("var7", "7", true); + variables.set("var6", "6.0", true); + variables.set("var4", "4.0", false); + variables.set("var8", "8.0", true); + + variables.save(); + + // assert + List linesAfterSave = new ArrayList<>(); + linesAfterSave.add("# first comment"); + linesAfterSave.add("# second comment"); + linesAfterSave.add("var0=0"); + linesAfterSave.add("var1=1.0"); + linesAfterSave.add("var2=2"); + linesAfterSave.add("var3=3"); + linesAfterSave.add("var4=4.0"); + linesAfterSave.add("export var5=5"); + linesAfterSave.add("export var6=6.0"); + linesAfterSave.add("# third comment"); + linesAfterSave.add("export var7=7"); + linesAfterSave.add("export var8=8.0"); + linesAfterSave.add("# 4th comment"); + linesAfterSave.add("# 5th comment"); + linesAfterSave.add("var9=9"); + linesAfterSave.add("var10=10"); + linesAfterSave.add("export var11=11"); + + lines = Files.readAllLines(propertiesFilePath); + assertThat(lines).containsExactlyElementsOf(linesAfterSave); + // clean up + Files.delete(propertiesFilePath); + } +} \ No newline at end of file