/monotone/03-url_escaping.diff
diff | 337 lines | 290 code | 47 blank | 0 comment | 0 complexity | d6b60f3b0adecc158dc942045d04bcf6 MD5 | raw file
Possible License(s): LGPL-2.0, Unlicense, AGPL-1.0, BitTorrent-1.0, EPL-1.0, GPL-3.0, BSD-3-Clause, GPL-2.0, MIT, CC-BY-SA-3.0, BSD-2-Clause, MPL-2.0, BSD-3-Clause-No-Nuclear-License-2014, JSON, AGPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0, LGPL-2.1, ISC, CC-BY-3.0, WTFPL, 0BSD, CC0-1.0, LGPL-3.0, Cube, Apache-2.0
- Description: Escape characters in URLs used by test suite.
- Bug-Debian: http://bugs.debian.org/668457
- Origin: upstream, commit: a0ed177b60caee5cf304c01d83e75812af1225e1
- Index: monotone-1.0/test/func/attr_mtn_execute/__driver__.lua
- ===================================================================
- --- test/func/attr_mtn_execute/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/attr_mtn_execute/__driver__.lua 2012-04-28 15:43:21.839400322 +0100
- @@ -30,7 +30,7 @@
- -- test clone with mtn:execute
- copy("test.db", "test-clone.db")
- -testURI="file://" .. test.root .. "/test-clone.db?testbranch"
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
- -check(nodb_mtn("clone", testURI, "clone"), 0, false, true)
- +check(nodb_mtn("clone", test_uri, "clone"), 0, false, true)
- check(indir("clone", {"test", "-x","foo"}, 0, false, false))
- Index: monotone-1.0/test/func/branch_leaves_sync_bug/__driver__.lua
- ===================================================================
- --- test/func/branch_leaves_sync_bug/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/branch_leaves_sync_bug/__driver__.lua 2012-04-28 15:43:21.839400322 +0100
- @@ -46,7 +46,9 @@
- -- Create Beth's workspace via checkout, so 'update' works
- chdir(test.root)
- -check(abe_mtn("sync", "file://" .. test.root .. "/beth.db?*"), 0, false, false)
- +
- +test_uri="file://" .. url_encode_path(test.root .. "/beth.db") .. "?*"
- +check(abe_mtn("sync", test_uri), 0, false, false)
- check(beth_mtn("checkout", "--branch", "testbranch", "Beth"), 0, false, false)
- chdir("Beth")
- check(beth_mtn("genkey", "beth@test.net"), 0, false, false, string.rep("beth@test.net\n", 2))
- @@ -64,7 +66,7 @@
- rev_b = base_revision()
- -- Sync dbs
- -check(abe_mtn("sync", "file://" .. test.root .. "/beth.db?*"), 0, false, false)
- +check(abe_mtn("sync", test_uri), 0, false, false)
- -- Abe merges
- chdir("Abe")
- @@ -80,7 +82,8 @@
- rev_d = base_revision()
- -- Sync dbs (not clear if direction of sync matters)
- -check(beth_mtn("sync", "file://" .. test.root .. "/abe.db?*"), 0, false, false)
- +test_uri="file://" .. url_encode_path(test.root .. "/abe.db") .. "?*"
- +check(beth_mtn("sync", test_uri), 0, false, false)
- -- bug; rev_d and rev_c are both heads according to branch_leaves table.
- check(beth_mtn("db", "check"), 0, false, false)
- Index: monotone-1.0/test/func/clone_aborts_on_branch_pattern_in_uri/__driver__.lua
- ===================================================================
- --- test/func/clone_aborts_on_branch_pattern_in_uri/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/clone_aborts_on_branch_pattern_in_uri/__driver__.lua 2012-04-28 15:43:21.839400322 +0100
- @@ -6,9 +6,9 @@
- commit("mybranch")
- copy("test.db", "test-clone.db")
- -testURI="file://" .. test.root .. "/test-clone.db?mybranch*"
- -check(nodb_mtn("clone", testURI), 1, false, true)
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?mybranch*"
- +check(nodb_mtn("clone", test_uri), 1, false, true)
- check(qgrep("you must specify an unambiguous branch to clone", "stderr"))
- -- the branch option is invalid in non-URI mode
- @@ -16,7 +16,7 @@
- check(qgrep("the '--branch' option is only valid with an URI to clone", "stderr"))
- -- finally, this should succeed
- -check(nodb_mtn("clone", testURI, "--branch=mybranch"), 0, false, false)
- +check(nodb_mtn("clone", test_uri, "--branch=mybranch"), 0, false, false)
- check(exists("mybranch"))
- check(readfile("foo") == readfile("mybranch/foo"))
- Index: monotone-1.0/test/func/clone_branch_no_dir/__driver__.lua
- ===================================================================
- --- test/func/clone_branch_no_dir/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/clone_branch_no_dir/__driver__.lua 2012-04-28 15:43:21.839400322 +0100
- @@ -6,18 +6,18 @@
- commit("mybranch")
- copy("test.db", "test-clone.db")
- -testURI="file://" .. test.root .. "/test-clone.db?mybranch"
- -check(nodb_mtn("clone", testURI), 0, false, false)
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?mybranch"
- +check(nodb_mtn("clone", test_uri), 0, false, false)
- check(exists("mybranch"))
- check(readfile("foo") == readfile("mybranch/foo"))
- -- but now that that directory exists, this clone should fail
- -check(nodb_mtn("clone", testURI), 1, false, false)
- +check(nodb_mtn("clone", test_uri), 1, false, false)
- -- but succeed if given a specific dir
- -check(nodb_mtn("clone", testURI, "otherdir"), 0, false, false)
- +check(nodb_mtn("clone", test_uri, "otherdir"), 0, false, false)
- -- clone into . should not fail, like checkout
- mkdir("test4")
- -check(indir("test4", nodb_mtn("clone", testURI, ".")), 0, false, false)
- +check(indir("test4", nodb_mtn("clone", test_uri, ".")), 0, false, false)
- Index: monotone-1.0/test/func/clone_creates__MTN_log/__driver__.lua
- ===================================================================
- --- test/func/clone_creates__MTN_log/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/clone_creates__MTN_log/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -13,9 +13,9 @@
- check(mtn("--branch=testbranch", "--rcfile=commit_log.lua", "commit"), 0, false, false)
- copy("test.db", "test-clone.db")
- -testURI="file://" .. test.root .. "/test-clone.db?testbranch"
- -check(nodb_mtn("clone", testURI, "testbranch"), 0, false, true)
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
- +check(nodb_mtn("clone", test_uri, "testbranch"), 0, false, true)
- check(exists("testbranch/_MTN/log"))
- check(fsize("_MTN/log") == 0)
- Index: monotone-1.0/test/func/clone_creates_right__MTN_options/__driver__.lua
- ===================================================================
- --- test/func/clone_creates_right__MTN_options/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/clone_creates_right__MTN_options/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -10,7 +10,7 @@
- writefile("testfile", "blah")
- commit()
- -testURI="file://" .. test.root .. "/test-clone.db?testbranch"
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
- -- We use RAW_MTN because it used to be that passing --db= (as
- -- MTN does) would hide a bug in this functionality...
- @@ -18,16 +18,17 @@
- -- all of these inherit options settings from the current _MTN dir
- -- unless they override them on the command line
- -check(nodb_mtn("clone", testURI, "test_dir1"), 0, false, false)
- -check(nodb_mtn("clone", "--revision", rev, testURI, "test_dir2"), 0, false, false)
- -check(nodb_mtn("--db=" .. test.root .. "/test-new.db", "clone", testURI, "test_dir3"), 0, false, false)
- -check(nodb_mtn("--db=" .. test.root .. "/test-new.db", "clone", testURI, "--revision", rev, "test_dir4"), 0, false, false)
- +check(nodb_mtn("clone", test_uri, "test_dir1"), 0, false, false)
- +check(nodb_mtn("clone", "--revision", rev, test_uri, "test_dir2"), 0, false, false)
- +check(nodb_mtn("--db=" .. test.root .. "/test-new.db", "clone", test_uri, "test_dir3"), 0, false, false)
- +check(nodb_mtn("--db=" .. test.root .. "/test-new.db", "clone", test_uri, "--revision", rev, "test_dir4"), 0, false, false)
- -- checkout fails if the specified revision is not a member of the specified branch
- -testURI="file://" .. test.root .. "/test-clone.db?foobar"
- -check(nodb_mtn("clone", testURI, "--revision", rev, "test_dir5"), 1, false, false)
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?foobar"
- +
- +check(nodb_mtn("clone", test_uri, "--revision", rev, "test_dir5"), 1, false, false)
- check(nodb_mtn("cert", rev, "branch", "foobar", "-d", "test-clone.db"), 0, false, false)
- -check(nodb_mtn("clone", testURI, "--revision", rev, "test_dir6"), 0, false, false)
- +check(nodb_mtn("clone", test_uri, "--revision", rev, "test_dir6"), 0, false, false)
- for i = 1,2 do
- Index: monotone-1.0/test/func/clone_validates_target_directory/__driver__.lua
- ===================================================================
- --- test/func/clone_validates_target_directory/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/clone_validates_target_directory/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -6,15 +6,15 @@
- commit()
- copy("test.db", "test-clone.db")
- -testURI="file://" .. test.root .. "/test-clone.db?testbranch"
- -check(nodb_mtn("clone", testURI, "test_dir1"), 0, false, false)
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
- +check(nodb_mtn("clone", test_uri, "test_dir1"), 0, false, false)
- writefile("test_dir2")
- -check(nodb_mtn("clone", testURI, "test_dir2"), 1, false, false)
- +check(nodb_mtn("clone", test_uri, "test_dir2"), 1, false, false)
- mkdir("test_dir3")
- -check(nodb_mtn("clone", testURI, "test_dir3"), 1, false, false)
- +check(nodb_mtn("clone", test_uri, "test_dir3"), 1, false, false)
- if existsonpath("chmod") and existsonpath("test") then
- -- skip this part if run as root (hi Gentoo!)
- @@ -27,9 +27,9 @@
- else
- mkdir("test_dir4")
- check({"chmod", "444", "test_dir4"}, 0, false)
- - check(nodb_mtn("clone", testURI, "test_dir4"),
- + check(nodb_mtn("clone", test_uri, "test_dir4"),
- 1, false, false)
- - check(nodb_mtn("clone", testURI, "test_dir4/subdir"),
- + check(nodb_mtn("clone", test_uri, "test_dir4/subdir"),
- 1, false, false)
- -- Reset the permissions so Autotest can correctly clean up our
- -- temporary directory.
- Index: monotone-1.0/test/func/clone_warning_with_multiple_heads/__driver__.lua
- ===================================================================
- --- test/func/clone_warning_with_multiple_heads/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ monotone-1.0/test/func/clone_warning_with_multiple_heads/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -16,9 +16,9 @@
- REV3=base_revision()
- copy("test.db", "test-clone.db")
- -testURI="file://" .. test.root .. "/test-clone.db?testbranch"
- -check(nodb_mtn("clone", testURI, "test_dirA"),
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
- +check(nodb_mtn("clone", test_uri, "test_dirA"),
- 1, false, true)
- check(qgrep(REV2, "stderr"))
- check(qgrep(REV3, "stderr"))
- Index: monotone-1.0/test/func/clone_weird_branch_names/__driver__.lua
- ===================================================================
- --- test/func/clone_weird_branch_names/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/clone_weird_branch_names/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -6,10 +6,11 @@
- commit("my-branch[1,2]-1^3")
- copy("test.db", "test-clone.db")
- --- some of the special chars need to get double-escaped to get "through"
- -testURI="file://" .. test.root .. "/test-clone.db?my-branch\\\[1,2\\\]-1^3"
- -check(nodb_mtn("clone", testURI), 0, false, false)
- +-- some of the special chars need to get double-escaped to get "through"
- +test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") ..
- + "?" .. url_encode_query("my-branch\\\[1,2\\\]-1^3")
- +check(nodb_mtn("clone", test_uri), 0, false, false)
- check(exists("my-branch[1,2]-1^3"))
- check(readfile("foo") == readfile("my-branch[1,2]-1^3/foo"))
- Index: monotone-1.0/test/func/imp_test_filesync_confdir/__driver__.lua
- ===================================================================
- --- test/func/imp_test_filesync_confdir/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/imp_test_filesync_confdir/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -18,7 +18,8 @@
- rcfile:close()
- end
- -check(mtn("sync", "file://" .. test.root .. "/test2.db?testbranch"), 0, true, false)
- +test_uri="file://" .. url_encode_path(test.root .. "/test2.db") .. "?testbranch"
- +check(mtn("sync", test_uri), 0, true, false)
- n = 0
- Index: monotone-1.0/test/func/netsync_over_pipes/__driver__.lua
- ===================================================================
- --- test/func/netsync_over_pipes/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/netsync_over_pipes/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -7,6 +7,7 @@
- addfile("testfile", "foo")
- commit()
- -check(mtn("sync", "file://" .. test.root .. "/test2.db?testbranch"), 0, false, true)
- +test_uri="file://" .. url_encode_path(test.root .. "/test2.db") .. "?testbranch"
- +check(mtn("sync", test_uri), 0, false, true)
- check(not qgrep("error", "stderr"))
- check_same_db_contents("test.db", "test2.db")
- Index: monotone-1.0/test/func/serve-automate-single-run/__driver__.lua
- ===================================================================
- --- test/func/serve-automate-single-run/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/serve-automate-single-run/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -60,8 +60,9 @@
- -- 'file:' not supported on Windows
- copy("allow-automate.lua", "custom_test_hooks.lua")
- +test_uri="file://" .. url_encode_path(test.root .. "/test.db")
- check(mtn2("automate", "remote", "--remote-stdio-host",
- - "file://"..test.root.."/test.db",
- + test_uri,
- "get_file_of", "--", "-r".. R1, "foo"), 0, true, false)
- check(qgrep("bar", "stdout"))
- end
- Index: monotone-1.0/test/func/serve-automate/__driver__.lua
- ===================================================================
- --- test/func/serve-automate/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/serve-automate/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -56,7 +56,8 @@
- if ostype ~= "Windows" then
- -- 'file:' not supported on Windows
- -check(mtn2("automate", "remote_stdio", "file://" .. test.root .. "/test.db"),
- +test_uri="file://" .. url_encode_path(test.root .. "/test.db")
- +check(mtn2("automate", "remote_stdio", test_uri),
- 0, true, false, "l17:interface_versione")
- check(parse_stdio(readfile("stdout"), 0, 0, "m") ~= nil)
- end
- Index: monotone-1.0/test/func/util_mtnopt/__driver__.lua
- ===================================================================
- --- test/func/util_mtnopt/__driver__.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/func/util_mtnopt/__driver__.lua 2012-04-28 15:43:21.840400284 +0100
- @@ -6,6 +6,11 @@
- normalized_testroot = normalize_path (test.root)
- +-- Escape regexp special characters to form a proper regexp that correctly
- +-- checks for the given path.
- +escaped_testroot = string.gsub(normalized_testroot, "([*+.()[\\^$|?])",
- + function (x) return "\\" .. x end)
- +
- -- check default operation
- -- MinGW does not process the shebang in mtnopt; must invoke sh directly
- @@ -13,7 +18,7 @@
- -- Don't pass the full /bin/sh path, it looks like that doesn't always
- -- work under mingw.
- check({"sh", "./mtnopt"}, 0, true)
- -check(qgrep('^MTN_database="' .. normalized_testroot .. '/test.db";$', "stdout"))
- +check(qgrep('^MTN_database="' .. escaped_testroot .. '/test.db";$', "stdout"))
- check(qgrep('^MTN_branch="testbranch";$', "stdout"))
- -- check operation with a specific key and just returning the value
- Index: monotone-1.0/test/src/testlib.lua
- ===================================================================
- --- test/src/testlib.lua 2012-04-28 15:41:51.595817578 +0100
- +++ test/src/testlib.lua 2012-04-28 15:43:21.841400246 +0100
- @@ -144,6 +144,22 @@
- return n
- end
- +-- encodes a query by percent escaping reserved characters (as defined
- +-- in RFC 3986) - except for the directory separator ('/').
- +function url_encode_path(path)
- + path = string.gsub(path, "([!*'();:@&=+$,?#[%]])",
- + function (x) return string.format("%%%02X", string.byte(x)) end)
- + return string.gsub(path, " ", "+")
- +end
- +
- +-- encodes a query by percent escaping reserved characters (as defined
- +-- in RFC 3986) - except for the ampersand and equal sign ('&', '=')
- +function url_encode_query(path)
- + path = string.gsub(path, "([!*'();:@+$,/?#[%]])",
- + function (x) return string.format("%%%02X", string.byte(x)) end)
- + return string.gsub(path, " ", "+")
- +end
- +
- function open_or_err(filename, mode, depth)
- local file, e = io.open(filename, mode)
- if file == nil then