debugger_visualizer.rs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. extern crate debugger_test;
  2. extern crate url;
  3. use debugger_test::debugger_test;
  4. use url::Url;
  5. #[inline(never)]
  6. fn __break() {}
  7. #[debugger_test(
  8. debugger = "cdb",
  9. commands = "
  10. .nvlist
  11. dx base_url
  12. dx url_with_non_special_scheme
  13. dx url_with_user_pass_port_query_fragments
  14. dx url_blob
  15. dx url_with_base
  16. dx url_with_base_replaced
  17. dx url_with_comma",
  18. expected_statements = r#"
  19. pattern:debugger_visualizer-.*\.exe \(embedded NatVis ".*-[0-9]+\.natvis"\)
  20. base_url : "http://example.org/foo/bar" [Type: url::Url]
  21. [<Raw View>] [Type: url::Url]
  22. [scheme] : "http"
  23. [host] : "example.org"
  24. [path] : "/foo/bar"
  25. url_with_non_special_scheme : "non-special://test/x" [Type: url::Url]
  26. [<Raw View>] [Type: url::Url]
  27. [scheme] : "non-special"
  28. [host] : "test"
  29. [path] : "/x"
  30. url_with_user_pass_port_query_fragments : "http://user:pass@foo:21/bar;par?b#c" [Type: url::Url]
  31. [<Raw View>] [Type: url::Url]
  32. [scheme] : "http"
  33. [username] : "user"
  34. [host] : "foo"
  35. [port] : 21
  36. [path] : "/bar;par"
  37. [query] : "b"
  38. [fragment] : "c"
  39. url_blob : "blob:https://example.com:443/" [Type: url::Url]
  40. [<Raw View>] [Type: url::Url]
  41. [scheme] : "blob"
  42. [path] : "https://example.com:443/"
  43. url_with_base : "http://example.org/a%2fc" [Type: url::Url]
  44. [<Raw View>] [Type: url::Url]
  45. [scheme] : "http"
  46. [host] : "example.org"
  47. [path] : "/a%2fc"
  48. url_with_base_replaced : "http://[::7f00:1]/" [Type: url::Url]
  49. [<Raw View>] [Type: url::Url]
  50. [scheme] : "http"
  51. [host] : "[::7f00:1]"
  52. [path] : "/"
  53. url_with_comma : "data:text/html,test#test" [Type: url::Url]
  54. [<Raw View>] [Type: url::Url]
  55. [scheme] : "data"
  56. [path] : "text/html,test"
  57. [fragment] : "test"
  58. "#
  59. )]
  60. fn test_url_visualizer() {
  61. // Copied from https://github.com/web-platform-tests/wpt/blob/master/url/
  62. let base_url = Url::parse("http://example.org/foo/bar").unwrap();
  63. assert_eq!(base_url.as_str(), "http://example.org/foo/bar");
  64. let url_with_non_special_scheme = Url::parse("non-special://:@test/x").unwrap();
  65. assert_eq!(url_with_non_special_scheme.as_str(), "non-special://test/x");
  66. let url_with_user_pass_port_query_fragments =
  67. Url::parse("http://user:pass@foo:21/bar;par?b#c").unwrap();
  68. assert_eq!(
  69. url_with_user_pass_port_query_fragments.as_str(),
  70. "http://user:pass@foo:21/bar;par?b#c"
  71. );
  72. let url_blob = Url::parse("blob:https://example.com:443/").unwrap();
  73. assert_eq!(url_blob.as_str(), "blob:https://example.com:443/");
  74. let url_with_base = base_url.join("/a%2fc").unwrap();
  75. assert_eq!(url_with_base.as_str(), "http://example.org/a%2fc");
  76. let url_with_base_replaced = base_url.join("http://[::127.0.0.1]").unwrap();
  77. assert_eq!(url_with_base_replaced.as_str(), "http://[::7f00:1]/");
  78. let url_with_comma = base_url.join("data:text/html,test#test").unwrap();
  79. assert_eq!(url_with_comma.as_str(), "data:text/html,test#test");
  80. __break();
  81. }