knah/Il2CppAssemblyUnhollower

Add unit tests

knah opened this issue · 0 comments

knah commented

Unit tests are incredibly valuable when performing refactorings, rewrites, and even general development.
Things to cover:

  • Assembly generation
    • Various OS/Architecture combinations (current targets would be x86/x64/ARM; Windows, Linux, Android)
      • The generation process itself currently is targeting Windows only, optionally Linux - Android modding test approaches currently modify the APK on the PC
    • Various Unity/IL2CPP versions (ideally one sample for each metadata format, see the Il2CppVersions repo)
    • Renaming for deobfuscation
    • Generation-time xref scans
    • General validity of resulting assemblies as far as netcore is concerned (#44)
  • Runtime features
    • Figure out a way to run an IL2CPP GameAssembly without the corresponding Unity game?
    • General functioning of generated assemblies
    • Class injection (on different architectures/OS - does GH Actions have ARM runners?)
    • Assuming any arch is not covered by generation-time xref scanning - that there are any architectures left
    • Delegates conversion

Things to consider:

  • Test data (generated GameAssembly/metadata/generated dummy dlls) can be exceedingly big, so put it into a subrepo
  • Test execution time should be kept low, so include dummy dlls in test data?
  • Include some easy ways to generate new variations of test data for other platforms/unity versions (sample project, sample build scripts? Run IL2CPP converter/compiler without unity editor?)
  • No real games in test data, only hand-built sample projects might be limiting, but also not impossible to expand to cover various versions.