mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-15 22:17:39 +00:00

The main purpose of this is to backport the improved parse/runtime errors to older versions. I think they're sufficiently useful that we should try to make it as widely available as possible. We've been running them for a week now on SC3 and the released version and not seen any issues, so I think it's probably stable enough. This is a pretty lazy commit: I ended up copying the whole ROM over and then picking up a few other related changes along the way. - Trim spaces from file paths (b8fce1eecc
) - Correctly format 12AM/PM with %I (9f48395596
) - Fix http.request and htpt.websocketAsync not handling a few failure edge-cases correctly (3b42f22a4f
). - Move the internal modules into the main package path, hidden under cc.internal (34a31abd9c
). - Gather code coverage in Java instead of Lua (28a55349a9
). - Make error messages in edit more obvious (8cfbfe7ceb
). - Make mcfly's test methods global. This means we don't need to pass stub everywhere (7335a892b5
). - Improve runtime and parse errors. This comes from numerous commits, but chieflya12b405acf
, and5502412181
. - Hide the internal redirect methods in multishell (33b6f38339
). Note this does /not/ include the shebang changes (sorry Emma!). I've tried to avoid adding any user-controllable features, mostly because I don't know how to handle the versioning otherwise :).
75 lines
2.6 KiB
Lua
75 lines
2.6 KiB
Lua
local capture = require "test_helpers".capture_program
|
|
|
|
describe("The move program", function()
|
|
local function cleanup() fs.delete("/test-files/move") end
|
|
local function touch(file)
|
|
io.open(file, "w"):close()
|
|
end
|
|
|
|
it("move a file", function()
|
|
cleanup()
|
|
touch("/test-files/move/a.txt")
|
|
|
|
shell.run("move /test-files/move/a.txt /test-files/move/b.txt")
|
|
|
|
expect(fs.exists("/test-files/move/a.txt")):eq(false)
|
|
expect(fs.exists("/test-files/move/b.txt")):eq(true)
|
|
end)
|
|
|
|
it("moves a file to a directory", function()
|
|
cleanup()
|
|
touch("/test-files/move/a.txt")
|
|
fs.makeDir("/test-files/move/a")
|
|
|
|
expect(capture("move /test-files/move/a.txt /test-files/move/a"))
|
|
:matches { ok = true }
|
|
|
|
expect(fs.exists("/test-files/move/a.txt")):eq(false)
|
|
expect(fs.exists("/test-files/move/a/a.txt")):eq(true)
|
|
end)
|
|
|
|
it("fails when moving a file which doesn't exist", function()
|
|
expect(capture("move nothing destination"))
|
|
:matches { ok = true, output = "", error = "No matching files\n" }
|
|
end)
|
|
|
|
it("fails when overwriting an existing file", function()
|
|
cleanup()
|
|
touch("/test-files/move/a.txt")
|
|
|
|
expect(capture("move /test-files/move/a.txt /test-files/move/a.txt"))
|
|
:matches { ok = true, output = "", error = "Destination exists\n" }
|
|
end)
|
|
|
|
it("fails when moving to read-only locations", function()
|
|
cleanup()
|
|
touch("/test-files/move/a.txt")
|
|
|
|
expect(capture("move /test-files/move/a.txt /rom/test.txt"))
|
|
:matches { ok = true, output = "", error = "Destination is read-only\n" }
|
|
end)
|
|
|
|
it("fails when moving from read-only locations", function()
|
|
expect(capture("move /rom/startup.lua /test-files/move/not-exist.txt"))
|
|
:matches { ok = true, output = "", error = "Cannot move read-only file /rom/startup.lua\n" }
|
|
end)
|
|
|
|
it("fails when moving mounts", function()
|
|
expect(capture("move /rom /test-files/move/rom"))
|
|
:matches { ok = true, output = "", error = "Cannot move mount /rom\n" }
|
|
end)
|
|
|
|
it("fails when moving a file multiple times", function()
|
|
cleanup()
|
|
touch("/test-files/move/a.txt")
|
|
touch("/test-files/move/b.txt")
|
|
expect(capture("move /test-files/move/*.txt /test-files/move/c.txt"))
|
|
:matches { ok = true, output = "", error = "Cannot overwrite file multiple times\n" }
|
|
end)
|
|
|
|
it("displays the usage with no arguments", function()
|
|
expect(capture("move"))
|
|
:matches { ok = true, output = "Usage: move <source> <destination>\n", error = "" }
|
|
end)
|
|
end)
|