reorganize and expand save file tests

This commit is contained in:
Martin Michelsen
2023-10-12 10:57:47 -07:00
parent 9fd19d2676
commit 31c0a35bb6
41 changed files with 113 additions and 102 deletions
+11 -24
View File
@@ -123,36 +123,23 @@ endif()
enable_testing()
file(GLOB TestCases ${CMAKE_SOURCE_DIR}/tests/*.test.txt)
file(GLOB LogTestCases ${CMAKE_SOURCE_DIR}/tests/*.test.txt)
foreach(TestCase IN ITEMS ${TestCases})
foreach(LogTestCase IN ITEMS ${LogTestCases})
add_test(
NAME ${TestCase}
NAME ${LogTestCase}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_BINARY_DIR}/newserv replay-log ${TestCase} --config=${CMAKE_SOURCE_DIR}/tests/config.json --require-basic-credentials)
COMMAND ${CMAKE_BINARY_DIR}/newserv replay-log ${LogTestCase} --config=${CMAKE_SOURCE_DIR}/tests/config.json --require-basic-credentials)
endforeach()
add_test(
NAME "compression-prs"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_SOURCE_DIR}/tests/test-compression.sh prs ${CMAKE_BINARY_DIR}/newserv)
add_test(
NAME "compression-bc0"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_SOURCE_DIR}/tests/test-compression.sh bc0 ${CMAKE_BINARY_DIR}/newserv)
file(GLOB ScriptTestCases ${CMAKE_SOURCE_DIR}/tests/*.test.sh)
add_test(
NAME "decode-vms"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_SOURCE_DIR}/tests/test-decode-vms.sh ${CMAKE_BINARY_DIR}/newserv)
add_test(
NAME "decode-gci"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_SOURCE_DIR}/tests/test-decode-gci.sh ${CMAKE_BINARY_DIR}/newserv)
add_test(
NAME "decode-pc"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_SOURCE_DIR}/tests/test-decode-pc.sh ${CMAKE_BINARY_DIR}/newserv)
foreach(ScriptTestCase IN ITEMS ${ScriptTestCases})
add_test(
NAME ${ScriptTestCase}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${ScriptTestCase} ${CMAKE_BINARY_DIR}/newserv)
endforeach()
# Installation configuration
-4
View File
@@ -1,4 +0,0 @@
./newserv decrypt-gci-save --sys=8P-GPSE-PSO3_SYSTEM.gci 8P-GPSE-PSO3_CHARACTER.gci
./newserv decrypt-gci-save --sys=8P-GPSE-PSO3_SYSTEM.gci 8P-GPSE-PSO3_GUILDCARD.gci
./newserv decrypt-gci-save --sys=8P-GPOE-PSO_SYSTEM.gci 8P-GPOE-PSO_CHARACTER.gci
./newserv decrypt-gci-save --sys=8P-GPOE-PSO_SYSTEM.gci 8P-GPOE-PSO_GUILDCARD.gci
+1 -2
View File
@@ -1004,8 +1004,7 @@ int main(int argc, char** argv) {
*reinterpret_cast<StructT*>(data.data() + data_start_offset) = decrypted;
} else {
const auto& s = r.get<StructT>();
auto encrypted = encrypt_fixed_size_data_section_t<StructT, true>(
s, round1_seed);
auto encrypted = encrypt_fixed_size_data_section_t<StructT, true>(s, round1_seed);
if (data_start_offset + encrypted.size() > data.size()) {
throw runtime_error("encrypted result exceeds file size");
}
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
set -e
./tests/compression.sh bc0 "$1"
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
set -e
./tests/compression.sh prs "$1"
+26
View File
@@ -0,0 +1,26 @@
#!/bin/sh
set -e
EXECUTABLE="$1"
if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
DIR="tests/saves-gci-quest"
echo "... decode $DIR/quest-ep3.gci"
$EXECUTABLE decode-gci $DIR/quest-ep3.gci
diff $DIR/quest-ep3.dec $DIR/quest-ep3.gci.dec
echo "... decode $DIR/quest-unencrypted.gci"
$EXECUTABLE decode-gci $DIR/quest-unencrypted.gci
diff $DIR/quest-unencrypted.dec $DIR/quest-unencrypted.gci.dec
echo "... decode $DIR/quest-with-key.gci"
$EXECUTABLE decode-gci $DIR/quest-with-key.gci
diff $DIR/quest-with-key.dec $DIR/quest-with-key.gci.dec
echo "... decode $DIR/quest-without-key.gci"
$EXECUTABLE decode-gci $DIR/quest-without-key.gci --seed=1705B11E
diff $DIR/quest-without-key.dec $DIR/quest-without-key.gci.dec
echo "... clean up"
rm -f $DIR/*.gci.dec $DIR/*.gcid.hex
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
set -e
EXECUTABLE="$1"
if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
DIR=tests/saves-vms-quest
echo "... decode $DIR/lionel-v1.vms"
$EXECUTABLE decode-vms $DIR/lionel-v1.vms
diff $DIR/lionel-v1.dec $DIR/lionel-v1.vms.dec
echo "... decode $DIR/lionel-v2.vms"
$EXECUTABLE decode-vms $DIR/lionel-v2.vms --seed=D0231610
diff $DIR/lionel-v2.dec $DIR/lionel-v2.vms.dec
echo "... clean up"
rm $DIR/*.vms.dec
+27
View File
@@ -0,0 +1,27 @@
#!/bin/sh
set -e
EXECUTABLE="$1"
if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
DIR="tests/saves-gci"
echo "... decrypt Ep1&2 charfile"
$EXECUTABLE decrypt-gci-save $DIR/8P-GPOJ-PSO_CHARACTER.gci --sys=$DIR/8P-GPOJ-PSO_SYSTEM.gci
diff $DIR/8P-GPOJ-PSO_CHARACTER-expected.gcid $DIR/8P-GPOJ-PSO_CHARACTER.gcid
echo "... decrypt Ep1&2 guildfile"
$EXECUTABLE decrypt-gci-save $DIR/8P-GPOJ-PSO_GUILDCARD.gci --sys=$DIR/8P-GPOJ-PSO_SYSTEM.gci
diff $DIR/8P-GPOJ-PSO_GUILDCARD-expected.gcid $DIR/8P-GPOJ-PSO_GUILDCARD.gcid
echo "... decrypt Ep3 charfile"
$EXECUTABLE decrypt-gci-save $DIR/8P-GPSJ-PSO3_CHARACTER.gci --sys=$DIR/8P-GPSJ-PSO3_SYSTEM.gci
diff $DIR/8P-GPSJ-PSO3_CHARACTER-expected.gcid $DIR/8P-GPSJ-PSO3_CHARACTER.gcid
echo "... decrypt Ep3 guildfile"
$EXECUTABLE decrypt-gci-save $DIR/8P-GPSJ-PSO3_GUILDCARD.gci --sys=$DIR/8P-GPSJ-PSO3_SYSTEM.gci
diff $DIR/8P-GPSJ-PSO3_GUILDCARD-expected.gcid $DIR/8P-GPSJ-PSO3_GUILDCARD.gcid
echo "... clean up"
rm -f $DIR/8P-GPOJ-PSO_CHARACTER.gcid $DIR/8P-GPOJ-PSO_GUILDCARD.gcid $DIR/8P-GPSJ-PSO_CHARACTER.gcid $DIR/8P-GPSJ-PSO_GUILDCARD.gcid
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
set -e
EXECUTABLE="$1"
if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
DIR="tests/saves-pc"
echo "... decrypt $DIR/pc_gud.bin"
$EXECUTABLE decrypt-pc-save $DIR/pc_gud.bin --seed=1705B11E
diff $DIR/pc_gud.dec $DIR/pc_gud.bin.dec
echo "... decrypt $DIR/pc_sys.bin"
$EXECUTABLE decrypt-pc-save $DIR/pc_sys.bin --seed=1705B11E
diff $DIR/pc_sys.dec $DIR/pc_sys.bin.dec
echo "... clean up"
rm $DIR/pc_*.bin.dec
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-36
View File
@@ -1,36 +0,0 @@
#!/bin/sh
set -e
EXECUTABLE="$1"
if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
echo "... decode saves/quest-ep3.gci"
$EXECUTABLE decode-gci tests/saves/quest-ep3.gci
diff tests/saves/quest-ep3.dec tests/saves/quest-ep3.gci.dec
echo "... decode saves/quest-unencrypted.gci"
$EXECUTABLE decode-gci tests/saves/quest-unencrypted.gci
diff tests/saves/quest-unencrypted.dec tests/saves/quest-unencrypted.gci.dec
echo "... decode saves/quest-with-key.gci"
$EXECUTABLE decode-gci tests/saves/quest-with-key.gci
diff tests/saves/quest-with-key.dec tests/saves/quest-with-key.gci.dec
echo "... decode saves/quest-without-key.gci"
$EXECUTABLE decode-gci tests/saves/quest-without-key.gci --seed=1705B11E
diff tests/saves/quest-without-key.dec tests/saves/quest-without-key.gci.dec
echo "... re-encrypt saves/save-charfile.gci"
$EXECUTABLE encrypt-gci-save --sys=tests/saves/save-system.gci tests/saves/save-charfile.gcid tests/saves/save-charfile.gci
$EXECUTABLE decrypt-gci-save --sys=tests/saves/save-system.gci tests/saves/save-charfile.gci tests/saves/save-charfile-redec.gcid
hexdump -vC tests/saves/save-charfile.gcid > tests/saves/save-charfile.gcid.hex
hexdump -vC tests/saves/save-charfile-redec.gcid > tests/saves/save-charfile-redec.gcid.hex
# There should be differences on two lines: the checksum and the round2 seed
NUM_DIFF_LINES=$(diff -y --suppress-common-lines tests/saves/save-charfile.gcid.hex tests/saves/save-charfile-redec.gcid.hex | wc -l)
if [[ $NUM_DIFF_LINES -ne 2 ]]; then
diff -U3 tests/saves/save-charfile.gcid.hex tests/saves/save-charfile-redec.gcid.hex
exit 1
fi
echo "... clean up"
rm tests/saves/*.gci.dec tests/saves/save-charfile.gci tests/saves/save-charfile-redec.gcid tests/saves/*.gcid.hex
-18
View File
@@ -1,18 +0,0 @@
#!/bin/sh
set -e
EXECUTABLE="$1"
if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
echo "... decrypt saves/pc_gud.bin"
$EXECUTABLE decrypt-pc-save tests/saves/pc_gud.bin --seed=1705B11E
diff tests/saves/pc_gud.dec tests/saves/pc_gud.bin.dec
echo "... decrypt saves/pc_sys.bin"
$EXECUTABLE decrypt-pc-save tests/saves/pc_sys.bin --seed=1705B11E
diff tests/saves/pc_sys.dec tests/saves/pc_sys.bin.dec
echo "... clean up"
rm tests/saves/pc_*.bin.dec
-18
View File
@@ -1,18 +0,0 @@
#!/bin/sh
set -e
EXECUTABLE="$1"
if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
echo "... decode saves/lionel-v1.vms"
$EXECUTABLE decode-vms tests/saves/lionel-v1.vms
diff tests/saves/lionel-v1.dec tests/saves/lionel-v1.vms.dec
echo "... decode saves/lionel-v2.vms"
$EXECUTABLE decode-vms tests/saves/lionel-v2.vms --seed=D0231610
diff tests/saves/lionel-v2.dec tests/saves/lionel-v2.vms.dec
echo "... clean up"
rm tests/saves/*.vms.dec