Compare commits

...

2 commits

Author SHA1 Message Date
Dmitry Isaenko
66e7338fa5 Save few integration tests
Some checks failed
continuous-integration/drone/push Build is failing
2023-11-08 14:35:15 +03:00
Dmitry Isaenko
fa236cb1ad Correct Goldleaf supported versions list 2023-11-08 14:34:00 +03:00
9 changed files with 244 additions and 9 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
offsets.txt
environment.txt

View file

@ -29,7 +29,7 @@ public class AppPreferences {
private final Preferences preferences; private final Preferences preferences;
private final Locale locale; 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 static final Font DEFAULT_FONT = Font.getDefault();
private AppPreferences(){ private AppPreferences(){
@ -42,13 +42,13 @@ public class AppPreferences {
} }
public String getTheme(){ 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$)")) if (!theme.matches("(^/res/app_dark.css$)|(^/res/app_light.css$)"))
theme = "/res/app_dark.css"; theme = "/res/app_dark.css";
return theme; return theme;
} }
public int getProtocol(){ 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) if (protocolIndex < 0 || protocolIndex > 1)
protocolIndex = 0; protocolIndex = 0;
return protocolIndex; return protocolIndex;
@ -56,7 +56,7 @@ public class AppPreferences {
public void setProtocol(int protocolIndex){ preferences.putInt("protocol_index", protocolIndex); } public void setProtocol(int protocolIndex){ preferences.putInt("protocol_index", protocolIndex); }
public String getNetUsb(){ 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$)")) if (!netUsb.matches("(^USB$)|(^NET$)"))
netUsb = "USB"; netUsb = "USB";
return netUsb; return netUsb;
@ -120,7 +120,7 @@ public class AppPreferences {
public void setNspFileFilterGL(boolean prop){preferences.putBoolean("GL_NSP_FILTER", prop);} public void setNspFileFilterGL(boolean prop){preferences.putBoolean("GL_NSP_FILTER", prop);}
public int getGlVersion(){ 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);} public void setGlVersion(int version){ preferences.putInt("gl_ver", version);}

View file

@ -38,7 +38,7 @@ public class SettingsBlockGoldleafController implements Initializable {
final AppPreferences preferences = AppPreferences.getInstance(); final AppPreferences preferences = AppPreferences.getInstance();
nspFilesFilterForGLCB.setSelected(preferences.getNspFileFilterGL()); nspFilesFilterForGLCB.setSelected(preferences.getNspFileFilterGL());
glVersionChoiceBox.getItems().addAll(AppPreferences.goldleafSupportedVersions); glVersionChoiceBox.getItems().addAll(AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS);
glVersionChoiceBox.getSelectionModel().select(preferences.getGlVersion()); glVersionChoiceBox.getSelectionModel().select(preferences.getGlVersion());
} }

View file

@ -75,7 +75,7 @@ public class GoldLeafCli {
private String getGlSupportedVersions(){ private String getGlSupportedVersions(){
StringBuilder builder = new StringBuilder("Supported versions: \n"); StringBuilder builder = new StringBuilder("Supported versions: \n");
for (String a : AppPreferences.goldleafSupportedVersions){ for (String a : AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS){
builder.append("\t"); builder.append("\t");
builder.append(a); builder.append(a);
builder.append("\n"); builder.append("\n");
@ -98,7 +98,7 @@ public class GoldLeafCli {
"Try 'ns-usbloader -g help' for more information."); "Try 'ns-usbloader -g help' for more information.");
} }
for (String version : AppPreferences.goldleafSupportedVersions){ for (String version : AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS){
if (version.equals(goldLeafVersion)) if (version.equals(goldLeafVersion))
return; return;
} }

View file

@ -66,7 +66,7 @@ public class UsbCommunications extends CancellableRunnable {
case "TinFoil": case "TinFoil":
module = new TinFoil(handler, nspMap, this, logPrinter); module = new TinFoil(handler, nspMap, this, logPrinter);
break; break;
case "GoldLeafv0.10": case "GoldLeafv0.10+":
module = new GoldLeaf_010(handler, nspMap, this, logPrinter, nspFilterForGl); module = new GoldLeaf_010(handler, nspMap, this, logPrinter, nspFilterForGl);
break; break;
case "GoldLeafv0.8-0.9": case "GoldLeafv0.8-0.9":

View file

@ -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<String, String> 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;
}
}

View file

@ -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();
}
}

View file

@ -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();
}
}

View file

@ -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();
}
}