diff --git a/wallettool/src/main/java/org/bitcoinj/wallettool/WalletTool.java b/wallettool/src/main/java/org/bitcoinj/wallettool/WalletTool.java index f346c9133..eb64a21ba 100644 --- a/wallettool/src/main/java/org/bitcoinj/wallettool/WalletTool.java +++ b/wallettool/src/main/java/org/bitcoinj/wallettool/WalletTool.java @@ -86,6 +86,7 @@ import java.text.ParseException; import java.time.Duration; import java.time.Instant; import java.time.LocalDate; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; @@ -1213,7 +1214,7 @@ public class WalletTool implements Callable { if (unixtime != null) return Optional.of(Instant.ofEpochSecond(unixtime)); else if (date != null) - return Optional.of(Instant.from(date)); + return Optional.of(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); else return Optional.empty(); } diff --git a/wallettool/src/test/java/org/bitcoinj/wallettool/WalletToolTest.java b/wallettool/src/test/java/org/bitcoinj/wallettool/WalletToolTest.java index 0b0ec4f5b..3409659fc 100644 --- a/wallettool/src/test/java/org/bitcoinj/wallettool/WalletToolTest.java +++ b/wallettool/src/test/java/org/bitcoinj/wallettool/WalletToolTest.java @@ -17,8 +17,11 @@ package org.bitcoinj.wallettool; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import picocli.CommandLine; +import java.io.File; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -26,6 +29,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; * Basic functional/integration tests of {@code wallet-tool} */ public class WalletToolTest { + @TempDir + File tempDir; @Test void canConstruct() { @@ -55,6 +60,30 @@ public class WalletToolTest { assertEquals(0, exitCode); } + @Test + void createNoFileSpecified() { + int exitCode = execute("create"); + // TODO: currently a stacktrace, give user-friendly error + assertEquals(1, exitCode); + } + + @Test + void createMinimal(@TempDir File tempDir) { + String walletFile = tempDir.getPath() + "/wallet"; + int exitCode = execute("create", "--wallet", walletFile); + + assertEquals(0, exitCode); + } + + @Test + void createWithDate(@TempDir File tempDir) { + String walletFile = tempDir.getPath() + "/wallet"; + String date = "2023-05-01"; + int exitCode = execute("create", "--wallet", walletFile, "--date", date); + + assertEquals(0, exitCode); + } + /** * Run the wallet-tool via {@link CommandLine#execute(String...)} * @param args command-line arguments