1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/netwerk/test/unit/test_bug484684.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,105 @@ 1.4 +const URL = "ftp://localhost/bug464884/"; 1.5 + 1.6 +const tests = [ 1.7 + // standard ls unix format 1.8 + ["-rw-rw-r-- 1 500 500 0 Jan 01 2000 file1\r\n" + 1.9 + "-rw-rw-r-- 1 500 500 0 Jan 01 2000 file2\r\n", 1.10 + 1.11 + "300: " + URL + "\n" + 1.12 + "200: filename content-length last-modified file-type\n" + 1.13 + "201: \"file1\" 0 Sun%2C%2001%20Jan%202000%2000%3A00%3A00 FILE \n" + 1.14 + "201: \"%20file2\" 0 Sun%2C%2001%20Jan%202000%2000%3A00%3A00 FILE \n"], 1.15 + // old Hellsoft unix format 1.16 + ["-[RWCEMFA] supervisor 214059 Jan 01 2000 file1\r\n" + 1.17 + "-[RWCEMFA] supervisor 214059 Jan 01 2000 file2\r\n", 1.18 + 1.19 + "300: " + URL + "\n" + 1.20 + "200: filename content-length last-modified file-type\n" + 1.21 + "201: \"file1\" 214059 Sun%2C%2001%20Jan%202000%2000%3A00%3A00 FILE \n" + 1.22 + "201: \"file2\" 214059 Sun%2C%2001%20Jan%202000%2000%3A00%3A00 FILE \n"], 1.23 + // new Hellsoft unix format 1.24 + ["- [RWCEAFMS] jrd 192 Jan 01 2000 file1\r\n"+ 1.25 + "- [RWCEAFMS] jrd 192 Jan 01 2000 file2\r\n", 1.26 + 1.27 + "300: " + URL + "\n" + 1.28 + "200: filename content-length last-modified file-type\n" + 1.29 + "201: \"file1\" 192 Sun%2C%2001%20Jan%202000%2000%3A00%3A00 FILE \n" + 1.30 + "201: \"%20file2\" 192 Sun%2C%2001%20Jan%202000%2000%3A00%3A00 FILE \n"], 1.31 + // DOS format with correct offsets 1.32 + ["01-01-00 01:00AM <DIR> dir1\r\n" + 1.33 + "01-01-00 01:00AM <JUNCTION> junction1 -> foo1\r\n" + 1.34 + "01-01-00 01:00AM 95077 file1\r\n" + 1.35 + "01-01-00 01:00AM <DIR> dir2\r\n" + 1.36 + "01-01-00 01:00AM <JUNCTION> junction2 -> foo2\r\n" + 1.37 + "01-01-00 01:00AM 95077 file2\r\n", 1.38 + 1.39 + "300: " + URL + "\n" + 1.40 + "200: filename content-length last-modified file-type\n" + 1.41 + "201: \"dir1\" 0 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 DIRECTORY \n" + 1.42 + "201: \"junction1\" Sun%2C%2001%20Jan%202000%2001%3A00%3A00 SYMBOLIC-LINK \n" + 1.43 + "201: \"file1\" 95077 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 FILE \n" + 1.44 + "201: \"%20dir2\" 0 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 DIRECTORY \n" + 1.45 + "201: \"%20junction2\" Sun%2C%2001%20Jan%202000%2001%3A00%3A00 SYMBOLIC-LINK \n" + 1.46 + "201: \"%20file2\" 95077 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 FILE \n"], 1.47 + // DOS format with wrong offsets 1.48 + ["01-01-00 01:00AM <DIR> dir1\r\n" + 1.49 + "01-01-00 01:00AM <DIR> dir2\r\n" + 1.50 + "01-01-00 01:00AM <DIR> dir3\r\n" + 1.51 + "01-01-00 01:00AM <JUNCTION> junction1 -> foo1\r\n" + 1.52 + "01-01-00 01:00AM <JUNCTION> junction2 -> foo2\r\n" + 1.53 + "01-01-00 01:00AM <JUNCTION> junction3 -> foo3\r\n" + 1.54 + "01-01-00 01:00AM 95077 file1\r\n" + 1.55 + "01-01-00 01:00AM 95077 file2\r\n", 1.56 + 1.57 + "300: " + URL + "\n" + 1.58 + "200: filename content-length last-modified file-type\n" + 1.59 + "201: \"dir1\" 0 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 DIRECTORY \n" + 1.60 + "201: \"dir2\" 0 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 DIRECTORY \n" + 1.61 + "201: \"dir3\" 0 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 DIRECTORY \n" + 1.62 + "201: \"junction1\" Sun%2C%2001%20Jan%202000%2001%3A00%3A00 SYMBOLIC-LINK \n" + 1.63 + "201: \"junction2\" Sun%2C%2001%20Jan%202000%2001%3A00%3A00 SYMBOLIC-LINK \n" + 1.64 + "201: \"junction3\" Sun%2C%2001%20Jan%202000%2001%3A00%3A00 SYMBOLIC-LINK \n" + 1.65 + "201: \"file1\" 95077 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 FILE \n" + 1.66 + "201: \"file2\" 95077 Sun%2C%2001%20Jan%202000%2001%3A00%3A00 FILE \n"] 1.67 +] 1.68 + 1.69 +function checkData(request, data, ctx) { 1.70 + do_check_eq(tests[0][1], data); 1.71 + tests.shift(); 1.72 + next_test(); 1.73 +} 1.74 + 1.75 +function storeData(status, entry) { 1.76 + do_check_eq(status, Components.results.NS_OK); 1.77 + entry.setMetaDataElement("servertype", "0"); 1.78 + var os = entry.openOutputStream(0); 1.79 + 1.80 + var written = os.write(tests[0][0], tests[0][0].length); 1.81 + if (written != tests[0][0].length) { 1.82 + do_throw("os.write has not written all data!\n" + 1.83 + " Expected: " + written + "\n" + 1.84 + " Actual: " + tests[0][0].length + "\n"); 1.85 + } 1.86 + os.close(); 1.87 + entry.close(); 1.88 + 1.89 + var ios = Components.classes["@mozilla.org/network/io-service;1"]. 1.90 + getService(Components.interfaces.nsIIOService); 1.91 + var channel = ios.newChannel(URL, "", null); 1.92 + channel.asyncOpen(new ChannelListener(checkData, null, CL_ALLOW_UNKNOWN_CL), null); 1.93 +} 1.94 + 1.95 +function next_test() { 1.96 + if (tests.length == 0) 1.97 + do_test_finished(); 1.98 + else { 1.99 + asyncOpenCacheEntry(URL, 1.100 + "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null, 1.101 + storeData); 1.102 + } 1.103 +} 1.104 + 1.105 +function run_test() { 1.106 + do_execute_soon(next_test); 1.107 + do_test_pending(); 1.108 +}