From fa236cb1ad6f223dcf42ea118a4b28016c8d01e7 Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Wed, 8 Nov 2023 14:34:00 +0300 Subject: [PATCH 1/3] Correct Goldleaf supported versions list --- src/main/java/nsusbloader/AppPreferences.java | 10 +++++----- .../Controllers/SettingsBlockGoldleafController.java | 2 +- src/main/java/nsusbloader/cli/GoldLeafCli.java | 4 ++-- .../java/nsusbloader/com/usb/UsbCommunications.java | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/nsusbloader/AppPreferences.java b/src/main/java/nsusbloader/AppPreferences.java index 9d59e44..ceb9542 100644 --- a/src/main/java/nsusbloader/AppPreferences.java +++ b/src/main/java/nsusbloader/AppPreferences.java @@ -29,7 +29,7 @@ public class AppPreferences { private final Preferences preferences; private final Locale locale; - public static final String[] goldleafSupportedVersions = {"v0.5", "v0.7.x", "v0.8-0.9", "v0.10"}; + public static final String[] GOLDLEAF_SUPPORTED_VERSIONS = {"v0.5", "v0.7.x", "v0.8-0.9", "v0.10+"}; private static final Font DEFAULT_FONT = Font.getDefault(); private AppPreferences(){ @@ -42,13 +42,13 @@ public class AppPreferences { } public String getTheme(){ - String theme = preferences.get("THEME", "/res/app_dark.css"); // Don't let user to change settings manually + String theme = preferences.get("THEME", "/res/app_dark.css"); // Don't let user change settings manually if (!theme.matches("(^/res/app_dark.css$)|(^/res/app_light.css$)")) theme = "/res/app_dark.css"; return theme; } public int getProtocol(){ - int protocolIndex = preferences.getInt("protocol_index", 0); // Don't let user to change settings manually + int protocolIndex = preferences.getInt("protocol_index", 0); // Don't let user change settings manually if (protocolIndex < 0 || protocolIndex > 1) protocolIndex = 0; return protocolIndex; @@ -56,7 +56,7 @@ public class AppPreferences { public void setProtocol(int protocolIndex){ preferences.putInt("protocol_index", protocolIndex); } public String getNetUsb(){ - String netUsb = preferences.get("NETUSB", "USB"); // Don't let user to change settings manually + String netUsb = preferences.get("NETUSB", "USB"); // Don't let user change settings manually if (!netUsb.matches("(^USB$)|(^NET$)")) netUsb = "USB"; return netUsb; @@ -120,7 +120,7 @@ public class AppPreferences { public void setNspFileFilterGL(boolean prop){preferences.putBoolean("GL_NSP_FILTER", prop);} public int getGlVersion(){ - return preferences.getInt("gl_ver", goldleafSupportedVersions.length - 1); + return preferences.getInt("gl_ver", GOLDLEAF_SUPPORTED_VERSIONS.length - 1); } public void setGlVersion(int version){ preferences.putInt("gl_ver", version);} diff --git a/src/main/java/nsusbloader/Controllers/SettingsBlockGoldleafController.java b/src/main/java/nsusbloader/Controllers/SettingsBlockGoldleafController.java index 8be5568..2be959c 100644 --- a/src/main/java/nsusbloader/Controllers/SettingsBlockGoldleafController.java +++ b/src/main/java/nsusbloader/Controllers/SettingsBlockGoldleafController.java @@ -38,7 +38,7 @@ public class SettingsBlockGoldleafController implements Initializable { final AppPreferences preferences = AppPreferences.getInstance(); nspFilesFilterForGLCB.setSelected(preferences.getNspFileFilterGL()); - glVersionChoiceBox.getItems().addAll(AppPreferences.goldleafSupportedVersions); + glVersionChoiceBox.getItems().addAll(AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS); glVersionChoiceBox.getSelectionModel().select(preferences.getGlVersion()); } diff --git a/src/main/java/nsusbloader/cli/GoldLeafCli.java b/src/main/java/nsusbloader/cli/GoldLeafCli.java index 21e2610..27f6f65 100644 --- a/src/main/java/nsusbloader/cli/GoldLeafCli.java +++ b/src/main/java/nsusbloader/cli/GoldLeafCli.java @@ -75,7 +75,7 @@ public class GoldLeafCli { private String getGlSupportedVersions(){ StringBuilder builder = new StringBuilder("Supported versions: \n"); - for (String a : AppPreferences.goldleafSupportedVersions){ + for (String a : AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS){ builder.append("\t"); builder.append(a); builder.append("\n"); @@ -98,7 +98,7 @@ public class GoldLeafCli { "Try 'ns-usbloader -g help' for more information."); } - for (String version : AppPreferences.goldleafSupportedVersions){ + for (String version : AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS){ if (version.equals(goldLeafVersion)) return; } diff --git a/src/main/java/nsusbloader/com/usb/UsbCommunications.java b/src/main/java/nsusbloader/com/usb/UsbCommunications.java index 1222a55..76063d4 100644 --- a/src/main/java/nsusbloader/com/usb/UsbCommunications.java +++ b/src/main/java/nsusbloader/com/usb/UsbCommunications.java @@ -66,7 +66,7 @@ public class UsbCommunications extends CancellableRunnable { case "TinFoil": module = new TinFoil(handler, nspMap, this, logPrinter); break; - case "GoldLeafv0.10": + case "GoldLeafv0.10+": module = new GoldLeaf_010(handler, nspMap, this, logPrinter, nspFilterForGl); break; case "GoldLeafv0.8-0.9": From 66e7338fa5c5076df35ae4f0400d508d3e68561e Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Wed, 8 Nov 2023 14:35:15 +0300 Subject: [PATCH 2/3] Save few integration tests --- .gitignore | 2 + src/test/java/integration/Environment.java | 84 +++++++++++++++++++ .../java/integration/EsIntegrationTest.java | 54 ++++++++++++ .../java/integration/FsIntegrationTest.java | 60 +++++++++++++ .../integration/LoaderIntegrationTest.java | 35 ++++++++ 5 files changed, 235 insertions(+) create mode 100644 .gitignore create mode 100644 src/test/java/integration/Environment.java create mode 100644 src/test/java/integration/EsIntegrationTest.java create mode 100644 src/test/java/integration/FsIntegrationTest.java create mode 100644 src/test/java/integration/LoaderIntegrationTest.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..92b14c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +offsets.txt +environment.txt \ No newline at end of file diff --git a/src/test/java/integration/Environment.java b/src/test/java/integration/Environment.java new file mode 100644 index 0000000..d80e7d1 --- /dev/null +++ b/src/test/java/integration/Environment.java @@ -0,0 +1,84 @@ +/* Copyright WTFPL */ +package integration; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.FileWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; + +public class Environment { + public final String CONTAINER = "environment.txt"; + + private String atmosphere; + private String prodkeys; + private String firmwares; + private String saveTo; + + public Environment() throws Exception{ + if (Files.notExists(Path.of(CONTAINER))) { + boolean createdTemplate = createTemplate(); + throw new Exception("'environment.txt' not found\n" + + "Please "+(createdTemplate?"":"create and ") + + "set values in file"); + } + + read(); + + if (isNotValid()) + throw new Exception("'environment.txt' doesn't contain valid data\n"); + } + private void read() throws Exception{ + HashMap rawKeySet = new HashMap<>(); + try (BufferedReader br = new BufferedReader(new FileReader(CONTAINER))) { + String fileLine; + String[] keyValue; + while ((fileLine = br.readLine()) != null) { + keyValue = fileLine.trim().split("\\s+?=\\s+?", 2); + if (keyValue.length == 2) + rawKeySet.put(keyValue[0], keyValue[1]); + } + } + + atmosphere = rawKeySet.get("ATMOSPHERE"); + prodkeys = rawKeySet.get("PRODKEYS"); + firmwares = rawKeySet.get("NS_GLOBAL_FIRMWARES"); + saveTo = rawKeySet.get("SAVE_TO"); + } + private boolean isNotValid(){ + return atmosphere == null || atmosphere.isBlank() || + prodkeys == null || prodkeys.isBlank() || + firmwares == null || firmwares.isBlank(); + } + private boolean createTemplate(){ + try(FileWriter writer = new FileWriter(CONTAINER)){ + writer.write( + "ATMOSPHERE = \n" + + "PRODKEYS = \n" + + "NS_GLOBAL_FIRMWARES = \n" + + "SAVE_TO = /tmp"); + } + catch (Exception e){ + e.printStackTrace(); + return false; + } + return true; + } + + public String getAtmosphereLocation() { + return atmosphere; + } + + public String getProdkeysLocation() { + return prodkeys; + } + + public String getFirmwaresLocation() { + return firmwares; + } + + public String getSaveToLocation() { + return saveTo; + } +} diff --git a/src/test/java/integration/EsIntegrationTest.java b/src/test/java/integration/EsIntegrationTest.java new file mode 100644 index 0000000..c3b9d9c --- /dev/null +++ b/src/test/java/integration/EsIntegrationTest.java @@ -0,0 +1,54 @@ +/* Copyright WTFPL */ +package integration; + +import nsusbloader.NSLMain; +import nsusbloader.Utilities.patches.es.EsPatchMaker; +import org.junit.jupiter.api.*; + +import java.io.File; +import java.util.Arrays; + +public class EsIntegrationTest { + static String pathToFirmware; + static String pathToFirmwares; + static String pathToKeysFile; + static String saveTo; + + @BeforeAll + static void init() throws Exception{ + NSLMain.isCli = true; + Environment environment = new Environment(); + pathToKeysFile = environment.getProdkeysLocation(); + saveTo = environment.getSaveToLocation() + File.separator + "ES_LPR"; + pathToFirmwares = environment.getFirmwaresLocation(); + pathToFirmware = pathToFirmware + File.separator + "Firmware 14.1.0"; + } + + @Disabled + @DisplayName("ES Integration validation - everything") + @Test + void makeEss() throws Exception{ + File[] fwDirs = new File(pathToFirmwares).listFiles((file, s) -> { + return s.matches("^Firmware (9\\.|[0-9][0-9]\\.).*"); + //return s.matches("^Firmware 10.0.1.*"); + }); + assert fwDirs != null; + Arrays.sort(fwDirs); + for (File dir : fwDirs){ + EsPatchMaker esPatchMaker = new EsPatchMaker(dir.getAbsolutePath(), pathToKeysFile, saveTo); + Thread workThread = new Thread(esPatchMaker); + workThread.start(); + workThread.join(); + } + } + + @Disabled + @DisplayName("ES Integration validation - one particular firmware") + @Test + void makeEs() throws Exception{ + EsPatchMaker esPatchMaker = new EsPatchMaker(pathToFirmware, pathToKeysFile, saveTo); + Thread workThread = new Thread(esPatchMaker); + workThread.start(); + workThread.join(); + } +} diff --git a/src/test/java/integration/FsIntegrationTest.java b/src/test/java/integration/FsIntegrationTest.java new file mode 100644 index 0000000..220bbf7 --- /dev/null +++ b/src/test/java/integration/FsIntegrationTest.java @@ -0,0 +1,60 @@ +/* Copyright WTFPL */ +package integration; + +import nsusbloader.NSLMain; +import nsusbloader.Utilities.patches.fs.FsPatchMaker; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.Arrays; + +public class FsIntegrationTest { + static String pathToFirmware; + static String pathToFirmwares; + static String pathToKeysFile; + static String saveTo; + + @BeforeAll + static void init() throws Exception{ + NSLMain.isCli = true; + Environment environment = new Environment(); + pathToKeysFile = environment.getProdkeysLocation(); + saveTo = environment.getSaveToLocation() + File.separator + "FS_LPR"; + pathToFirmwares = environment.getFirmwaresLocation(); + pathToFirmware = pathToFirmware + File.separator + "Firmware 13.0.0"; + } + + @Disabled + @DisplayName("FS Integration validation - everything") + @Test + void makeFss() throws Exception{ + File[] fwDirs = new File(pathToFirmwares).listFiles((file, s) -> { + return (s.matches("^Firmware (9\\.|[0-9][0-9]\\.).*") && ! s.endsWith(".zip")); + //return s.matches("^Firmware 10.0.1.*"); + }); + assert fwDirs != null; + Arrays.sort(fwDirs); + + for (File dir : fwDirs){ + System.out.println("\n\t\t\t"+dir.getName()); + FsPatchMaker fsPatchMaker = new FsPatchMaker(dir.getAbsolutePath(), pathToKeysFile, saveTo); + Thread workThread = new Thread(fsPatchMaker); + workThread.start(); + workThread.join(); + } + } + + @Disabled + @DisplayName("FS Integration validation - one particular firmware") + @Test + void makeFs() throws Exception{ + System.out.println(pathToFirmware); + FsPatchMaker fsPatchMaker = new FsPatchMaker(pathToFirmware, pathToKeysFile, saveTo); + Thread workThread = new Thread(fsPatchMaker); + workThread.start(); + workThread.join(); + } +} diff --git a/src/test/java/integration/LoaderIntegrationTest.java b/src/test/java/integration/LoaderIntegrationTest.java new file mode 100644 index 0000000..d44d6e6 --- /dev/null +++ b/src/test/java/integration/LoaderIntegrationTest.java @@ -0,0 +1,35 @@ +/* Copyright WTFPL */ +package integration; + +import nsusbloader.NSLMain; +import nsusbloader.Utilities.patches.loader.LoaderPatchMaker; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.File; + +public class LoaderIntegrationTest { + static String pathToAtmo; + static String saveTo; + + @BeforeAll + static void init() throws Exception{ + NSLMain.isCli = true; + Environment environment = new Environment(); + saveTo = environment.getSaveToLocation() + File.separator + "Loader_LPR"; + pathToAtmo = environment.getAtmosphereLocation(); + } + + @Disabled + @DisplayName("Loader Integration validation") + @Test + void makeLoader() throws Exception{ + System.out.println(pathToAtmo); + LoaderPatchMaker patchMaker = new LoaderPatchMaker(pathToAtmo, saveTo); + Thread workThread = new Thread(patchMaker); + workThread.start(); + workThread.join(); + } +} From 88ca0815edc937a77570d7ce398b450a61adc492 Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Wed, 8 Nov 2023 15:08:24 +0300 Subject: [PATCH 3/3] Properly disable integration tests --- src/test/java/integration/EsIntegrationTest.java | 3 +-- src/test/java/integration/FsIntegrationTest.java | 3 +-- src/test/java/integration/LoaderIntegrationTest.java | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/test/java/integration/EsIntegrationTest.java b/src/test/java/integration/EsIntegrationTest.java index c3b9d9c..c8ec24e 100644 --- a/src/test/java/integration/EsIntegrationTest.java +++ b/src/test/java/integration/EsIntegrationTest.java @@ -8,6 +8,7 @@ import org.junit.jupiter.api.*; import java.io.File; import java.util.Arrays; +@Disabled public class EsIntegrationTest { static String pathToFirmware; static String pathToFirmwares; @@ -24,7 +25,6 @@ public class EsIntegrationTest { pathToFirmware = pathToFirmware + File.separator + "Firmware 14.1.0"; } - @Disabled @DisplayName("ES Integration validation - everything") @Test void makeEss() throws Exception{ @@ -42,7 +42,6 @@ public class EsIntegrationTest { } } - @Disabled @DisplayName("ES Integration validation - one particular firmware") @Test void makeEs() throws Exception{ diff --git a/src/test/java/integration/FsIntegrationTest.java b/src/test/java/integration/FsIntegrationTest.java index 220bbf7..5a85acc 100644 --- a/src/test/java/integration/FsIntegrationTest.java +++ b/src/test/java/integration/FsIntegrationTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test; import java.io.File; import java.util.Arrays; +@Disabled public class FsIntegrationTest { static String pathToFirmware; static String pathToFirmwares; @@ -27,7 +28,6 @@ public class FsIntegrationTest { pathToFirmware = pathToFirmware + File.separator + "Firmware 13.0.0"; } - @Disabled @DisplayName("FS Integration validation - everything") @Test void makeFss() throws Exception{ @@ -47,7 +47,6 @@ public class FsIntegrationTest { } } - @Disabled @DisplayName("FS Integration validation - one particular firmware") @Test void makeFs() throws Exception{ diff --git a/src/test/java/integration/LoaderIntegrationTest.java b/src/test/java/integration/LoaderIntegrationTest.java index d44d6e6..25a448a 100644 --- a/src/test/java/integration/LoaderIntegrationTest.java +++ b/src/test/java/integration/LoaderIntegrationTest.java @@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test; import java.io.File; +@Disabled public class LoaderIntegrationTest { static String pathToAtmo; static String saveTo; @@ -22,7 +23,6 @@ public class LoaderIntegrationTest { pathToAtmo = environment.getAtmosphereLocation(); } - @Disabled @DisplayName("Loader Integration validation") @Test void makeLoader() throws Exception{