mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-20 12:40:21 +02:00
feat(nx-mods): add imports/mods inbox dir and MTP hint
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
-- NX mods zip inbox: ensure imports/mods/, MTP hint (NXMOD-01..05).
|
||||
package.path = "./?.lua;./?/init.lua;" .. package.path
|
||||
if not _G.love then _G.love = require("tests.love_stub") end
|
||||
|
||||
local S = require("tests.harness").suite("rom importer NX mods inbox")
|
||||
local eq = S.eq
|
||||
local check = S.check
|
||||
|
||||
local RomImporter = require("src.import.RomImporter")
|
||||
|
||||
love.system = love.system or {}
|
||||
love.filesystem = love.filesystem or {}
|
||||
|
||||
local saved = {
|
||||
getOS = love.system.getOS,
|
||||
getSaveDirectory = love.filesystem.getSaveDirectory,
|
||||
createDirectory = love.filesystem.createDirectory,
|
||||
remove = love.filesystem.remove,
|
||||
}
|
||||
|
||||
love.system.getOS = function() return "NX" end
|
||||
love.filesystem.getSaveDirectory = function()
|
||||
return "sdmc:/switch/gen1recomp/pokemon-love2d"
|
||||
end
|
||||
|
||||
local createdDirs = {}
|
||||
love.filesystem.createDirectory = function(name)
|
||||
createdDirs[name] = true
|
||||
return true
|
||||
end
|
||||
|
||||
local removed = {}
|
||||
love.filesystem.remove = function(name)
|
||||
removed[name] = true
|
||||
return saved.remove(name)
|
||||
end
|
||||
|
||||
package.loaded["src.core.Platform"] = nil
|
||||
package.loaded["src.import.RomImporter"] = nil
|
||||
RomImporter = require("src.import.RomImporter")
|
||||
|
||||
local function clearModsInbox()
|
||||
for _, name in ipairs(love.filesystem.getDirectoryItems("imports/mods") or {}) do
|
||||
love.filesystem.remove("imports/mods/" .. name)
|
||||
end
|
||||
for _, name in ipairs(love.filesystem.getDirectoryItems("imports") or {}) do
|
||||
love.filesystem.remove("imports/" .. name)
|
||||
end
|
||||
end
|
||||
|
||||
local function freshImporter()
|
||||
clearModsInbox()
|
||||
createdDirs = {}
|
||||
removed = {}
|
||||
package.loaded["src.import.RomImporter"] = nil
|
||||
RomImporter = require("src.import.RomImporter")
|
||||
return setmetatable({
|
||||
isNX = true,
|
||||
android = false,
|
||||
launcher = true,
|
||||
workState = nil,
|
||||
tab = "mods",
|
||||
modNotice = nil,
|
||||
mods = {},
|
||||
ensureImportsDir = RomImporter.ensureImportsDir,
|
||||
ensureModsInboxDir = RomImporter.ensureModsInboxDir,
|
||||
_setNxModsInboxNotice = RomImporter._setNxModsInboxNotice,
|
||||
}, RomImporter)
|
||||
end
|
||||
|
||||
-- NXMOD-01: ensureModsInboxDir creates imports/mods/ under save FS
|
||||
createdDirs = {}
|
||||
local ri = freshImporter()
|
||||
ri:ensureModsInboxDir()
|
||||
check(createdDirs.imports or createdDirs["imports/mods"],
|
||||
"ensureModsInboxDir creates parent imports/ or nested path")
|
||||
check(createdDirs["imports/mods"],
|
||||
"ensureModsInboxDir creates imports/mods/")
|
||||
|
||||
-- NXMOD-01: notice/hint includes save dir + relative imports/mods/ MTP path
|
||||
ri = freshImporter()
|
||||
ri:_setNxModsInboxNotice()
|
||||
check(ri.modNotice ~= nil, "NX mods inbox notice is set")
|
||||
check(ri.modNotice.text:find("sdmc:/switch/gen1recomp/pokemon-love2d/imports/mods/", 1, true),
|
||||
"mods notice contains runtime save path + imports/mods/")
|
||||
check(ri.modNotice.text:find("DBI MTP", 1, true) ~= nil,
|
||||
"mods notice contains OpenMTP-oriented hint")
|
||||
check(ri.modNotice.text:find("switch/gen1recomp/pokemon-love2d/imports/mods/", 1, true),
|
||||
"hint uses sdmc-stripped relative imports/mods/ path")
|
||||
|
||||
-- Cleanup + restore stubs
|
||||
clearModsInbox()
|
||||
love.system.getOS = saved.getOS
|
||||
love.filesystem.getSaveDirectory = saved.getSaveDirectory
|
||||
love.filesystem.createDirectory = saved.createDirectory
|
||||
love.filesystem.remove = saved.remove
|
||||
package.loaded["src.core.Platform"] = nil
|
||||
package.loaded["src.import.RomImporter"] = nil
|
||||
|
||||
S.finish()
|
||||
Reference in New Issue
Block a user