netwerk/test/unit/test_bug484684.js

changeset 0
6474c204b198
     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 +}

mercurial