This is an automated email from the ASF dual-hosted git repository.

jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 439309b  GEODE-5463: Generated restore.bat script is incorrect for 
Windows (#2170)
439309b is described below

commit 439309b514011199a5636871b7f1c2421c5a2da7
Author: Jens Deppe <[email protected]>
AuthorDate: Mon Jul 23 09:51:58 2018 -0700

    GEODE-5463: Generated restore.bat script is incorrect for Windows (#2170)
---
 .../internal/cache/backup/BackupIntegrationTest.java     | 14 ++++++++++++--
 .../internal/cache/backup/UnixScriptGeneratorTest.java   |  5 ++---
 .../geode/internal/cache/backup/UnixScriptGenerator.java |  4 ++--
 .../internal/cache/backup/WindowsScriptGenerator.java    | 16 +++++++++-------
 4 files changed, 25 insertions(+), 14 deletions(-)

diff --git 
a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/backup/BackupIntegrationTest.java
 
b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/backup/BackupIntegrationTest.java
index 8c8b064..7e7af15 100644
--- 
a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/backup/BackupIntegrationTest.java
+++ 
b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/backup/BackupIntegrationTest.java
@@ -31,9 +31,11 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.List;
 import java.util.Properties;
 import java.util.Random;
 import java.util.concurrent.CompletableFuture;
@@ -380,7 +382,16 @@ public class BackupIntegrationTest {
 
   private void execute(File script, boolean expectFailure)
       throws IOException, InterruptedException {
-    ProcessBuilder pb = new ProcessBuilder(script.getAbsolutePath());
+    List<String> command = new ArrayList<>();
+
+    boolean isWindows = script.getName().endsWith("bat");
+    if (isWindows) {
+      command.add("cmd.exe");
+      command.add("/c");
+    }
+
+    command.add(script.getAbsolutePath());
+    ProcessBuilder pb = new ProcessBuilder(command);
     pb.redirectErrorStream(true);
     Process process = pb.start();
 
@@ -393,7 +404,6 @@ public class BackupIntegrationTest {
     }
 
     int result = process.waitFor();
-    boolean isWindows = script.getName().endsWith("bat");
     // On Windows XP, the process returns 0 even though we exit with a 
non-zero status.
     // So let's not bother asserting the return value on XP.
     if (!isWindows) {
diff --git 
a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/backup/UnixScriptGeneratorTest.java
 
b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/backup/UnixScriptGeneratorTest.java
index 3907cd2..a3536e5 100644
--- 
a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/backup/UnixScriptGeneratorTest.java
+++ 
b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/backup/UnixScriptGeneratorTest.java
@@ -71,9 +71,8 @@ public class UnixScriptGeneratorTest {
     scriptGenerator.writeCopyDirectoryContents(writer, backupDirToCopy, 
dirWithBackups, true);
     writer.flush();
     List<String> output = Files.readAllLines(outputFile.toPath());
-    assertThat(output).hasSize(3);
-    assertThat(output).containsExactly("mkdir -p '" + dirWithoutBackups + "'",
-        "mkdir -p '" + dirWithBackups + "'",
+    assertThat(output).hasSize(2);
+    assertThat(output).containsExactly("mkdir -p '" + dirWithBackups + "'",
         "cp -rp '" + backupDirToCopy + "'/* '" + dirWithBackups + "'");
   }
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/UnixScriptGenerator.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/UnixScriptGenerator.java
index 5c36a01..b45592f 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/UnixScriptGenerator.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/UnixScriptGenerator.java
@@ -39,9 +39,9 @@ class UnixScriptGenerator implements ScriptGenerator {
   @Override
   public void writeCopyDirectoryContents(final BufferedWriter writer, final 
File backup,
       final File original, final boolean backupHasFiles) throws IOException {
-    writer.write("mkdir -p '" + original + "'");
-    writer.newLine();
     if (backupHasFiles) {
+      writer.write("mkdir -p '" + original + "'");
+      writer.newLine();
       writer.write("cp -rp '" + backup + "'/* '" + original + "'");
       writer.newLine();
     }
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/WindowsScriptGenerator.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/WindowsScriptGenerator.java
index 7f35691..747e14d 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/WindowsScriptGenerator.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/WindowsScriptGenerator.java
@@ -50,13 +50,15 @@ class WindowsScriptGenerator implements ScriptGenerator {
   @Override
   public void writeCopyDirectoryContents(BufferedWriter writer, File backup, 
File original,
       boolean backupHasFiles) throws IOException {
-    writer.write(MKDIR + " \"" + original + "\"");
-    writer.newLine();
-    writer.write(ROBOCOPY_COMMAND + " \"" + backup + "\" \"" + original + "\" "
-        + ROBOCOPY_COPY_SUBDIRS + " " + ROBOCOPY_NO_JOB_HEADER + " " + 
ROBOCOPY_NO_JOB_SUMMARY);
-    writer.newLine();
-    writer.write(ERROR_CHECK);
-    writer.newLine();
+    if (backupHasFiles) {
+      writer.write(MKDIR + " \"" + original + "\"");
+      writer.newLine();
+      writer.write(ROBOCOPY_COMMAND + " \"" + backup + "\" \"" + original + 
"\" "
+          + ROBOCOPY_COPY_SUBDIRS + " " + ROBOCOPY_NO_JOB_HEADER + " " + 
ROBOCOPY_NO_JOB_SUMMARY);
+      writer.newLine();
+      writer.write(ERROR_CHECK);
+      writer.newLine();
+    }
   }
 
   @Override

Reply via email to