diff --git a/Rakefile b/Rakefile index 7ee7099acb1357..24bb5ace8e78bb 100644 --- a/Rakefile +++ b/Rakefile @@ -585,8 +585,7 @@ namespace :py do nightly = ".#{Time.now.strftime('%Y%m%d%H%M')}" new_version = updated_version(old_version, arguments[:version], nightly) - ['py/setup.py', - 'py/pyproject.toml', + ['py/pyproject.toml', 'py/BUILD.bazel', 'py/selenium/__init__.py', 'py/selenium/webdriver/__init__.py', @@ -1048,7 +1047,6 @@ namespace :all do 'py/selenium/webdriver/__init__.py', 'py/selenium/__init__.py', 'py/BUILD.bazel', - 'py/setup.py', 'rb/lib/selenium/webdriver/version.rb', 'rb/Gemfile.lock']) @@ -1110,7 +1108,6 @@ namespace :all do 'py/selenium/webdriver/__init__.py', 'py/BUILD.bazel', 'py/CHANGES', - 'py/setup.py', 'rb/lib/selenium/webdriver/version.rb', 'rb/CHANGES', 'rb/Gemfile.lock', diff --git a/WORKSPACE b/WORKSPACE index 98cec87d366b7c..d3487546d89cb4 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -34,8 +34,8 @@ rules_closure_toolchains() http_archive( name = "rules_rust", - integrity = "sha256-Zx3bP+Xrz53TTQUeynNS+68z+lO/Ye7Qt1pMNIKeVIA=", - urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.52.2/rules_rust-v0.52.2.tar.gz"], + integrity = "sha256-eEXiHXSGUH6qD1bdI5KXZ/B04m0wIUeoyM7pmujzbbQ=", + urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.55.5/rules_rust-0.55.5.tar.gz"], ) load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains") diff --git a/common/repositories.bzl b/common/repositories.bzl index ba420b18bf293f..e2e1c00e048fcc 100644 --- a/common/repositories.bzl +++ b/common/repositories.bzl @@ -11,8 +11,8 @@ def pin_browsers(): http_archive( name = "linux_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/132.0.2/linux-x86_64/en-US/firefox-132.0.2.tar.bz2", - sha256 = "777d47f8b8710ab450582dc0dc0cdf8f43c2291249b3eaf740ee28ee34cda139", + url = "https://ftp.mozilla.org/pub/firefox/releases/133.0/linux-x86_64/en-US/firefox-133.0.tar.bz2", + sha256 = "63cb097174d429043ad128341358d14cdb5d4c9d05d035d9e3094634ceaf22c2", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -33,8 +33,8 @@ js_library( dmg_archive( name = "mac_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/132.0.2/mac/en-US/Firefox%20132.0.2.dmg", - sha256 = "233251c46eb4964868d815a9233cab855ac6160736310771a67af93a9b78224d", + url = "https://ftp.mozilla.org/pub/firefox/releases/133.0/mac/en-US/Firefox%20133.0.dmg", + sha256 = "02c76e21d64f21d4e45b1205717ccd0736a75f2a50b01c74b25b17e374447a76", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -50,8 +50,8 @@ js_library( http_archive( name = "linux_beta_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/133.0b9/linux-x86_64/en-US/firefox-133.0b9.tar.bz2", - sha256 = "5c9f79912bfbf892d2b676973a26ffc078ee9b8fd9b791bfa856db030e657750", + url = "https://ftp.mozilla.org/pub/firefox/releases/134.0b5/linux-x86_64/en-US/firefox-134.0b5.tar.bz2", + sha256 = "9688f50d2bba71c7781e7f46100e97223d469d37197cf99511a2b2e27efd50a2", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -72,8 +72,8 @@ js_library( dmg_archive( name = "mac_beta_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/133.0b9/mac/en-US/Firefox%20133.0b9.dmg", - sha256 = "0eb0fabe9216dc80c2ca403dd2eba935d71f2bdc1dea1d1cc37f03666ef094d1", + url = "https://ftp.mozilla.org/pub/firefox/releases/134.0b5/mac/en-US/Firefox%20134.0b5.dmg", + sha256 = "5c6d02d149637e963c55c741ebed98a8dacfa93c90e99065981bbdd9d511a0f1", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -123,10 +123,10 @@ js_library( pkg_archive( name = "mac_edge", - url = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/08b226c9-fbe8-43c0-94fe-ed9c3eeb8f59/MicrosoftEdge-131.0.2903.51.pkg", - sha256 = "5bc1eab86bb315aa9f2cd2b7d9afe072df35280f6e6d1a9ca9c108d95bda8acd", + url = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/a310bc51-4dc2-4780-9677-41f3ecf37e31/MicrosoftEdge-131.0.2903.86.pkg", + sha256 = "77dc0bf6d465815d3414a1b52d506323619c9debb12f9feb85ec4ad2c7e58585", move = { - "MicrosoftEdge-131.0.2903.51.pkg/Payload/Microsoft Edge.app": "Edge.app", + "MicrosoftEdge-131.0.2903.86.pkg/Payload/Microsoft Edge.app": "Edge.app", }, build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") @@ -143,8 +143,8 @@ js_library( deb_archive( name = "linux_edge", - url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_131.0.2903.51-1_amd64.deb", - sha256 = "8aad12c97bcae417ff9cc4251b75211eeda7f1513312dc57b2f744e824e028c0", + url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_131.0.2903.86-1_amd64.deb", + sha256 = "4c7844e51ffefbf5a595f3d93e633481c6081f0fd954d15cc08066ea23ddacf3", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -165,8 +165,8 @@ js_library( http_archive( name = "linux_edgedriver", - url = "https://msedgedriver.azureedge.net/131.0.2903.52/edgedriver_linux64.zip", - sha256 = "ddbeda7cec5ed16b96c3cf0f6759de30e4f3726da9da31bfba1371ccd8fcfd14", + url = "https://msedgedriver.azureedge.net/131.0.2903.84/edgedriver_linux64.zip", + sha256 = "13b8024056a2ae72dfc45907213212756ffaf52567fa2b367acadd20badfb4bb", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -182,8 +182,8 @@ js_library( http_archive( name = "mac_edgedriver", - url = "https://msedgedriver.azureedge.net/131.0.2903.56/edgedriver_mac64.zip", - sha256 = "4f4d1d5b45849677f8d8e706f7b5ca9ebb99f40ed3b4ee203c2535a3429e0d5b", + url = "https://msedgedriver.azureedge.net/131.0.2903.84/edgedriver_mac64.zip", + sha256 = "288c7b38d24a0650ca60e9e2a231c0c71976adc37be9e11e777e0596c40b3878", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -199,8 +199,8 @@ js_library( http_archive( name = "linux_chrome", - url = "https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.85/linux64/chrome-linux64.zip", - sha256 = "3a6d928b0002ec012a53b6bb65dcaf95add008adc223c961d566d824982a767e", + url = "https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.87/linux64/chrome-linux64.zip", + sha256 = "5ed0d25537b964cdf826224165a80d125ae67bbb980065c2f1e665dae6686904", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -221,8 +221,8 @@ js_library( http_archive( name = "mac_chrome", - url = "https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.85/mac-x64/chrome-mac-x64.zip", - sha256 = "e26a606e2a3da403c6e1e93617a7b51ee010706614eb88de5b16470276e0896b", + url = "https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.87/mac-x64/chrome-mac-x64.zip", + sha256 = "a9ab895b3ab102973f224f35bef6f0336b690f03cc5fbb73110bf448fe30ce70", strip_prefix = "chrome-mac-x64", patch_cmds = [ "mv 'Google Chrome for Testing.app' Chrome.app", @@ -243,8 +243,8 @@ js_library( http_archive( name = "linux_chromedriver", - url = "https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.85/linux64/chromedriver-linux64.zip", - sha256 = "33910b16568feabd2b50a26a2c4456d154c760d6e28347427f99c025661a4f3e", + url = "https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.87/linux64/chromedriver-linux64.zip", + sha256 = "bb0c5ee6594453258b328b838adc194ed0df000f2a6e5ead306b637a995e387b", strip_prefix = "chromedriver-linux64", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") @@ -261,8 +261,8 @@ js_library( http_archive( name = "mac_chromedriver", - url = "https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.85/mac-x64/chromedriver-mac-x64.zip", - sha256 = "ee194eba1d52dea61dfbf08b05a2ce139660e9c7d20d15024c3a0757ac4a5fcb", + url = "https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.87/mac-x64/chromedriver-mac-x64.zip", + sha256 = "9fa91a7b7e969cbd6edb089e14b8db2189353519640dcc84c067369918bfb04f", strip_prefix = "chromedriver-mac-x64", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") diff --git a/dotnet/src/webdriver/CookieJar.cs b/dotnet/src/webdriver/CookieJar.cs index e4f681e11908a6..8ae324fa6961f1 100644 --- a/dotnet/src/webdriver/CookieJar.cs +++ b/dotnet/src/webdriver/CookieJar.cs @@ -21,64 +21,92 @@ using System.Collections.Generic; using System.Collections.ObjectModel; +#nullable enable + namespace OpenQA.Selenium { - /// - /// Defines an interface allowing the user to manipulate cookies on the current page. - /// - internal class CookieJar : ICookieJar + internal sealed class CookieJar(WebDriver driver) : ICookieJar { - private WebDriver driver; - - /// - /// Initializes a new instance of the class. - /// - /// The driver that is currently in use - public CookieJar(WebDriver driver) - { - this.driver = driver; - } - /// /// Gets all cookies defined for the current page. /// public ReadOnlyCollection AllCookies { - get { return this.GetAllCookies(); } + get + { + Response response = driver.InternalExecute(DriverCommand.GetAllCookies, new Dictionary()); + + try + { + List toReturn = new List(); + if (response.Value is object?[] cookies) + { + foreach (object? rawCookie in cookies) + { + if (rawCookie != null) + { + Cookie newCookie = Cookie.FromDictionary((Dictionary)rawCookie); + toReturn.Add(newCookie); + } + } + } + + return new ReadOnlyCollection(toReturn); + } + catch (Exception e) + { + throw new WebDriverException("Unexpected problem getting cookies", e); + } + } } /// /// Method for creating a cookie in the browser /// /// that represents a cookie in the browser + /// If is . public void AddCookie(Cookie cookie) { + if (cookie is null) + { + throw new ArgumentNullException(nameof(cookie)); + } + Dictionary parameters = new Dictionary(); parameters.Add("cookie", cookie); - this.driver.InternalExecute(DriverCommand.AddCookie, parameters); + driver.InternalExecute(DriverCommand.AddCookie, parameters); } /// /// Delete the cookie by passing in the name of the cookie /// /// The name of the cookie that is in the browser + /// If is . public void DeleteCookieNamed(string name) { + if (name is null) + { + throw new ArgumentNullException(nameof(name)); + } + Dictionary parameters = new Dictionary(); parameters.Add("name", name); - this.driver.InternalExecute(DriverCommand.DeleteCookie, parameters); + driver.InternalExecute(DriverCommand.DeleteCookie, parameters); } /// /// Delete a cookie in the browser by passing in a copy of a cookie /// /// An object that represents a copy of the cookie that needs to be deleted + /// If is . public void DeleteCookie(Cookie cookie) { - if (cookie != null) + if (cookie is null) { - this.DeleteCookieNamed(cookie.Name); + throw new ArgumentNullException(nameof(cookie)); } + + this.DeleteCookieNamed(cookie.Name); } /// @@ -86,63 +114,32 @@ public void DeleteCookie(Cookie cookie) /// public void DeleteAllCookies() { - this.driver.InternalExecute(DriverCommand.DeleteAllCookies, null); + driver.InternalExecute(DriverCommand.DeleteAllCookies, null); } /// /// Method for returning a getting a cookie by name /// /// name of the cookie that needs to be returned - /// A Cookie from the name - public Cookie GetCookieNamed(string name) + /// A Cookie from the name; or if not found. + public Cookie? GetCookieNamed(string name) { - Cookie cookieToReturn = null; - if (name != null) + if (name is null) { - ReadOnlyCollection allCookies = this.AllCookies; - foreach (Cookie currentCookie in allCookies) - { - if (name.Equals(currentCookie.Name)) - { - cookieToReturn = currentCookie; - break; - } - } + throw new ArgumentNullException(nameof(name)); } - return cookieToReturn; - } - /// - /// Method for getting a Collection of Cookies that are present in the browser - /// - /// ReadOnlyCollection of Cookies in the browser - private ReadOnlyCollection GetAllCookies() - { - List toReturn = new List(); - object returned = this.driver.InternalExecute(DriverCommand.GetAllCookies, new Dictionary()).Value; - - try + foreach (Cookie currentCookie in this.AllCookies) { - object[] cookies = returned as object[]; - if (cookies != null) + if (name.Equals(currentCookie.Name)) { - foreach (object rawCookie in cookies) - { - Dictionary cookieDictionary = rawCookie as Dictionary; - if (rawCookie != null) - { - toReturn.Add(Cookie.FromDictionary(cookieDictionary)); - } - } + return currentCookie; } - return new ReadOnlyCollection(toReturn); - } - catch (Exception e) - { - throw new WebDriverException("Unexpected problem getting cookies", e); } + + return null; } } } diff --git a/dotnet/src/webdriver/ICookieJar.cs b/dotnet/src/webdriver/ICookieJar.cs index a27c472a78c41b..07594bf8f31736 100644 --- a/dotnet/src/webdriver/ICookieJar.cs +++ b/dotnet/src/webdriver/ICookieJar.cs @@ -17,8 +17,11 @@ // under the License. // +using System; using System.Collections.ObjectModel; +#nullable enable + namespace OpenQA.Selenium { /// @@ -35,6 +38,7 @@ public interface ICookieJar /// Adds a cookie to the current page. /// /// The object to be added. + /// If is . void AddCookie(Cookie cookie); /// @@ -43,18 +47,21 @@ public interface ICookieJar /// The name of the cookie to retrieve. /// The containing the name. Returns /// if no cookie with the specified name is found. - Cookie GetCookieNamed(string name); + /// If is . + Cookie? GetCookieNamed(string name); /// /// Deletes the specified cookie from the page. /// /// The to be deleted. + /// If is . void DeleteCookie(Cookie cookie); /// /// Deletes the cookie with the specified name from the page. /// /// The name of the cookie to be deleted. + /// If is . void DeleteCookieNamed(string name); /// diff --git a/dotnet/src/webdriver/ILogs.cs b/dotnet/src/webdriver/ILogs.cs index 1224f6d4f36666..d3f236f36c05eb 100644 --- a/dotnet/src/webdriver/ILogs.cs +++ b/dotnet/src/webdriver/ILogs.cs @@ -17,8 +17,11 @@ // under the License. // +using System; using System.Collections.ObjectModel; +#nullable enable + namespace OpenQA.Selenium { /// @@ -37,6 +40,7 @@ public interface ILogs /// The log for which to retrieve the log entries. /// Log types can be found in the class. /// The list of objects for the specified log. + /// If is . ReadOnlyCollection GetLog(string logKind); } } diff --git a/dotnet/src/webdriver/Interactions/ActionSequence.cs b/dotnet/src/webdriver/Interactions/ActionSequence.cs index 6b60496e37fc19..2ad1576a084d58 100644 --- a/dotnet/src/webdriver/Interactions/ActionSequence.cs +++ b/dotnet/src/webdriver/Interactions/ActionSequence.cs @@ -72,6 +72,7 @@ public int Count /// Gets the input device for this Action sequence. /// [Obsolete("This property has been renamed to InputDevice and will be removed in a future version")] + [CLSCompliant(false)] public InputDevice inputDevice => InputDevice; /// diff --git a/dotnet/src/webdriver/Interactions/Actions.cs b/dotnet/src/webdriver/Interactions/Actions.cs index 4fc3307982a83f..e3672dd5a5c7a2 100644 --- a/dotnet/src/webdriver/Interactions/Actions.cs +++ b/dotnet/src/webdriver/Interactions/Actions.cs @@ -138,7 +138,7 @@ private InputDevice FindDeviceById(string name) if (id == name) { - return sequence.inputDevice; + return sequence.InputDevice; } } diff --git a/dotnet/src/webdriver/LogEntry.cs b/dotnet/src/webdriver/LogEntry.cs index 1f43ac5df8a7e4..d10a2f34929303 100644 --- a/dotnet/src/webdriver/LogEntry.cs +++ b/dotnet/src/webdriver/LogEntry.cs @@ -21,6 +21,8 @@ using System.Collections.Generic; using System.Globalization; +#nullable enable + namespace OpenQA.Selenium { /// @@ -28,9 +30,6 @@ namespace OpenQA.Selenium /// public class LogEntry { - private LogLevel level = LogLevel.All; - private DateTime timestamp = DateTime.MinValue; - private string message = string.Empty; /// /// Initializes a new instance of the class. @@ -42,26 +41,19 @@ private LogEntry() /// /// Gets the timestamp value of the log entry. /// - public DateTime Timestamp - { - get { return this.timestamp; } - } + public DateTime Timestamp { get; private set; } = DateTime.MinValue; /// /// Gets the logging level of the log entry. /// - public LogLevel Level - { - get { return this.level; } - } + public LogLevel Level { get; private set; } = LogLevel.All; /// /// Gets the message of the log entry. /// - public string Message - { - get { return this.message; } - } + public string Message { get; private set; } = string.Empty; + + private static readonly DateTime UnixEpoch = new(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); /// /// Returns a string that represents the current . @@ -69,7 +61,7 @@ public string Message /// A string that represents the current . public override string ToString() { - return string.Format(CultureInfo.InvariantCulture, "[{0:yyyy-MM-ddTHH:mm:ssZ}] [{1}] {2}", this.timestamp, this.level, this.message); + return string.Format(CultureInfo.InvariantCulture, "[{0:yyyy-MM-ddTHH:mm:ssZ}] [{1}] {2}", this.Timestamp, this.Level, this.Message); } /// @@ -78,32 +70,31 @@ public override string ToString() /// The from /// which to create the . /// A with the values in the dictionary. - internal static LogEntry FromDictionary(Dictionary entryDictionary) + internal static LogEntry FromDictionary(Dictionary entryDictionary) { LogEntry entry = new LogEntry(); - if (entryDictionary.ContainsKey("message")) + if (entryDictionary.TryGetValue("message", out object? message)) { - entry.message = entryDictionary["message"].ToString(); + entry.Message = message?.ToString() ?? string.Empty; } - if (entryDictionary.ContainsKey("timestamp")) + if (entryDictionary.TryGetValue("timestamp", out object? timestamp)) { - DateTime zeroDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - double timestampValue = Convert.ToDouble(entryDictionary["timestamp"], CultureInfo.InvariantCulture); - entry.timestamp = zeroDate.AddMilliseconds(timestampValue); + double timestampValue = Convert.ToDouble(timestamp, CultureInfo.InvariantCulture); + entry.Timestamp = UnixEpoch.AddMilliseconds(timestampValue); } - if (entryDictionary.ContainsKey("level")) + if (entryDictionary.TryGetValue("level", out object? level)) { - string levelValue = entryDictionary["level"].ToString(); - try + if (Enum.TryParse(level?.ToString(), ignoreCase: true, out LogLevel result)) { - entry.level = (LogLevel)Enum.Parse(typeof(LogLevel), levelValue, true); + entry.Level = result; } - catch (ArgumentException) + else { // If the requested log level string is not a valid log level, // ignore it and use LogLevel.All. + entry.Level = LogLevel.All; } } diff --git a/dotnet/src/webdriver/LogLevel.cs b/dotnet/src/webdriver/LogLevel.cs index 962d32cae682e0..fd5c291c3a165b 100644 --- a/dotnet/src/webdriver/LogLevel.cs +++ b/dotnet/src/webdriver/LogLevel.cs @@ -17,6 +17,8 @@ // under the License. // +#nullable enable + namespace OpenQA.Selenium { /// diff --git a/dotnet/src/webdriver/Logs.cs b/dotnet/src/webdriver/Logs.cs index 74fa3102977d54..91afcc03eb6cd4 100644 --- a/dotnet/src/webdriver/Logs.cs +++ b/dotnet/src/webdriver/Logs.cs @@ -21,6 +21,8 @@ using System.Collections.Generic; using System.Collections.ObjectModel; +#nullable enable + namespace OpenQA.Selenium { /// @@ -28,15 +30,16 @@ namespace OpenQA.Selenium /// public class Logs : ILogs { - private WebDriver driver; + private readonly WebDriver driver; /// /// Initializes a new instance of the class. /// /// Instance of the driver currently in use + /// If is . public Logs(WebDriver driver) { - this.driver = driver; + this.driver = driver ?? throw new ArgumentNullException(nameof(driver)); } /// @@ -50,12 +53,11 @@ public ReadOnlyCollection AvailableLogTypes try { Response commandResponse = this.driver.InternalExecute(DriverCommand.GetAvailableLogTypes, null); - object[] responseValue = commandResponse.Value as object[]; - if (responseValue != null) + if (commandResponse.Value is object[] responseValue) { foreach (object logKind in responseValue) { - availableLogTypes.Add(logKind.ToString()); + availableLogTypes.Add(logKind.ToString()!); } } } @@ -74,21 +76,25 @@ public ReadOnlyCollection AvailableLogTypes /// The log for which to retrieve the log entries. /// Log types can be found in the class. /// The list of objects for the specified log. + /// If is . public ReadOnlyCollection GetLog(string logKind) { + if (logKind is null) + { + throw new ArgumentNullException(nameof(logKind)); + } + List entries = new List(); Dictionary parameters = new Dictionary(); parameters.Add("type", logKind); Response commandResponse = this.driver.InternalExecute(DriverCommand.GetLog, parameters); - object[] responseValue = commandResponse.Value as object[]; - if (responseValue != null) + if (commandResponse.Value is object?[] responseValue) { - foreach (object rawEntry in responseValue) + foreach (object? rawEntry in responseValue) { - Dictionary entryDictionary = rawEntry as Dictionary; - if (entryDictionary != null) + if (rawEntry is Dictionary entryDictionary) { entries.Add(LogEntry.FromDictionary(entryDictionary)); } diff --git a/dotnet/src/webdriver/Proxy.cs b/dotnet/src/webdriver/Proxy.cs index 0216c50105ce8d..fbbf55a3b9c975 100644 --- a/dotnet/src/webdriver/Proxy.cs +++ b/dotnet/src/webdriver/Proxy.cs @@ -23,6 +23,8 @@ using System.Globalization; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium { /// @@ -72,13 +74,13 @@ public class Proxy { private ProxyKind proxyKind = ProxyKind.Unspecified; private bool isAutoDetect; - private string ftpProxyLocation; - private string httpProxyLocation; - private string proxyAutoConfigUrl; - private string sslProxyLocation; - private string socksProxyLocation; - private string socksUserName; - private string socksPassword; + private string? ftpProxyLocation; + private string? httpProxyLocation; + private string? proxyAutoConfigUrl; + private string? sslProxyLocation; + private string? socksProxyLocation; + private string? socksUserName; + private string? socksPassword; private int? socksVersion; private List noProxyAddresses = new List(); @@ -93,6 +95,8 @@ public Proxy() /// Initializes a new instance of the class with the given proxy settings. /// /// A dictionary of settings to use with the proxy. + /// If is . + /// If The "noProxy" value is a list with a element. public Proxy(Dictionary settings) { if (settings == null) @@ -100,46 +104,44 @@ public Proxy(Dictionary settings) throw new ArgumentNullException(nameof(settings), "settings dictionary cannot be null"); } - if (settings.ContainsKey("proxyType") && settings["proxyType"] != null) + if (settings.TryGetValue("proxyType", out object? proxyTypeObj) && proxyTypeObj?.ToString() is string proxyType) { // Special-case "PAC" since that is the correct serialization. - if (settings["proxyType"].ToString().ToLowerInvariant() == "pac") + if (proxyType.Equals("pac", StringComparison.InvariantCultureIgnoreCase)) { this.Kind = ProxyKind.ProxyAutoConfigure; } else { - ProxyKind rawType = (ProxyKind)Enum.Parse(typeof(ProxyKind), settings["proxyType"].ToString(), true); + ProxyKind rawType = (ProxyKind)Enum.Parse(typeof(ProxyKind), proxyType, ignoreCase: true); this.Kind = rawType; } } - if (settings.ContainsKey("ftpProxy") && settings["ftpProxy"] != null) + if (settings.TryGetValue("ftpProxy", out object? ftpProxyObj) && ftpProxyObj?.ToString() is string ftpProxy) { - this.FtpProxy = settings["ftpProxy"].ToString(); + this.FtpProxy = ftpProxy; } - if (settings.ContainsKey("httpProxy") && settings["httpProxy"] != null) + if (settings.TryGetValue("httpProxy", out object? httpProxyObj) && httpProxyObj?.ToString() is string httpProxy) { - this.HttpProxy = settings["httpProxy"].ToString(); + this.HttpProxy = httpProxy; } - if (settings.ContainsKey("noProxy") && settings["noProxy"] != null) + if (settings.TryGetValue("noProxy", out object? noProxy) && noProxy != null) { List bypassAddresses = new List(); - string addressesAsString = settings["noProxy"] as string; - if (addressesAsString != null) + if (noProxy is string addressesAsString) { bypassAddresses.AddRange(addressesAsString.Split(';')); } else { - object[] addressesAsArray = settings["noProxy"] as object[]; - if (addressesAsArray != null) + if (noProxy is object?[] addressesAsArray) { - foreach (object address in addressesAsArray) + foreach (object? address in addressesAsArray) { - bypassAddresses.Add(address.ToString()); + bypassAddresses.Add(address?.ToString() ?? throw new ArgumentException("Proxy bypass address list \"noProxy\" contained a null element", nameof(settings))); } } } @@ -147,39 +149,39 @@ public Proxy(Dictionary settings) this.AddBypassAddresses(bypassAddresses); } - if (settings.ContainsKey("proxyAutoconfigUrl") && settings["proxyAutoconfigUrl"] != null) + if (settings.TryGetValue("proxyAutoconfigUrl", out object? proxyAutoconfigUrlObj) && proxyAutoconfigUrlObj?.ToString() is string proxyAutoconfigUrl) { - this.ProxyAutoConfigUrl = settings["proxyAutoconfigUrl"].ToString(); + this.ProxyAutoConfigUrl = proxyAutoconfigUrl; } - if (settings.ContainsKey("sslProxy") && settings["sslProxy"] != null) + if (settings.TryGetValue("sslProxy", out object? sslProxyObj) && sslProxyObj?.ToString() is string sslProxy) { - this.SslProxy = settings["sslProxy"].ToString(); + this.SslProxy = sslProxy; } - if (settings.ContainsKey("socksProxy") && settings["socksProxy"] != null) + if (settings.TryGetValue("socksProxy", out object? socksProxyObj) && socksProxyObj?.ToString() is string socksProxy) { - this.SocksProxy = settings["socksProxy"].ToString(); + this.SocksProxy = socksProxy; } - if (settings.ContainsKey("socksUsername") && settings["socksUsername"] != null) + if (settings.TryGetValue("socksUsername", out object? socksUsernameObj) && socksUsernameObj?.ToString() is string socksUsername) { - this.SocksUserName = settings["socksUsername"].ToString(); + this.SocksUserName = socksUsername; } - if (settings.ContainsKey("socksPassword") && settings["socksPassword"] != null) + if (settings.TryGetValue("socksPassword", out object? socksPasswordObj) && socksPasswordObj?.ToString() is string socksPassword) { - this.SocksPassword = settings["socksPassword"].ToString(); + this.SocksPassword = socksPassword; } - if (settings.ContainsKey("socksVersion") && settings["socksVersion"] != null) + if (settings.TryGetValue("socksVersion", out object? socksVersion) && socksVersion != null) { - this.SocksVersion = Convert.ToInt32(settings["socksVersion"]); + this.SocksVersion = Convert.ToInt32(socksVersion); } - if (settings.ContainsKey("autodetect") && settings["autodetect"] != null) + if (settings.TryGetValue("autodetect", out object? autodetect) && autodetect != null) { - this.IsAutoDetect = (bool)settings["autodetect"]; + this.IsAutoDetect = Convert.ToBoolean(autodetect); } } @@ -189,10 +191,7 @@ public Proxy(Dictionary settings) [JsonIgnore] public ProxyKind Kind { - get - { - return this.proxyKind; - } + get => this.proxyKind; set { @@ -224,10 +223,7 @@ public string SerializableProxyKind [JsonIgnore] public bool IsAutoDetect { - get - { - return this.isAutoDetect; - } + get => this.isAutoDetect; set { @@ -247,12 +243,9 @@ public bool IsAutoDetect /// [JsonPropertyName("ftpProxy")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public string FtpProxy + public string? FtpProxy { - get - { - return this.ftpProxyLocation; - } + get => this.ftpProxyLocation; set { @@ -267,12 +260,9 @@ public string FtpProxy /// [JsonPropertyName("httpProxy")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public string HttpProxy + public string? HttpProxy { - get - { - return this.httpProxyLocation; - } + get => this.httpProxyLocation; set { @@ -287,7 +277,7 @@ public string HttpProxy /// [JsonPropertyName("noProxy")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public ReadOnlyCollection BypassProxyAddresses + public ReadOnlyCollection? BypassProxyAddresses { get { @@ -305,12 +295,9 @@ public ReadOnlyCollection BypassProxyAddresses /// [JsonPropertyName("proxyAutoconfigUrl")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public string ProxyAutoConfigUrl + public string? ProxyAutoConfigUrl { - get - { - return this.proxyAutoConfigUrl; - } + get => this.proxyAutoConfigUrl; set { @@ -325,12 +312,9 @@ public string ProxyAutoConfigUrl /// [JsonPropertyName("sslProxy")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public string SslProxy + public string? SslProxy { - get - { - return this.sslProxyLocation; - } + get => this.sslProxyLocation; set { @@ -345,12 +329,9 @@ public string SslProxy /// [JsonPropertyName("socksProxy")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public string SocksProxy + public string? SocksProxy { - get - { - return this.socksProxyLocation; - } + get => this.socksProxyLocation; set { @@ -365,12 +346,9 @@ public string SocksProxy /// [JsonPropertyName("socksUsername")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public string SocksUserName + public string? SocksUserName { - get - { - return this.socksUserName; - } + get => this.socksUserName; set { @@ -388,10 +366,7 @@ public string SocksUserName [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public int? SocksVersion { - get - { - return this.socksVersion; - } + get => this.socksVersion; set { @@ -403,7 +378,7 @@ public int? SocksVersion { if (value.Value <= 0) { - throw new ArgumentException("SocksVersion must be a positive integer"); + throw new ArgumentOutOfRangeException(nameof(value), "SocksVersion must be a positive integer"); } this.VerifyProxyTypeCompatilibily(ProxyKind.Manual); @@ -418,12 +393,9 @@ public int? SocksVersion /// [JsonPropertyName("socksPassword")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public string SocksPassword + public string? SocksPassword { - get - { - return this.socksPassword; - } + get => this.socksPassword; set { @@ -453,7 +425,7 @@ public void AddBypassAddress(string address) /// An array of addresses to add. public void AddBypassAddresses(params string[] addressesToAdd) { - this.AddBypassAddresses(new List(addressesToAdd)); + this.AddBypassAddresses((IEnumerable)addressesToAdd); } /// @@ -478,7 +450,7 @@ public void AddBypassAddresses(IEnumerable addressesToAdd) /// /// A dictionary suitable for serializing to the W3C Specification /// dialect of the wire protocol. - internal Dictionary ToCapability() + internal Dictionary? ToCapability() { return this.AsDictionary(true); } @@ -489,17 +461,17 @@ internal Dictionary ToCapability() /// /// A dictionary suitable for serializing to the OSS dialect of the /// wire protocol. - internal Dictionary ToLegacyCapability() + internal Dictionary? ToLegacyCapability() { return this.AsDictionary(false); } - private Dictionary AsDictionary(bool isSpecCompliant) + private Dictionary? AsDictionary(bool isSpecCompliant) { - Dictionary serializedDictionary = null; + Dictionary? serializedDictionary = null; if (this.proxyKind != ProxyKind.Unspecified) { - serializedDictionary = new Dictionary(); + serializedDictionary = new Dictionary(); if (this.proxyKind == ProxyKind.ProxyAutoConfigure) { serializedDictionary["proxyType"] = "pac"; @@ -556,17 +528,12 @@ private Dictionary AsDictionary(bool isSpecCompliant) return serializedDictionary; } - private object GetNoProxyAddressList(bool isSpecCompliant) + private object? GetNoProxyAddressList(bool isSpecCompliant) { - object addresses = null; + object? addresses = null; if (isSpecCompliant) { - List addressList = new List(); - foreach (string address in this.noProxyAddresses) - { - addressList.Add(address); - } - + List addressList = [.. this.noProxyAddresses]; addresses = addressList; } else diff --git a/dotnet/src/webdriver/Response.cs b/dotnet/src/webdriver/Response.cs index 39962a0484a1ff..0af9b181779b32 100644 --- a/dotnet/src/webdriver/Response.cs +++ b/dotnet/src/webdriver/Response.cs @@ -31,16 +31,12 @@ namespace OpenQA.Selenium /// public class Response { - private readonly static JsonSerializerOptions s_jsonSerializerOptions = new() + private static readonly JsonSerializerOptions s_jsonSerializerOptions = new() { TypeInfoResolver = ResponseJsonSerializerContext.Default, Converters = { new ResponseValueJsonConverter() } // we still need it to make `Object` as `Dictionary` }; - private object responseValue; - private string responseSessionId; - private WebDriverResult responseStatus; - /// /// Initializes a new instance of the class /// @@ -56,7 +52,7 @@ public Response(SessionId sessionId) { if (sessionId != null) { - this.responseSessionId = sessionId.ToString(); + this.SessionId = sessionId.ToString(); } } @@ -66,13 +62,13 @@ private Response(Dictionary rawResponse) { if (rawResponse["sessionId"] != null) { - this.responseSessionId = rawResponse["sessionId"].ToString(); + this.SessionId = rawResponse["sessionId"].ToString(); } } - if (rawResponse.ContainsKey("value")) + if (rawResponse.TryGetValue("value", out object value)) { - this.responseValue = rawResponse["value"]; + this.Value = value; } // If the returned object does *not* have a "value" property @@ -80,35 +76,34 @@ private Response(Dictionary rawResponse) // TODO: Remove this if statement altogether; there should // never be a spec-compliant response that does not contain a // value property. - if (!rawResponse.ContainsKey("value") && this.responseValue == null) + if (!rawResponse.ContainsKey("value") && this.Value == null) { // Special-case for the new session command, where the "capabilities" // property of the response is the actual value we're interested in. if (rawResponse.ContainsKey("capabilities")) { - this.responseValue = rawResponse["capabilities"]; + this.Value = rawResponse["capabilities"]; } else { - this.responseValue = rawResponse; + this.Value = rawResponse; } } - Dictionary valueDictionary = this.responseValue as Dictionary; - if (valueDictionary != null) + if (this.Value is Dictionary valueDictionary) { // Special case code for the new session command. If the response contains // sessionId and capabilities properties, fix up the session ID and value members. if (valueDictionary.ContainsKey("sessionId")) { - this.responseSessionId = valueDictionary["sessionId"].ToString(); - if (valueDictionary.ContainsKey("capabilities")) + this.SessionId = valueDictionary["sessionId"].ToString(); + if (valueDictionary.TryGetValue("capabilities", out object capabilities)) { - this.responseValue = valueDictionary["capabilities"]; + this.Value = capabilities; } else { - this.responseValue = valueDictionary["value"]; + this.Value = valueDictionary["value"]; } } } @@ -117,29 +112,17 @@ private Response(Dictionary rawResponse) /// /// Gets or sets the value from JSON. /// - public object Value - { - get { return this.responseValue; } - set { this.responseValue = value; } - } + public object Value { get; set; } /// /// Gets or sets the session ID. /// - public string SessionId - { - get { return this.responseSessionId; } - set { this.responseSessionId = value; } - } + public string SessionId { get; set; } /// /// Gets or sets the status value of the response. /// - public WebDriverResult Status - { - get { return this.responseStatus; } - set { this.responseStatus = value; } - } + public WebDriverResult Status { get; set; } /// /// Returns a new from a JSON-encoded string. @@ -148,9 +131,10 @@ public WebDriverResult Status /// A object described by the JSON string. public static Response FromJson(string value) { - Dictionary deserializedResponse = JsonSerializer.Deserialize>(value, s_jsonSerializerOptions); - Response response = new Response(deserializedResponse); - return response; + Dictionary deserializedResponse = JsonSerializer.Deserialize>(value, s_jsonSerializerOptions) + ?? throw new WebDriverException("JSON success response returned \"null\" value"); + + return new Response(deserializedResponse); } /// @@ -160,7 +144,8 @@ public static Response FromJson(string value) /// A object described by the JSON string. public static Response FromErrorJson(string value) { - var deserializedResponse = JsonSerializer.Deserialize>(value, s_jsonSerializerOptions); + var deserializedResponse = JsonSerializer.Deserialize>(value, s_jsonSerializerOptions) + ?? throw new WebDriverException("JSON error response returned \"null\" value"); var response = new Response(); @@ -181,14 +166,14 @@ public static Response FromErrorJson(string value) throw new WebDriverException($"The 'value > error' property was not found in the response:{Environment.NewLine}{value}"); } - if (errorObject is not string) + if (errorObject is not string errorString) { throw new WebDriverException($"The 'value > error' property is not a string{Environment.NewLine}{value}"); } response.Value = deserializedResponse["value"]; - response.Status = WebDriverError.ResultFromError(errorObject.ToString()); + response.Status = WebDriverError.ResultFromError(errorString); return response; } @@ -213,8 +198,5 @@ public override string ToString() } [JsonSerializable(typeof(Dictionary))] - internal partial class ResponseJsonSerializerContext : JsonSerializerContext - { - - } + internal sealed partial class ResponseJsonSerializerContext : JsonSerializerContext; } diff --git a/dotnet/test/common/AlertsTest.cs b/dotnet/test/common/AlertsTest.cs index 84a05f4a6a78cf..8d093a783acf92 100644 --- a/dotnet/test/common/AlertsTest.cs +++ b/dotnet/test/common/AlertsTest.cs @@ -48,7 +48,7 @@ public void ShouldAllowUsersToAcceptAnAlertManually() alert.Accept(); // If we can perform any action, we're good to go - Assert.AreEqual("Testing Alerts", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Testing Alerts")); } [Test] @@ -81,7 +81,7 @@ public void ShouldAllowUsersToAcceptAnAlertWithNoTextManually() alert.Accept(); // If we can perform any action, we're good to go - Assert.AreEqual("Testing Alerts", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Testing Alerts")); } [Test] @@ -95,7 +95,7 @@ public void ShouldAllowUsersToDismissAnAlertManually() alert.Dismiss(); // If we can perform any action, we're good to go - Assert.AreEqual("Testing Alerts", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Testing Alerts")); } [Test] @@ -109,7 +109,7 @@ public void ShouldAllowAUserToAcceptAPrompt() alert.Accept(); // If we can perform any action, we're good to go - Assert.AreEqual("Testing Prompt", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Testing Prompt")); } [Test] @@ -123,7 +123,7 @@ public void ShouldAllowAUserToDismissAPrompt() alert.Dismiss(); // If we can perform any action, we're good to go - Assert.AreEqual("Testing Prompt", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Testing Prompt")); } [Test] @@ -138,7 +138,7 @@ public void ShouldAllowAUserToSetTheValueOfAPrompt() alert.Accept(); string result = driver.FindElement(By.Id("text")).Text; - Assert.AreEqual("cheese", result); + Assert.That(result, Is.EqualTo("cheese")); } [Test] @@ -173,7 +173,7 @@ public void ShouldAllowTheUserToGetTheTextOfAnAlert() string value = alert.Text; alert.Accept(); - Assert.AreEqual("cheese", value); + Assert.That(value, Is.EqualTo("cheese")); } [Test] @@ -187,7 +187,7 @@ public void ShouldAllowTheUserToGetTheTextOfAPrompt() string value = alert.Text; alert.Accept(); - Assert.AreEqual("Enter something", value); + Assert.That(value, Is.EqualTo("Enter something")); } [Test] @@ -222,7 +222,7 @@ public void ShouldAllowUsersToAcceptAnAlertInAFrame() alert.Accept(); // If we can perform any action, we're good to go - Assert.AreEqual("Testing Alerts", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Testing Alerts")); } [Test] @@ -244,7 +244,7 @@ public void ShouldAllowUsersToAcceptAnAlertInANestedFrame() alert.Accept(); // If we can perform any action, we're good to go - Assert.AreEqual("Testing Alerts", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Testing Alerts")); } [Test] @@ -298,7 +298,7 @@ public void PromptShouldUseDefaultValueIfNoKeysSent() IWebElement element = driver.FindElement(By.Id("text")); WaitFor(ElementTextToEqual(element, "This is a default value"), "Element text was not 'This is a default value'"); - Assert.AreEqual("This is a default value", element.Text); + Assert.That(element.Text, Is.EqualTo("This is a default value")); } [Test] @@ -311,7 +311,7 @@ public void PromptShouldHaveNullValueIfDismissed() alert.Dismiss(); IWebElement element = driver.FindElement(By.Id("text")); WaitFor(ElementTextToEqual(element, "null"), "Element text was not 'null'"); - Assert.AreEqual("null", element.Text); + Assert.That(element.Text, Is.EqualTo("null")); } [Test] @@ -349,10 +349,10 @@ function displayTwoPrompts() { IWebElement element1 = driver.FindElement(By.Id("text1")); WaitFor(ElementTextToEqual(element1, "brie"), "Element text was not 'brie'"); - Assert.AreEqual("brie", element1.Text); + Assert.That(element1.Text, Is.EqualTo("brie")); IWebElement element2 = driver.FindElement(By.Id("text2")); WaitFor(ElementTextToEqual(element2, "cheddar"), "Element text was not 'cheddar'"); - Assert.AreEqual("cheddar", element2.Text); + Assert.That(element2.Text, Is.EqualTo("cheddar")); } [Test] @@ -370,7 +370,7 @@ public void ShouldHandleAlertOnPageLoad() string value = alert.Text; alert.Accept(); - Assert.AreEqual("onload", value); + Assert.That(value, Is.EqualTo("onload")); IWebElement element = driver.FindElement(By.TagName("p")); WaitFor(ElementTextToEqual(element, "Page with onload event handler"), "Element text was not 'Page with onload event handler'"); } @@ -387,7 +387,7 @@ public void ShouldHandleAlertOnPageLoadUsingGet() string value = alert.Text; alert.Accept(); - Assert.AreEqual("onload", value); + Assert.That(value, Is.EqualTo("onload")); WaitFor(ElementTextToEqual(driver.FindElement(By.TagName("p")), "Page with onload event handler"), "Could not find element with text 'Page with onload event handler'"); } @@ -412,7 +412,7 @@ public void ShouldNotHandleAlertInAnotherWindow() driver.FindElement(By.Id("open-new-window")).Click(); List allWindows = new List(driver.WindowHandles); allWindows.Remove(mainWindow); - Assert.AreEqual(1, allWindows.Count); + Assert.That(allWindows, Has.One.Items); onloadWindow = allWindows[0]; Assert.That(() => @@ -472,8 +472,8 @@ public void ShouldHandleAlertOnFormSubmit() string text = alert.Text; alert.Accept(); - Assert.AreEqual("Tasty cheese", text); - Assert.AreEqual("Testing Alerts", driver.Title); + Assert.That(text, Is.EqualTo("Tasty cheese")); + Assert.That(driver.Title, Is.EqualTo("Testing Alerts")); } private IAlert AlertToBePresent() diff --git a/dotnet/test/common/BiDi/Browser/BrowserTest.cs b/dotnet/test/common/BiDi/Browser/BrowserTest.cs index ede287cefd953f..096970d1785437 100644 --- a/dotnet/test/common/BiDi/Browser/BrowserTest.cs +++ b/dotnet/test/common/BiDi/Browser/BrowserTest.cs @@ -41,7 +41,7 @@ public async Task CanGetUserContexts() var userContexts = await bidi.Browser.GetUserContextsAsync(); Assert.That(userContexts, Is.Not.Null); - Assert.That(userContexts.Count, Is.GreaterThanOrEqualTo(2)); + Assert.That(userContexts, Has.Count.GreaterThanOrEqualTo(2)); Assert.That(userContexts, Does.Contain(userContext1)); Assert.That(userContexts, Does.Contain(userContext2)); } diff --git a/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs b/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs index 14baaf25d8f9a2..74e736e70b0c4d 100644 --- a/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs +++ b/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs @@ -99,7 +99,7 @@ public async Task CanListenToBeforeRequestSentEventWithCookie() var req = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); - Assert.That(req.Request.Cookies.Count, Is.EqualTo(1)); + Assert.That(req.Request.Cookies, Has.Count.EqualTo(1)); Assert.That(req.Request.Cookies[0].Name, Is.EqualTo("foo")); Assert.That((req.Request.Cookies[0].Value as BytesValue.String).Value, Is.EqualTo("bar")); } diff --git a/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs b/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs index da692fd8981116..798ea1cbbf9f2a 100644 --- a/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs +++ b/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs @@ -34,7 +34,7 @@ public async Task CanGetAllRealms() var realms = await bidi.Script.GetRealmsAsync(); Assert.That(realms, Is.Not.Null); - Assert.That(realms.Count, Is.EqualTo(2)); + Assert.That(realms, Has.Count.EqualTo(2)); Assert.That(realms[0], Is.AssignableFrom()); Assert.That(realms[0].Realm, Is.Not.Null); @@ -51,7 +51,7 @@ public async Task CanGetAllRealmsByType() var realms = await bidi.Script.GetRealmsAsync(new() { Type = RealmType.Window }); Assert.That(realms, Is.Not.Null); - Assert.That(realms.Count, Is.EqualTo(2)); + Assert.That(realms, Has.Count.EqualTo(2)); Assert.That(realms[0], Is.AssignableFrom()); Assert.That(realms[0].Realm, Is.Not.Null); diff --git a/dotnet/test/common/BiDi/Storage/StorageTest.cs b/dotnet/test/common/BiDi/Storage/StorageTest.cs index 19db76a0d4a7b3..642f17756ef575 100644 --- a/dotnet/test/common/BiDi/Storage/StorageTest.cs +++ b/dotnet/test/common/BiDi/Storage/StorageTest.cs @@ -94,7 +94,7 @@ await context.Storage.SetCookieAsync(new("fish", "cod", UrlBuilder.HostName) var cookies = await context.Storage.GetCookiesAsync(); Assert.That(cookies, Is.Not.Null); - Assert.That(cookies.Count, Is.EqualTo(1)); + Assert.That(cookies, Has.Count.EqualTo(1)); var cookie = cookies[0]; @@ -119,7 +119,7 @@ public async Task CanGetAllCookies() var cookies = await bidi.Storage.GetCookiesAsync(); Assert.That(cookies, Is.Not.Null); - Assert.That(cookies.Count, Is.EqualTo(2)); + Assert.That(cookies, Has.Count.EqualTo(2)); Assert.That(cookies[0].Name, Is.EqualTo("key1")); Assert.That(cookies[1].Name, Is.EqualTo("key2")); } @@ -157,7 +157,7 @@ public async Task CanDeleteCookieWithName() var cookies = await bidi.Storage.GetCookiesAsync(); Assert.That(cookies, Is.Not.Null); - Assert.That(cookies.Count, Is.EqualTo(1)); + Assert.That(cookies, Has.Count.EqualTo(1)); Assert.That(cookies[0].Name, Is.EqualTo("key2")); } diff --git a/dotnet/test/common/ChildrenFindingTest.cs b/dotnet/test/common/ChildrenFindingTest.cs index 1bbe8ccfe1e6ee..6588c7c88a43ab 100644 --- a/dotnet/test/common/ChildrenFindingTest.cs +++ b/dotnet/test/common/ChildrenFindingTest.cs @@ -31,7 +31,7 @@ public void FindElementByXPath() driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("form2")); IWebElement child = element.FindElement(By.XPath("select")); - Assert.AreEqual("2", child.GetAttribute("id")); + Assert.That(child.GetAttribute("id"), Is.EqualTo("2")); } [Test] @@ -41,7 +41,7 @@ public void FindingElementsOnElementByXPathShouldFindTopLevelElements() IWebElement parent = driver.FindElement(By.Id("multiline")); ReadOnlyCollection allParaElements = driver.FindElements(By.XPath("//p")); ReadOnlyCollection children = parent.FindElements(By.XPath("//p")); - Assert.AreEqual(allParaElements.Count, children.Count); + Assert.That(children, Has.Exactly(allParaElements.Count).Items); } [Test] @@ -49,9 +49,10 @@ public void FindingDotSlashElementsOnElementByXPathShouldFindNotTopLevelElements { driver.Url = simpleTestPage; IWebElement parent = driver.FindElement(By.Id("multiline")); + ReadOnlyCollection children = parent.FindElements(By.XPath("./p")); - Assert.AreEqual(1, children.Count); - Assert.AreEqual("A div containing", children[0].Text); + Assert.That(children, Has.One.Items); + Assert.That(children[0].Text, Is.EqualTo("A div containing")); } [Test] @@ -59,7 +60,10 @@ public void FindElementByXPathWhenNoMatch() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("form2")); - Assert.That(() => element.FindElement(By.XPath("select/x")), Throws.InstanceOf()); + + Assert.That( + () => element.FindElement(By.XPath("select/x")), + Throws.InstanceOf()); } [Test] @@ -67,10 +71,11 @@ public void FindElementsByXPath() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("form2")); + ReadOnlyCollection children = element.FindElements(By.XPath("select/option")); - Assert.AreEqual(8, children.Count); - Assert.AreEqual("One", children[0].Text); - Assert.AreEqual("Two", children[1].Text); + Assert.That(children, Has.Exactly(8).Items); + Assert.That(children[0].Text, Is.EqualTo("One")); + Assert.That(children[1].Text, Is.EqualTo("Two")); } [Test] @@ -79,7 +84,7 @@ public void FindElementsByXPathWhenNoMatch() driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("form2")); ReadOnlyCollection children = element.FindElements(By.XPath("select/x")); - Assert.AreEqual(0, children.Count); + Assert.That(children, Is.Empty); } [Test] @@ -88,7 +93,7 @@ public void FindElementByName() driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("form2")); IWebElement child = element.FindElement(By.Name("selectomatic")); - Assert.AreEqual("2", child.GetAttribute("id")); + Assert.That(child.GetAttribute("id"), Is.EqualTo("2")); } [Test] @@ -96,8 +101,9 @@ public void FindElementsByName() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("form2")); + ReadOnlyCollection children = element.FindElements(By.Name("selectomatic")); - Assert.AreEqual(children.Count, 2); + Assert.That(children, Has.Exactly(2).Items); } [Test] @@ -105,8 +111,9 @@ public void FindElementById() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("form2")); + IWebElement child = element.FindElement(By.Id("2")); - Assert.AreEqual(child.GetAttribute("name"), "selectomatic"); + Assert.That(child.GetAttribute("name"), Is.EqualTo("selectomatic")); } @@ -115,8 +122,9 @@ public void FindElementByIdWhenMultipleMatchesExist() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Id("test_id_div")); + IWebElement child = element.FindElement(By.Id("test_id")); - Assert.AreEqual(child.Text, "inside"); + Assert.That(child.Text, Is.EqualTo("inside")); } [Test] @@ -124,8 +132,9 @@ public void FindElementByIdWhenIdContainsNonAlphanumericCharacters() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Id("test_special_chars")); + IWebElement childWithSpaces = element.FindElement(By.Id("white space")); - Assert.That(childWithSpaces.Text.Contains("space")); + Assert.That(childWithSpaces.Text, Does.Contain("space")); IWebElement childWithCssChars = element.FindElement(By.Id("css#.chars")); Assert.That(childWithCssChars.Text, Is.EqualTo("css escapes")); } @@ -135,7 +144,10 @@ public void FindElementByIdWhenNoMatchInContext() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Id("test_id_div")); - Assert.That(() => element.FindElement(By.Id("test_id_out")), Throws.InstanceOf()); + + Assert.That( + () => element.FindElement(By.Id("test_id_out")), + Throws.InstanceOf()); } [Test] @@ -144,7 +156,7 @@ public void FindElementsById() driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("form2")); ReadOnlyCollection children = element.FindElements(By.Id("2")); - Assert.AreEqual(children.Count, 2); + Assert.That(children, Has.Exactly(2).Items); } [Test] @@ -153,9 +165,9 @@ public void FindElementsByIdWithNonAlphanumericCharacters() driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Id("test_special_chars")); ReadOnlyCollection children = element.FindElements(By.Id("white space")); - Assert.That(children.Count, Is.EqualTo(1)); + Assert.That(children, Has.One.Items); ReadOnlyCollection children2 = element.FindElements(By.Id("css#.chars")); - Assert.That(children2.Count, Is.EqualTo(1)); + Assert.That(children2, Has.One.Items); } [Test] @@ -163,8 +175,9 @@ public void FindElementByLinkText() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("div1")); + IWebElement child = element.FindElement(By.LinkText("hello world")); - Assert.AreEqual(child.GetAttribute("name"), "link1"); + Assert.That(child.GetAttribute("name"), Is.EqualTo("link1")); } @@ -175,9 +188,9 @@ public void FindElementsByLinkText() IWebElement element = driver.FindElement(By.Name("div1")); ReadOnlyCollection elements = element.FindElements(By.LinkText("hello world")); - Assert.AreEqual(2, elements.Count); - Assert.AreEqual(elements[0].GetAttribute("name"), "link1"); - Assert.AreEqual(elements[1].GetAttribute("name"), "link2"); + Assert.That(elements, Has.Exactly(2).Items); + Assert.That(elements[0].GetAttribute("name"), Is.EqualTo("link1")); + Assert.That(elements[1].GetAttribute("name"), Is.EqualTo("link2")); } [Test] @@ -185,8 +198,9 @@ public void ShouldFindChildElementsById() { driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Id("test_id_div")); + IWebElement element = parent.FindElement(By.Id("test_id")); - Assert.AreEqual("inside", element.Text); + Assert.That(element.Text, Is.EqualTo("inside")); } [Test] @@ -195,8 +209,10 @@ public void ShouldNotReturnRootElementWhenFindingChildrenById() driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Id("test_id")); - Assert.AreEqual(0, parent.FindElements(By.Id("test_id")).Count); - Assert.That(() => parent.FindElement(By.Id("test_id")), Throws.InstanceOf()); + Assert.That(parent.FindElements(By.Id("test_id")), Is.Empty); + Assert.That( + () => parent.FindElement(By.Id("test_id")), + Throws.InstanceOf()); } [Test] @@ -207,7 +223,7 @@ public void ShouldFindChildElementsByClassName() IWebElement element = parent.FindElement(By.ClassName("one")); - Assert.AreEqual("Find me", element.Text); + Assert.That(element.Text, Is.EqualTo("Find me")); } [Test] @@ -218,7 +234,7 @@ public void ShouldFindChildrenByClassName() ReadOnlyCollection elements = parent.FindElements(By.ClassName("one")); - Assert.AreEqual(2, elements.Count); + Assert.That(elements, Has.Exactly(2).Items); } @@ -230,7 +246,7 @@ public void ShouldFindChildElementsByTagName() IWebElement element = parent.FindElement(By.TagName("a")); - Assert.AreEqual("link1", element.GetAttribute("name")); + Assert.That(element.GetAttribute("name"), Is.EqualTo("link1")); } @@ -242,7 +258,7 @@ public void ShouldFindChildrenByTagName() ReadOnlyCollection elements = parent.FindElements(By.TagName("a")); - Assert.AreEqual(2, elements.Count); + Assert.That(elements, Has.Exactly(2).Items); } [Test] @@ -253,7 +269,7 @@ public void ShouldBeAbleToFindAnElementByCssSelector() IWebElement element = parent.FindElement(By.CssSelector("*[name=\"selectomatic\"]")); - Assert.AreEqual("2", element.GetAttribute("id")); + Assert.That(element.GetAttribute("id"), Is.EqualTo("2")); } [Test] @@ -264,7 +280,7 @@ public void ShouldBeAbleToFindAnElementByCss3Selector() IWebElement element = parent.FindElement(By.CssSelector("*[name^=\"selecto\"]")); - Assert.AreEqual("2", element.GetAttribute("id")); + Assert.That(element.GetAttribute("id"), Is.EqualTo("2")); } [Test] @@ -275,7 +291,7 @@ public void ShouldBeAbleToFindElementsByCssSelector() ReadOnlyCollection elements = parent.FindElements(By.CssSelector("*[name=\"selectomatic\"]")); - Assert.AreEqual(2, elements.Count); + Assert.That(elements, Has.Exactly(2).Items); } [Test] @@ -284,8 +300,9 @@ public void ShouldBeAbleToFindChildrenOfANode() driver.Url = selectableItemsPage; ReadOnlyCollection elements = driver.FindElements(By.XPath("/html/head")); IWebElement head = elements[0]; + ReadOnlyCollection importedScripts = head.FindElements(By.TagName("script")); - Assert.That(importedScripts.Count, Is.EqualTo(3)); + Assert.That(importedScripts, Has.Exactly(3).Items); } [Test] @@ -293,9 +310,9 @@ public void ReturnAnEmptyListWhenThereAreNoChildrenOfANode() { driver.Url = xhtmlTestPage; IWebElement table = driver.FindElement(By.Id("table")); - ReadOnlyCollection rows = table.FindElements(By.TagName("tr")); - Assert.That(rows.Count, Is.EqualTo(0)); + ReadOnlyCollection rows = table.FindElements(By.TagName("tr")); + Assert.That(rows, Is.Empty); } [Test] @@ -311,7 +328,9 @@ public void ShouldNotFindElementOutSideTree() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.Name("login")); - Assert.That(() => element.FindElement(By.Name("x")), Throws.InstanceOf()); + Assert.That( + () => element.FindElement(By.Name("x")), + Throws.InstanceOf()); } [Test] @@ -320,8 +339,8 @@ public void FindingByTagNameShouldNotIncludeParentElementIfSameTagType() driver.Url = xhtmlTestPage; IWebElement parent = driver.FindElement(By.Id("my_span")); - Assert.AreEqual(2, parent.FindElements(By.TagName("div")).Count); - Assert.AreEqual(2, parent.FindElements(By.TagName("span")).Count); + Assert.That(parent.FindElements(By.TagName("div")), Has.Exactly(2).Items); + Assert.That(parent.FindElements(By.TagName("span")), Has.Exactly(2).Items); } [Test] @@ -331,7 +350,7 @@ public void FindingByCssShouldNotIncludeParentElementIfSameTagType() IWebElement parent = driver.FindElement(By.CssSelector("div#parent")); IWebElement child = parent.FindElement(By.CssSelector("div")); - Assert.AreEqual("child", child.GetAttribute("id")); + Assert.That(child.GetAttribute("id"), Is.EqualTo("child")); } [Test] @@ -342,7 +361,7 @@ public void FindMultipleElements() ReadOnlyCollection elements = elem.FindElements(By.PartialLinkText("link")); Assert.That(elements, Is.Not.Null); - Assert.AreEqual(6, elements.Count); + Assert.That(elements, Has.Exactly(6).Items); } [Test] @@ -353,7 +372,7 @@ public void LinkWithLeadingSpaces() IWebElement elem = driver.FindElement(By.Id("links")); IWebElement res = elem.FindElement(By.PartialLinkText("link with leading space")); - Assert.AreEqual("link with leading space", res.Text); + Assert.That(res.Text, Is.EqualTo("link with leading space")); } [Test] @@ -364,7 +383,7 @@ public void LinkWithTrailingSpace() IWebElement elem = driver.FindElement(By.Id("links")); IWebElement res = elem.FindElement(By.PartialLinkText("link with trailing space")); - Assert.AreEqual("link with trailing space", res.Text); + Assert.That(res.Text, Is.EqualTo("link with trailing space")); } [Test] @@ -374,7 +393,7 @@ public void ElementCanGetLinkByLinkTestIgnoringTrailingWhitespace() IWebElement elem = driver.FindElement(By.Id("links")); IWebElement link = elem.FindElement(By.LinkText("link with trailing space")); - Assert.AreEqual("linkWithTrailingSpace", link.GetAttribute("id")); + Assert.That(link.GetAttribute("id"), Is.EqualTo("linkWithTrailingSpace")); } } } diff --git a/dotnet/test/common/ClearTest.cs b/dotnet/test/common/ClearTest.cs index 9d31803834b633..d65a7f7e7a00ae 100644 --- a/dotnet/test/common/ClearTest.cs +++ b/dotnet/test/common/ClearTest.cs @@ -31,7 +31,7 @@ public void WritableTextInputShouldClear() driver.Url = readOnlyPage; IWebElement element = driver.FindElement(By.Id("writableTextInput")); element.Clear(); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); } [Test] @@ -42,7 +42,9 @@ public void TextInputShouldNotClearWhenDisabled() driver.Url = readOnlyPage; IWebElement element = driver.FindElement(By.Id("textInputNotEnabled")); Assert.That(element.Enabled, Is.False); - Assert.That(() => element.Clear(), Throws.InstanceOf()); + Assert.That( + () => element.Clear(), + Throws.InstanceOf()); } [Test] @@ -50,7 +52,9 @@ public void TextInputShouldNotClearWhenReadOnly() { driver.Url = readOnlyPage; IWebElement element = driver.FindElement(By.Id("readOnlyTextInput")); - Assert.That(() => element.Clear(), Throws.InstanceOf()); + Assert.That( + () => element.Clear(), + Throws.InstanceOf()); } [Test] @@ -59,7 +63,7 @@ public void WritableTextAreaShouldClear() driver.Url = readOnlyPage; IWebElement element = driver.FindElement(By.Id("writableTextArea")); element.Clear(); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); } [Test] @@ -77,7 +81,9 @@ public void TextAreaShouldNotClearWhenReadOnly() { driver.Url = readOnlyPage; IWebElement element = driver.FindElement(By.Id("textAreaReadOnly")); - Assert.That(() => element.Clear(), Throws.InstanceOf()); + Assert.That( + () => element.Clear(), + Throws.InstanceOf()); } [Test] @@ -86,7 +92,8 @@ public void ContentEditableAreaShouldClear() driver.Url = readOnlyPage; IWebElement element = driver.FindElement(By.Id("content-editable")); element.Clear(); - Assert.AreEqual(string.Empty, element.Text); + + Assert.That(element.Text, Is.Empty); } [Test] @@ -195,9 +202,10 @@ private void ShouldBeAbleToClearInput(By locator, string oldValue, string cleare { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("inputs.html"); IWebElement element = driver.FindElement(locator); - Assert.AreEqual(oldValue, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(oldValue)); + element.Clear(); - Assert.AreEqual(clearedValue, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(clearedValue)); } } } diff --git a/dotnet/test/common/ClickScrollingTest.cs b/dotnet/test/common/ClickScrollingTest.cs index 92489f1c6d9434..d5a73aed7c33c6 100644 --- a/dotnet/test/common/ClickScrollingTest.cs +++ b/dotnet/test/common/ClickScrollingTest.cs @@ -44,7 +44,7 @@ public void ClickingOnAnchorScrollsPage() // Sometimes JS is returning a double object result = ((IJavaScriptExecutor)driver).ExecuteScript(scrollScript); - var yOffset = Convert.ChangeType(result, typeof(long)); + var yOffset = Convert.ToInt64(result); //Focusing on to click, but not actually following, //the link will scroll it in to view, which is a few pixels further than 0 @@ -69,7 +69,8 @@ public void ShouldBeAbleToClickOnAnElementHiddenByOverflow() IWebElement link = driver.FindElement(By.Id("line8")); // This used to throw a MoveTargetOutOfBoundsException - we don't expect it to link.Click(); - Assert.AreEqual("line8", driver.FindElement(By.Id("clicked")).Text); + + Assert.That(driver.FindElement(By.Id("clicked")).Text, Is.EqualTo("line8")); } [Test] @@ -109,7 +110,7 @@ public void ShouldNotScrollOverflowElementsWhichAreVisible() IWebElement item = list.FindElement(By.Id("desired")); item.Click(); long yOffset = (long)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].scrollTop;", list); - Assert.AreEqual(0, yOffset, "Should not have scrolled"); + Assert.That(yOffset, Is.Zero, "Should not have scrolled"); } @@ -122,7 +123,7 @@ public void ShouldNotScrollIfAlreadyScrolledAndElementIsInView() driver.FindElement(By.Id("button2")).Click(); double scrollTop = GetScrollTop(); driver.FindElement(By.Id("button1")).Click(); - Assert.AreEqual(scrollTop, GetScrollTop()); + Assert.That(GetScrollTop(), Is.EqualTo(scrollTop)); } [Test] @@ -139,7 +140,7 @@ public void ShouldScrollOverflowElementsIfClickPointIsOutOfViewButElementIsInVie { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("scroll5.html"); driver.FindElement(By.Id("inner")).Click(); - Assert.AreEqual("clicked", driver.FindElement(By.Id("clicked")).Text); + Assert.That(driver.FindElement(By.Id("clicked")).Text, Is.EqualTo("clicked")); } [Test] @@ -238,7 +239,7 @@ public void ShouldNotScrollWhenGettingElementSize() driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("scroll3.html"); double scrollTop = GetScrollTop(); Size ignoredSize = driver.FindElement(By.Id("button1")).Size; - Assert.AreEqual(scrollTop, GetScrollTop()); + Assert.That(GetScrollTop(), Is.EqualTo(scrollTop)); } [Test] @@ -266,7 +267,7 @@ public void ShouldBeAbleToClickInlineTextElementWithChildElementAfterScrolling() IWebElement label = driver.FindElement(By.Id("wrapper")); label.Click(); IWebElement checkbox = driver.FindElement(By.Id("check")); - Assert.IsFalse(checkbox.Selected, "Checkbox should not be selected after click"); + Assert.That(checkbox.Selected, Is.False, "Checkbox should not be selected after click"); } private double GetScrollTop() diff --git a/dotnet/test/common/ClickTest.cs b/dotnet/test/common/ClickTest.cs index 5a5f9cd06a4fa2..20739bbe3d1140 100644 --- a/dotnet/test/common/ClickTest.cs +++ b/dotnet/test/common/ClickTest.cs @@ -43,7 +43,7 @@ public void CanClickOnALinkAndFollowIt() { driver.FindElement(By.Id("normal")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -63,7 +63,7 @@ public void CanClickOnAnAnchorAndNotReloadThePage() bool samePage = (bool)((IJavaScriptExecutor)driver).ExecuteScript("return document.latch"); - Assert.AreEqual(true, samePage, "Latch was reset"); + Assert.That(samePage, Is.True, "Latch was reset"); } [Test] @@ -115,7 +115,7 @@ public void CanClickOnAnElementWithTopSetToANegativeNumber() driver.FindElement(By.Name("btn")).Click(); string log = driver.FindElement(By.Id("log")).Text; - Assert.AreEqual("click", log); + Assert.That(log, Is.EqualTo("click")); } [Test] @@ -136,7 +136,7 @@ public void ShouldSetRelatedTargetForMouseOver() } else { - Assert.AreEqual("parent matches? true", log); + Assert.That(log, Is.EqualTo("parent matches? true")); } } @@ -145,7 +145,7 @@ public void ShouldClickOnFirstBoundingClientRectWithNonZeroSize() { driver.FindElement(By.Id("twoClientRects")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -158,7 +158,7 @@ public void ShouldOnlyFollowHrefOnce() driver.FindElement(By.Id("new-window")).Click(); WaitFor(() => { return driver.WindowHandles.Count >= windowHandlesBefore + 1; }, "Window handles was not " + (windowHandlesBefore + 1).ToString()); - Assert.AreEqual(windowHandlesBefore + 1, driver.WindowHandles.Count); + Assert.That(driver.WindowHandles, Has.Exactly(windowHandlesBefore + 1).Items); } [Test] @@ -176,7 +176,7 @@ public void CanClickOnALinkWithEnclosedImage() { driver.FindElement(By.Id("link-with-enclosed-image")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -184,7 +184,7 @@ public void CanClickOnAnImageEnclosedInALink() { driver.FindElement(By.Id("link-with-enclosed-image")).FindElement(By.TagName("img")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -192,7 +192,7 @@ public void CanClickOnALinkThatContainsTextWrappedInASpan() { driver.FindElement(By.Id("link-with-enclosed-span")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -201,7 +201,7 @@ public void CanClickOnALinkThatContainsEmbeddedBlockElements() { driver.FindElement(By.Id("embeddedBlock")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -209,7 +209,7 @@ public void CanClickOnAnElementEnclosedInALink() { driver.FindElement(By.Id("link-with-enclosed-span")).FindElement(By.TagName("span")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -287,7 +287,7 @@ public void ShouldBeAbleToClickOnRightToLeftLanguageLink() element.Click(); WaitFor(() => driver.Title == "clicks", "Expected title to be 'clicks'"); - Assert.AreEqual("clicks", driver.Title); + Assert.That(driver.Title, Is.EqualTo("clicks")); } [Test] @@ -298,7 +298,7 @@ public void ShouldBeAbleToClickOnLinkInAbsolutelyPositionedFooter() driver.FindElement(By.Id("link")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -309,7 +309,7 @@ public void ShouldBeAbleToClickOnLinkInAbsolutelyPositionedFooterInQuirksMode() driver.FindElement(By.Id("link")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -321,7 +321,7 @@ public void ShouldBeAbleToClickOnLinksWithNoHrefAttribute() element.Click(); WaitFor(() => driver.Title == "Changed", "Expected title to be 'Changed'"); - Assert.AreEqual("Changed", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Changed")); } [Test] @@ -332,7 +332,7 @@ public void ShouldBeAbleToClickOnALinkThatWrapsToTheNextLine() driver.FindElement(By.Id("link")).Click(); WaitFor(() => driver.Title == "Submitted Successfully!", "Expected title to be 'Submitted Successfully!'"); - Assert.AreEqual("Submitted Successfully!", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Submitted Successfully!")); } [Test] @@ -343,7 +343,7 @@ public void ShouldBeAbleToClickOnASpanThatWrapsToTheNextLine() driver.FindElement(By.Id("span")).Click(); WaitFor(() => driver.Title == "Submitted Successfully!", "Expected title to be 'Submitted Successfully!'"); - Assert.AreEqual("Submitted Successfully!", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Submitted Successfully!")); } [Test] @@ -364,7 +364,7 @@ public void ShouldBeAbleToClickLinkContainingLineBreak() driver.Url = simpleTestPage; driver.FindElement(By.Id("multilinelink")).Click(); WaitFor(() => { return driver.Title == "We Arrive Here"; }, "Browser title was not 'We Arrive Here'"); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } } } diff --git a/dotnet/test/common/ContentEditableTest.cs b/dotnet/test/common/ContentEditableTest.cs index f927694ba078e5..73f1e2c3cc20f6 100644 --- a/dotnet/test/common/ContentEditableTest.cs +++ b/dotnet/test/common/ContentEditableTest.cs @@ -63,7 +63,7 @@ public void NonPrintableCharactersShouldWorkWithContentEditableOrDesignModeSet() element.SendKeys("Dishy" + Keys.Backspace + Keys.Left + Keys.Left); element.SendKeys(Keys.Left + Keys.Left + "F" + Keys.Delete + Keys.End + "ee!"); - Assert.AreEqual("Fishee!", element.Text); + Assert.That(element.Text, Is.EqualTo("Fishee!")); } [Test] @@ -137,7 +137,7 @@ public void AppendsTextToEndOfContentEditableWithMultipleTextNodes() IWebElement input = driver.FindElement(By.Id("editable")); input.SendKeys(", world!"); WaitFor(() => input.Text != "Why hello", "Text remained the original text"); - Assert.AreEqual("Why hello, world!", input.Text); + Assert.That(input.Text, Is.EqualTo("Why hello, world!")); } } } diff --git a/dotnet/test/common/CookieImplementationTest.cs b/dotnet/test/common/CookieImplementationTest.cs index 846d1a832bdeb2..a329895d79b7d4 100644 --- a/dotnet/test/common/CookieImplementationTest.cs +++ b/dotnet/test/common/CookieImplementationTest.cs @@ -54,7 +54,7 @@ public void ShouldGetCookieByName() ((IJavaScriptExecutor)driver).ExecuteScript("document.cookie = arguments[0] + '=set';", key); Cookie cookie = driver.Manage().Cookies.GetCookieNamed(key); - Assert.AreEqual("set", cookie.Value); + Assert.That(cookie.Value, Is.EqualTo("set")); } [Test] @@ -73,7 +73,7 @@ public void ShouldBeAbleToAddCookie() driver.Manage().Cookies.AddCookie(cookie); AssertCookieHasValue(key, value); - Assert.That(driver.Manage().Cookies.AllCookies.Contains(cookie), "Cookie was not added successfully"); + Assert.That(driver.Manage().Cookies.AllCookies, Does.Contain(cookie), "Cookie was not added successfully"); } [Test] @@ -101,7 +101,7 @@ public void GetAllCookies() driver.Url = simpleTestPage; cookies = driver.Manage().Cookies.AllCookies; - Assert.AreEqual(count + 2, cookies.Count); + Assert.That(cookies, Has.Count.EqualTo(count + 2)); Assert.That(cookies, Does.Contain(one)); Assert.That(cookies, Does.Contain(two)); @@ -389,7 +389,7 @@ public void ShouldWalkThePathToDeleteACookie() Assert.That(driver.Manage().Cookies.GetCookieNamed("rodent"), Is.Null); ReadOnlyCollection cookies = driver.Manage().Cookies.AllCookies; - Assert.That(cookies, Has.Count.EqualTo(2)); + Assert.That(cookies, Has.Exactly(2).Items); Assert.That(cookies, Does.Contain(cookie1)); Assert.That(cookies, Does.Contain(cookie3)); @@ -450,7 +450,7 @@ public void CookieEqualityAfterSetAndGet() Assert.That(retrievedCookie, Is.Not.Null); //Cookie.equals only compares name, domain and path - Assert.AreEqual(cookie1, retrievedCookie); + Assert.That(retrievedCookie, Is.EqualTo(cookie1)); } [Test] @@ -472,7 +472,7 @@ public void ShouldRetainCookieExpiry() Cookie retrieved = options.Cookies.GetCookieNamed("fish"); Assert.That(retrieved, Is.Not.Null); - Assert.AreEqual(addCookie.Expiry, retrieved.Expiry, "Cookies are not equal"); + Assert.That(retrieved.Expiry, Is.EqualTo(addCookie.Expiry), "Cookies are not equal"); } [Test] @@ -713,7 +713,7 @@ public void ShouldAddCookieToCurrentDomainAndPath() Cookie cookie = new Cookie("Homer", "Simpson", this.hostname, "/" + EnvironmentManager.Instance.UrlBuilder.Path, null); options.Cookies.AddCookie(cookie); ReadOnlyCollection cookies = options.Cookies.AllCookies; - Assert.That(cookies.Contains(cookie), "Valid cookie was not returned"); + Assert.That(cookies, Does.Contain(cookie), "Valid cookie was not returned"); } [Test] @@ -727,7 +727,10 @@ public void ShouldNotShowCookieAddedToDifferentDomain() driver.Url = macbethPage; IOptions options = driver.Manage(); Cookie cookie = new Cookie("Bart", "Simpson", EnvironmentManager.Instance.UrlBuilder.HostName + ".com", EnvironmentManager.Instance.UrlBuilder.Path, null); - Assert.That(() => options.Cookies.AddCookie(cookie), Throws.InstanceOf().Or.InstanceOf()); + Assert.That( + () => options.Cookies.AddCookie(cookie), + Throws.InstanceOf().Or.InstanceOf()); + ReadOnlyCollection cookies = options.Cookies.AllCookies; Assert.That(cookies, Does.Not.Contain(cookie), "Invalid cookie was returned"); } @@ -771,7 +774,9 @@ public void ShouldThrowExceptionWhenAddingCookieToCookieAverseDocument() IOptions options = driver.Manage(); Cookie cookie = new Cookie("question", "dunno"); - Assert.That(() => options.Cookies.AddCookie(cookie), Throws.InstanceOf().Or.InstanceOf()); + Assert.That( + () => options.Cookies.AddCookie(cookie), + Throws.InstanceOf().Or.InstanceOf()); } [Test] @@ -803,7 +808,7 @@ public void ShouldAddCookieToCurrentDomain() Cookie cookie = new Cookie("Marge", "Simpson", "/"); options.Cookies.AddCookie(cookie); ReadOnlyCollection cookies = options.Cookies.AllCookies; - Assert.That(cookies.Contains(cookie), "Valid cookie was not returned"); + Assert.That(cookies, Does.Contain(cookie), "Valid cookie was not returned"); } [Test] @@ -824,7 +829,7 @@ public void ShouldDeleteCookie() options.Cookies.DeleteCookie(cookieToDelete); ReadOnlyCollection cookies2 = options.Cookies.AllCookies; Assert.That(cookies2, Does.Not.Contain(cookieToDelete), "Cookie was not deleted successfully"); - Assert.That(cookies2.Contains(cookieToKeep), "Valid cookie was not returned"); + Assert.That(cookies2, Does.Contain(cookieToKeep), "Valid cookie was not returned"); } ////////////////////////////////////////////// @@ -924,21 +929,21 @@ private string GetDocumentCookieOrNull() private void AssertNoCookiesArePresent() { - Assert.That(driver.Manage().Cookies.AllCookies.Count, Is.EqualTo(0), "Cookies were not empty"); + Assert.That(driver.Manage().Cookies.AllCookies, Is.Empty, "Cookies were not empty"); string documentCookie = GetDocumentCookieOrNull(); if (documentCookie != null) { - Assert.AreEqual(string.Empty, documentCookie, "Cookies were not empty"); + Assert.That(documentCookie, Is.Empty, "Cookies were not empty"); } } private void AssertSomeCookiesArePresent() { - Assert.That(driver.Manage().Cookies.AllCookies.Count, Is.Not.EqualTo(0), "Cookies were empty"); + Assert.That(driver.Manage().Cookies.AllCookies, Is.Not.Empty, "Cookies were empty"); String documentCookie = GetDocumentCookieOrNull(); if (documentCookie != null) { - Assert.AreNotEqual(string.Empty, documentCookie, "Cookies were empty"); + Assert.That(documentCookie, Is.Not.Empty, "Cookies were empty"); } } @@ -964,7 +969,7 @@ private void AssertCookieIsPresentWithName(string key) private void AssertCookieHasValue(string key, string value) { - Assert.AreEqual(value, driver.Manage().Cookies.GetCookieNamed(key).Value, "Cookie had wrong value"); + Assert.That(driver.Manage().Cookies.GetCookieNamed(key).Value, Is.EqualTo(value), "Cookie had wrong value"); string documentCookie = GetDocumentCookieOrNull(); if (documentCookie != null) { diff --git a/dotnet/test/common/CorrectEventFiringTest.cs b/dotnet/test/common/CorrectEventFiringTest.cs index d30e205b485fdd..6e1da8e0313bd1 100644 --- a/dotnet/test/common/CorrectEventFiringTest.cs +++ b/dotnet/test/common/CorrectEventFiringTest.cs @@ -158,7 +158,7 @@ public void ShouldIssueMouseDownEvents() driver.FindElement(By.Id("mousedown")).Click(); String result = driver.FindElement(By.Id("result")).Text; - Assert.AreEqual(result, "mouse down"); + Assert.That(result, Is.EqualTo("mouse down")); } [Test] @@ -168,7 +168,7 @@ public void ShouldIssueClickEvents() driver.FindElement(By.Id("mouseclick")).Click(); String result = driver.FindElement(By.Id("result")).Text; - Assert.AreEqual("mouse click", result); + Assert.That(result, Is.EqualTo("mouse click")); } [Test] @@ -178,7 +178,7 @@ public void ShouldIssueMouseUpEvents() driver.FindElement(By.Id("mouseup")).Click(); String result = driver.FindElement(By.Id("result")).Text; - Assert.AreEqual(result, "mouse up"); + Assert.That(result, Is.EqualTo("mouse up")); } [Test] @@ -188,7 +188,7 @@ public void MouseEventsShouldBubbleUpToContainingElements() driver.FindElement(By.Id("child")).Click(); String result = driver.FindElement(By.Id("result")).Text; - Assert.AreEqual(result, "mouse down"); + Assert.That(result, Is.EqualTo("mouse down")); } [Test] @@ -205,9 +205,9 @@ public void ShouldEmitOnChangeEventsWhenSelectingElements() IWebElement bar = allOptions[1]; foo.Click(); - Assert.AreEqual(driver.FindElement(By.Id("result")).Text, initialTextValue); + Assert.That(driver.FindElement(By.Id("result")).Text, Is.EqualTo(initialTextValue)); bar.Click(); - Assert.AreEqual(driver.FindElement(By.Id("result")).Text, "bar"); + Assert.That(driver.FindElement(By.Id("result")).Text, Is.EqualTo("bar")); } [Test] @@ -221,9 +221,9 @@ public void ShouldEmitOnClickEventsWhenSelectingElements() IWebElement bar = allOptions[1]; foo.Click(); - Assert.AreEqual(driver.FindElement(By.Id("result")).Text, "foo"); + Assert.That(driver.FindElement(By.Id("result")).Text, Is.EqualTo("foo")); bar.Click(); - Assert.AreEqual(driver.FindElement(By.Id("result")).Text, "bar"); + Assert.That(driver.FindElement(By.Id("result")).Text, Is.EqualTo("bar")); } [Test] @@ -234,7 +234,7 @@ public void ShouldEmitOnChangeEventsWhenChangingTheStateOfACheckbox() IWebElement checkbox = driver.FindElement(By.Id("checkbox")); checkbox.Click(); - Assert.AreEqual(driver.FindElement(By.Id("result")).Text, "checkbox thing"); + Assert.That(driver.FindElement(By.Id("result")).Text, Is.EqualTo("checkbox thing")); } [Test] @@ -245,7 +245,7 @@ public void ShouldEmitClickEventWhenClickingOnATextInputElement() IWebElement clicker = driver.FindElement(By.Id("clickField")); clicker.Click(); - Assert.AreEqual(clicker.GetAttribute("value"), "Clicked"); + Assert.That(clicker.GetAttribute("value"), Is.EqualTo("Clicked")); } [Test] @@ -269,7 +269,7 @@ public void ClearingAnElementShouldCauseTheOnChangeHandlerToFire() element.Clear(); IWebElement result = driver.FindElement(By.Id("result")); - Assert.AreEqual("Cleared", result.Text.Trim()); + Assert.That(result.Text.Trim(), Is.EqualTo("Cleared")); } [Test] @@ -416,7 +416,7 @@ public void UploadingFileShouldFireOnChangeEvent() driver.Url = formsPage; IWebElement uploadElement = driver.FindElement(By.Id("upload")); IWebElement result = driver.FindElement(By.Id("fileResults")); - Assert.AreEqual(string.Empty, result.Text); + Assert.That(result.Text, Is.Empty); string filePath = System.IO.Path.Combine(EnvironmentManager.Instance.CurrentDirectory, "test.txt"); System.IO.FileInfo inputFile = new System.IO.FileInfo(filePath); @@ -429,7 +429,7 @@ public void UploadingFileShouldFireOnChangeEvent() driver.FindElement(By.Id("id-name1")).Click(); inputFile.Delete(); - Assert.AreEqual("changed", result.Text); + Assert.That(result.Text, Is.EqualTo("changed")); } [Test] @@ -445,8 +445,8 @@ public void ShouldReportTheXAndYCoordinatesWhenClicking() string clientY = driver.FindElement(By.Id("clientY")).Text; driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(0); - Assert.AreNotEqual("0", clientX); - Assert.AreNotEqual("0", clientY); + Assert.That(clientX, Is.Not.EqualTo("0")); + Assert.That(clientY, Is.Not.EqualTo("0")); } [Test] @@ -487,7 +487,7 @@ public void ClickAnElementThatDisappear() driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("click_tests/disappearing_element.html"); driver.FindElement(By.Id("over")).Click(); - Assert.That(driver.FindElement(By.Id("log")).Text.StartsWith(expectedLogBuilder.ToString())); + Assert.That(driver.FindElement(By.Id("log")).Text, Does.StartWith(expectedLogBuilder.ToString())); } private void AssertEventNotFired(string eventName) diff --git a/dotnet/test/common/DownloadsTest.cs b/dotnet/test/common/DownloadsTest.cs index b03d44d7d8f8d5..0043316b2025fe 100644 --- a/dotnet/test/common/DownloadsTest.cs +++ b/dotnet/test/common/DownloadsTest.cs @@ -76,7 +76,7 @@ public void CanDownloadFile() ((RemoteWebDriver)driver).DownloadFile(fileName, targetDirectory); string fileContent = File.ReadAllText(Path.Combine(targetDirectory, fileName)); - Assert.AreEqual("Hello, World!", fileContent.Trim()); + Assert.That(fileContent.Trim(), Is.EqualTo("Hello, World!")); Directory.Delete(targetDirectory, recursive: true); } @@ -90,7 +90,7 @@ public void CanDeleteFiles() ((RemoteWebDriver)driver).DeleteDownloadableFiles(); IReadOnlyList names = ((RemoteWebDriver)driver).GetDownloadableFiles(); - Assert.IsEmpty(names, "The names list should be empty."); + Assert.That(names, Is.Empty, "The names list should be empty."); } private void DownloadWithBrowser() diff --git a/dotnet/test/common/DriverElementFindingTest.cs b/dotnet/test/common/DriverElementFindingTest.cs index f491f4857335b1..6c44b9a4602e9e 100644 --- a/dotnet/test/common/DriverElementFindingTest.cs +++ b/dotnet/test/common/DriverElementFindingTest.cs @@ -93,7 +93,7 @@ public void ShouldFindElementsById() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.Id("test_id")); - Assert.That(elements.Count, Is.EqualTo(2)); + Assert.That(elements, Has.Count.EqualTo(2)); } [Test] @@ -101,7 +101,7 @@ public void ShouldFindElementsByLinkText() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.LinkText("hello world")); - Assert.That(elements.Count, Is.EqualTo(12)); + Assert.That(elements, Has.Count.EqualTo(12)); } [Test] @@ -109,7 +109,7 @@ public void ShouldFindElementsByName() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.Name("form1")); - Assert.That(elements.Count, Is.EqualTo(4)); + Assert.That(elements, Has.Count.EqualTo(4)); } [Test] @@ -117,7 +117,7 @@ public void ShouldFindElementsByXPath() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.XPath("//a")); - Assert.That(elements.Count, Is.EqualTo(12)); + Assert.That(elements, Has.Count.EqualTo(12)); } [Test] @@ -125,7 +125,7 @@ public void ShouldFindElementsByClassName() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.ClassName("one")); - Assert.That(elements.Count, Is.EqualTo(3)); + Assert.That(elements, Has.Count.EqualTo(3)); } [Test] @@ -133,7 +133,7 @@ public void ShouldFindElementsByPartialLinkText() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.PartialLinkText("world")); - Assert.That(elements.Count, Is.EqualTo(12)); + Assert.That(elements, Has.Count.EqualTo(12)); } [Test] @@ -141,7 +141,7 @@ public void ShouldFindElementsByTagName() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.TagName("a")); - Assert.That(elements.Count, Is.EqualTo(12)); + Assert.That(elements, Has.Count.EqualTo(12)); } #endregion } diff --git a/dotnet/test/common/ElementAttributeTest.cs b/dotnet/test/common/ElementAttributeTest.cs index 43a1be4a063a99..9eb59cfff2f5a4 100644 --- a/dotnet/test/common/ElementAttributeTest.cs +++ b/dotnet/test/common/ElementAttributeTest.cs @@ -52,7 +52,7 @@ public void ShouldReturnAnAbsoluteUrlWhenGettingSrcAttributeOfAValidImgTag() driver.Url = simpleTestPage; IWebElement img = driver.FindElement(By.Id("validImgTag")); string attribute = img.GetAttribute("src"); - Assert.AreEqual(EnvironmentManager.Instance.UrlBuilder.WhereIs("icon.gif"), attribute); + Assert.That(attribute, Is.EqualTo(EnvironmentManager.Instance.UrlBuilder.WhereIs("icon.gif"))); } [Test] @@ -61,7 +61,7 @@ public void ShouldReturnAnAbsoluteUrlWhenGettingHrefAttributeOfAValidAnchorTag() driver.Url = simpleTestPage; IWebElement img = driver.FindElement(By.Id("validAnchorTag")); string attribute = img.GetAttribute("href"); - Assert.AreEqual(EnvironmentManager.Instance.UrlBuilder.WhereIs("icon.gif"), attribute); + Assert.That(attribute, Is.EqualTo(EnvironmentManager.Instance.UrlBuilder.WhereIs("icon.gif"))); } @@ -70,7 +70,7 @@ public void ShouldReturnEmptyAttributeValuesWhenPresentAndTheValueIsActuallyEmpt { driver.Url = simpleTestPage; IWebElement body = driver.FindElement(By.XPath("//body")); - Assert.AreEqual(string.Empty, body.GetAttribute("style")); + Assert.That(body.GetAttribute("style"), Is.Empty); } [Test] @@ -93,7 +93,7 @@ public void ShouldReturnTheValueOfTheIndexAttrbuteEvenIfItIsMissing() IWebElement multiSelect = driver.FindElement(By.Id("multi")); ReadOnlyCollection options = multiSelect.FindElements(By.TagName("option")); - Assert.AreEqual("1", options[1].GetAttribute("index")); + Assert.That(options[1].GetAttribute("index"), Is.EqualTo("1")); } @@ -133,7 +133,7 @@ public void ShouldThrowExceptionIfSendingKeysToElementDisabledUsingRandomDisable disabledTextElement1.SendKeys("foo"); }, Throws.TypeOf()); - Assert.AreEqual(string.Empty, disabledTextElement1.Text); + Assert.That(disabledTextElement1.Text, Is.Empty); IWebElement disabledTextElement2 = driver.FindElement(By.Id("disabledTextElement2")); @@ -141,7 +141,7 @@ public void ShouldThrowExceptionIfSendingKeysToElementDisabledUsingRandomDisable () => disabledTextElement2.SendKeys("bar"), Throws.TypeOf()); - Assert.AreEqual(string.Empty, disabledTextElement2.Text); + Assert.That(disabledTextElement2.Text, Is.Empty); } [Test] @@ -169,9 +169,9 @@ public void ShouldReturnTheValueOfCheckedForACheckboxOnlyIfItIsChecked() { driver.Url = formsPage; IWebElement checkbox = driver.FindElement(By.XPath("//input[@id='checky']")); - Assert.AreEqual(null, checkbox.GetAttribute("checked")); + Assert.That(checkbox.GetAttribute("checked"), Is.Null); checkbox.Click(); - Assert.AreEqual("true", checkbox.GetAttribute("checked")); + Assert.That(checkbox.GetAttribute("checked"), Is.EqualTo("true")); } [Test] @@ -182,14 +182,14 @@ public void ShouldOnlyReturnTheValueOfSelectedForRadioButtonsIfItIsSet() IWebElement initiallyNotSelected = driver.FindElement(By.Id("peas")); IWebElement initiallySelected = driver.FindElement(By.Id("cheese_and_peas")); - Assert.AreEqual(null, neverSelected.GetAttribute("selected"), "false"); - Assert.AreEqual(null, initiallyNotSelected.GetAttribute("selected"), "false"); - Assert.AreEqual("true", initiallySelected.GetAttribute("selected"), "true"); + Assert.That(neverSelected.GetAttribute("selected"), Is.Null, "false"); + Assert.That(initiallyNotSelected.GetAttribute("selected"), Is.Null, "false"); + Assert.That(initiallySelected.GetAttribute("selected"), Is.EqualTo("true"), "true"); initiallyNotSelected.Click(); - Assert.AreEqual(null, neverSelected.GetAttribute("selected")); - Assert.AreEqual("true", initiallyNotSelected.GetAttribute("selected")); - Assert.AreEqual(null, initiallySelected.GetAttribute("selected")); + Assert.That(neverSelected.GetAttribute("selected"), Is.Null); + Assert.That(initiallyNotSelected.GetAttribute("selected"), Is.EqualTo("true")); + Assert.That(initiallySelected.GetAttribute("selected"), Is.Null); } [Test] @@ -202,8 +202,8 @@ public void ShouldReturnTheValueOfSelectedForOptionsOnlyIfTheyAreSelected() IWebElement two = options[1]; Assert.That(one.Selected, Is.True); Assert.That(two.Selected, Is.False); - Assert.AreEqual("true", one.GetAttribute("selected")); - Assert.AreEqual(null, two.GetAttribute("selected")); + Assert.That(one.GetAttribute("selected"), Is.EqualTo("true")); + Assert.That(two.GetAttribute("selected"), Is.Null); } [Test] @@ -214,7 +214,7 @@ public void ShouldReturnValueOfClassAttributeOfAnElement() IWebElement heading = driver.FindElement(By.XPath("//h1")); String className = heading.GetAttribute("class"); - Assert.AreEqual("header", className); + Assert.That(className, Is.EqualTo("header")); } [Test] @@ -224,7 +224,7 @@ public void ShouldReturnTheContentsOfATextAreaAsItsValue() String value = driver.FindElement(By.Id("withText")).GetAttribute("value"); - Assert.AreEqual("Example text", value); + Assert.That(value, Is.EqualTo("Example text")); } [Test] @@ -260,7 +260,7 @@ public void ShouldReturnHiddenTextForTextContentAttribute() IWebElement element = driver.FindElement(By.Id("hiddenline")); string textContent = element.GetAttribute("textContent"); - Assert.AreEqual("A hidden line of text", textContent); + Assert.That(textContent, Is.EqualTo("A hidden line of text")); } [Test] @@ -268,7 +268,7 @@ public void ShouldGetNumericAtribute() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.Id("withText")); - Assert.AreEqual("5", element.GetAttribute("rows")); + Assert.That(element.GetAttribute("rows"), Is.EqualTo("5")); } [Test] @@ -288,11 +288,11 @@ public void ShouldCorrectlyReportValueOfColspan() IWebElement th1 = driver.FindElement(By.Id("th1")); IWebElement td2 = driver.FindElement(By.Id("td2")); - Assert.AreEqual("th1", th1.GetAttribute("id"), "th1 id"); - Assert.AreEqual("3", th1.GetAttribute("colspan"), "th1 colspan should be 3"); + Assert.That(th1.GetAttribute("id"), Is.EqualTo("th1"), "th1 id"); + Assert.That(th1.GetAttribute("colspan"), Is.EqualTo("3"), "th1 colspan should be 3"); - Assert.AreEqual("td2", td2.GetAttribute("id"), "td2 id"); - Assert.AreEqual("2", td2.GetAttribute("colspan"), "td2 colspan should be 2"); + Assert.That(td2.GetAttribute("id"), Is.EqualTo("td2"), "td2 id"); + Assert.That(td2.GetAttribute("colspan"), Is.EqualTo("2"), "td2 colspan should be 2"); } // This is a test-case re-creating issue 900. @@ -325,7 +325,7 @@ public void GetAttributeDoesNotReturnAnObjectForSvgProperties() driver.Url = svgPage; IWebElement svgElement = driver.FindElement(By.Id("rotate")); - Assert.AreEqual("rotate(30)", svgElement.GetAttribute("transform")); + Assert.That(svgElement.GetAttribute("transform"), Is.EqualTo("rotate(30)")); } [Test] @@ -333,9 +333,9 @@ public void CanRetrieveTheCurrentValueOfATextFormField_textInput() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.Id("working")); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); element.SendKeys("hello world"); - Assert.AreEqual("hello world", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("hello world")); } [Test] @@ -343,9 +343,9 @@ public void CanRetrieveTheCurrentValueOfATextFormField_emailInput() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.Id("email")); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); element.SendKeys("hello world"); - Assert.AreEqual("hello world", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("hello world")); } [Test] @@ -353,9 +353,9 @@ public void CanRetrieveTheCurrentValueOfATextFormField_textArea() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.Id("emptyTextArea")); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); element.SendKeys("hello world"); - Assert.AreEqual("hello world", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("hello world")); } [Test] @@ -373,15 +373,15 @@ public void ShouldReturnTrueForPresentBooleanAttributes() { driver.Url = booleanAttributes; IWebElement element1 = driver.FindElement(By.Id("emailRequired")); - Assert.AreEqual("true", element1.GetAttribute("required")); + Assert.That(element1.GetAttribute("required"), Is.EqualTo("true")); IWebElement element2 = driver.FindElement(By.Id("emptyTextAreaRequired")); - Assert.AreEqual("true", element2.GetAttribute("required")); + Assert.That(element2.GetAttribute("required"), Is.EqualTo("true")); IWebElement element3 = driver.FindElement(By.Id("inputRequired")); - Assert.AreEqual("true", element3.GetAttribute("required")); + Assert.That(element3.GetAttribute("required"), Is.EqualTo("true")); IWebElement element4 = driver.FindElement(By.Id("textAreaRequired")); - Assert.AreEqual("true", element4.GetAttribute("required")); + Assert.That(element4.GetAttribute("required"), Is.EqualTo("true")); IWebElement element5 = driver.FindElement(By.Id("unwrappable")); - Assert.AreEqual("true", element5.GetAttribute("nowrap")); + Assert.That(element5.GetAttribute("nowrap"), Is.EqualTo("true")); } [Test] @@ -389,7 +389,7 @@ public void MultipleAttributeShouldBeNullWhenNotSet() { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithoutMultiple")); - Assert.AreEqual(null, element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.Null); } [Test] @@ -397,7 +397,7 @@ public void MultipleAttributeShouldBeTrueWhenSet() { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithMultipleEqualsMultiple")); - Assert.AreEqual("true", element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.EqualTo("true")); } [Test] @@ -405,7 +405,7 @@ public void MultipleAttributeShouldBeTrueWhenSelectHasMultipleWithValueAsBlank() { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithEmptyStringMultiple")); - Assert.AreEqual("true", element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.EqualTo("true")); } [Test] @@ -413,7 +413,7 @@ public void MultipleAttributeShouldBeTrueWhenSelectHasMultipleWithoutAValue() { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithMultipleWithoutValue")); - Assert.AreEqual("true", element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.EqualTo("true")); } [Test] @@ -421,7 +421,7 @@ public void MultipleAttributeShouldBeTrueWhenSelectHasMultipleWithValueAsSomethi { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithRandomMultipleValue")); - Assert.AreEqual("true", element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.EqualTo("true")); } [Test] @@ -429,7 +429,7 @@ public void GetAttributeOfUserDefinedProperty() { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("userDefinedProperty.html"); IWebElement element = driver.FindElement(By.Id("d")); - Assert.AreEqual("sampleValue", element.GetAttribute("dynamicProperty")); + Assert.That(element.GetAttribute("dynamicProperty"), Is.EqualTo("sampleValue")); } [Test] @@ -440,7 +440,7 @@ public void ShouldReturnValueOfClassAttributeOfAnElementAfterSwitchingIFrame() IWebElement wallace = driver.FindElement(By.XPath("//div[@id='wallace']")); String className = wallace.GetAttribute("class"); - Assert.AreEqual("gromit", className); + Assert.That(className, Is.EqualTo("gromit")); } } } diff --git a/dotnet/test/common/ElementElementFindingTest.cs b/dotnet/test/common/ElementElementFindingTest.cs index 67cf47bbe8f92d..26d75b62793740 100644 --- a/dotnet/test/common/ElementElementFindingTest.cs +++ b/dotnet/test/common/ElementElementFindingTest.cs @@ -101,7 +101,7 @@ public void ShouldFindElementsById() driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Name("form2")); ReadOnlyCollection children = parent.FindElements(By.Id("2")); - Assert.That(children.Count, Is.EqualTo(2)); + Assert.That(children, Has.Count.EqualTo(2)); } [Test] @@ -110,7 +110,7 @@ public void ShouldFindElementsByLinkText() driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Name("div1")); ReadOnlyCollection children = parent.FindElements(By.PartialLinkText("hello world")); - Assert.That(children.Count, Is.EqualTo(2)); + Assert.That(children, Has.Count.EqualTo(2)); Assert.That(children[0].Text, Is.EqualTo("hello world")); Assert.That(children[1].Text, Is.EqualTo("hello world")); } @@ -121,7 +121,7 @@ public void ShouldFindElementsByName() driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Name("form2")); ReadOnlyCollection children = parent.FindElements(By.Name("selectomatic")); - Assert.That(children.Count, Is.EqualTo(2)); + Assert.That(children, Has.Count.EqualTo(2)); } [Test] @@ -130,7 +130,7 @@ public void ShouldFindElementsByXPath() driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Name("classes")); ReadOnlyCollection children = parent.FindElements(By.XPath("span")); - Assert.That(children.Count, Is.EqualTo(3)); + Assert.That(children, Has.Count.EqualTo(3)); Assert.That(children[0].Text, Is.EqualTo("Find me")); Assert.That(children[1].Text, Is.EqualTo("Also me")); Assert.That(children[2].Text, Is.EqualTo("But not me")); @@ -142,7 +142,7 @@ public void ShouldFindElementsByClassName() driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Name("classes")); ReadOnlyCollection children = parent.FindElements(By.ClassName("one")); - Assert.That(children.Count, Is.EqualTo(2)); + Assert.That(children, Has.Count.EqualTo(2)); Assert.That(children[0].Text, Is.EqualTo("Find me")); Assert.That(children[1].Text, Is.EqualTo("Also me")); } @@ -153,7 +153,7 @@ public void ShouldFindElementsByPartialLinkText() driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Name("div1")); ReadOnlyCollection children = parent.FindElements(By.PartialLinkText("hello ")); - Assert.That(children.Count, Is.EqualTo(2)); + Assert.That(children, Has.Count.EqualTo(2)); Assert.That(children[0].Text, Is.EqualTo("hello world")); Assert.That(children[1].Text, Is.EqualTo("hello world")); } @@ -164,7 +164,7 @@ public void ShouldFindElementsByTagName() driver.Url = nestedPage; IWebElement parent = driver.FindElement(By.Name("classes")); ReadOnlyCollection children = parent.FindElements(By.TagName("span")); - Assert.That(children.Count, Is.EqualTo(3)); + Assert.That(children, Has.Count.EqualTo(3)); Assert.That(children[0].Text, Is.EqualTo("Find me")); Assert.That(children[1].Text, Is.EqualTo("Also me")); Assert.That(children[2].Text, Is.EqualTo("But not me")); diff --git a/dotnet/test/common/ElementEqualityTest.cs b/dotnet/test/common/ElementEqualityTest.cs index b86111ae4414cf..0ecf01983c9b80 100644 --- a/dotnet/test/common/ElementEqualityTest.cs +++ b/dotnet/test/common/ElementEqualityTest.cs @@ -34,7 +34,7 @@ public void SameElementLookedUpDifferentWaysShouldBeEqual() IWebElement body = driver.FindElement(By.TagName("body")); IWebElement xbody = driver.FindElement(By.XPath("//body")); - Assert.AreEqual(body, xbody); + Assert.That(xbody, Is.EqualTo(body)); } [Test] @@ -44,7 +44,7 @@ public void DifferentElementsShouldNotBeEqual() ReadOnlyCollection ps = driver.FindElements(By.TagName("p")); - Assert.AreNotEqual(ps[0], ps[1]); + Assert.That(ps[1], Is.Not.EqualTo(ps[0])); } [Test] @@ -54,7 +54,7 @@ public void SameElementLookedUpDifferentWaysUsingFindElementShouldHaveSameHashCo IWebElement body = driver.FindElement(By.TagName("body")); IWebElement xbody = driver.FindElement(By.XPath("//body")); - Assert.AreEqual(body.GetHashCode(), xbody.GetHashCode()); + Assert.That(xbody.GetHashCode(), Is.EqualTo(body.GetHashCode())); } public void SameElementLookedUpDifferentWaysUsingFindElementsShouldHaveSameHashCode() @@ -63,7 +63,7 @@ public void SameElementLookedUpDifferentWaysUsingFindElementsShouldHaveSameHashC ReadOnlyCollection body = driver.FindElements(By.TagName("body")); ReadOnlyCollection xbody = driver.FindElements(By.XPath("//body")); - Assert.AreEqual(body[0].GetHashCode(), xbody[0].GetHashCode()); + Assert.That(xbody[0].GetHashCode(), Is.EqualTo(body[0].GetHashCode())); } [Test] @@ -76,7 +76,7 @@ public void AnElementFoundInViaJsShouldHaveSameId() IWebElement element = (IWebElement)((IJavaScriptExecutor)driver).ExecuteScript("return document.getElementById('oneline');"); - Assert.AreEqual(first, element); + Assert.That(element, Is.EqualTo(first)); } } } diff --git a/dotnet/test/common/ElementFindingTest.cs b/dotnet/test/common/ElementFindingTest.cs index 313077382fc4f6..f1375531be5f38 100644 --- a/dotnet/test/common/ElementFindingTest.cs +++ b/dotnet/test/common/ElementFindingTest.cs @@ -34,7 +34,7 @@ public void ShouldBeAbleToFindASingleElementById() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.Id("linkId")); - Assert.AreEqual("linkId", element.GetAttribute("id")); + Assert.That(element.GetAttribute("id"), Is.EqualTo("linkId")); } [Test] @@ -60,7 +60,7 @@ public void ShouldBeAbleToFindMultipleElementsById() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.Id("2")); - Assert.AreEqual(8, elements.Count); + Assert.That(elements, Has.Exactly(8).Items); } [Test] @@ -68,7 +68,7 @@ public void ShouldBeAbleToFindMultipleElementsByNumericId() { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.Id("2")); - Assert.That(elements.Count, Is.EqualTo(8)); + Assert.That(elements, Has.Exactly(8).Items); } [Test] @@ -76,9 +76,9 @@ public void ShouldBeAbleToFindMultipleElementsByIdWithNonAlphanumericCharacters( { driver.Url = nestedPage; ReadOnlyCollection elements = driver.FindElements(By.Id("white space")); - Assert.That(elements.Count, Is.EqualTo(2)); + Assert.That(elements, Has.Exactly(2).Items); ReadOnlyCollection elements2 = driver.FindElements(By.Id("css#.chars")); - Assert.That(elements2.Count, Is.EqualTo(2)); + Assert.That(elements2, Has.Exactly(2).Items); } // By.id negative @@ -95,7 +95,7 @@ public void ShouldNotBeAbleToLocateByIdMultipleElementsThatDoNotExist() { driver.Url = formsPage; ReadOnlyCollection elements = driver.FindElements(By.Id("nonExistentButton")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } [Test] @@ -110,7 +110,7 @@ public void FindingMultipleElementsByEmptyIdShouldReturnEmptyList() { driver.Url = formsPage; ReadOnlyCollection elements = driver.FindElements(By.Id("")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } [Test] @@ -125,7 +125,7 @@ public void FindingMultipleElementsByIdWithSpaceShouldReturnEmptyList() { driver.Url = formsPage; ReadOnlyCollection elements = driver.FindElements(By.Id("nonexistent button")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } // By.Name positive @@ -135,7 +135,7 @@ public void ShouldBeAbleToFindASingleElementByName() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.Name("checky")); - Assert.AreEqual("furrfu", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("furrfu")); } [Test] @@ -151,7 +151,7 @@ public void ShouldBeAbleToFindAnElementThatDoesNotSupportTheNameProperty() { driver.Url = nestedPage; IWebElement element = driver.FindElement(By.Name("div1")); - Assert.AreEqual("div1", element.GetAttribute("name")); + Assert.That(element.GetAttribute("name"), Is.EqualTo("div1")); } // By.Name negative @@ -168,7 +168,7 @@ public void ShouldNotBeAbleToLocateByNameMultipleElementsThatDoNotExist() { driver.Url = formsPage; ReadOnlyCollection elements = driver.FindElements(By.Name("nonExistentButton")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } [Test] @@ -183,7 +183,7 @@ public void FindingMultipleElementsByEmptyNameShouldReturnEmptyList() { driver.Url = formsPage; ReadOnlyCollection elements = driver.FindElements(By.Name("")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } [Test] @@ -198,7 +198,7 @@ public void FindingMultipleElementsByNameWithSpaceShouldReturnEmptyList() { driver.Url = formsPage; ReadOnlyCollection elements = driver.FindElements(By.Name("nonexistent button")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } // By.tagName positive @@ -208,7 +208,7 @@ public void ShouldBeAbleToFindASingleElementByTagName() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.TagName("input")); - Assert.AreEqual("input", element.TagName.ToLower()); + Assert.That(element.TagName.ToLower(), Is.EqualTo("input")); } [Test] @@ -233,7 +233,7 @@ public void ShouldNotBeAbleToLocateByTagNameMultipleElementsThatDoNotExist() { driver.Url = formsPage; ReadOnlyCollection elements = driver.FindElements(By.TagName("nonExistentButton")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } [Test] @@ -255,7 +255,7 @@ public void FindingMultipleElementsByTagNameWithSpaceShouldReturnEmptyList() { driver.Url = formsPage; ReadOnlyCollection elements = driver.FindElements(By.TagName("nonexistent button")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } // By.ClassName positive @@ -273,7 +273,7 @@ public void ShouldBeAbleToFindMultipleElementsByClassName() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.ClassName("nameC")); - Assert.That(elements.Count, Is.GreaterThan(1)); + Assert.That(elements, Has.Count.GreaterThan(1)); } [Test] @@ -281,7 +281,7 @@ public void ShouldFindElementByClassWhenItIsTheFirstNameAmongMany() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.ClassName("nameA")); - Assert.AreEqual("An H2 title", element.Text); + Assert.That(element.Text, Is.EqualTo("An H2 title")); } [Test] @@ -289,7 +289,7 @@ public void ShouldFindElementByClassWhenItIsTheLastNameAmongMany() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.ClassName("nameC")); - Assert.AreEqual("An H2 title", element.Text); + Assert.That(element.Text, Is.EqualTo("An H2 title")); } [Test] @@ -297,7 +297,7 @@ public void ShouldFindElementByClassWhenItIsInTheMiddleAmongMany() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.ClassName("nameBnoise")); - Assert.AreEqual("An H2 title", element.Text); + Assert.That(element.Text, Is.EqualTo("An H2 title")); } [Test] @@ -305,7 +305,7 @@ public void ShouldFindElementByClassWhenItsNameIsSurroundedByWhitespace() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.ClassName("spaceAround")); - Assert.AreEqual("Spaced out", element.Text); + Assert.That(element.Text, Is.EqualTo("Spaced out")); } [Test] @@ -313,8 +313,8 @@ public void ShouldFindElementsByClassWhenItsNameIsSurroundedByWhitespace() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.ClassName("spaceAround")); - Assert.AreEqual(1, elements.Count); - Assert.AreEqual("Spaced out", elements[0].Text); + Assert.That(elements, Has.Exactly(1).Items); + Assert.That(elements[0].Text, Is.EqualTo("Spaced out")); } // By.ClassName negative @@ -360,7 +360,7 @@ public void FindingASingleElementByAWeirdLookingClassName() driver.Url = xhtmlTestPage; String weird = "cls-!@#$%^&*"; IWebElement element = driver.FindElement(By.ClassName(weird)); - Assert.AreEqual(weird, element.GetAttribute("class")); + Assert.That(element.GetAttribute("class"), Is.EqualTo(weird)); } [Test] @@ -369,8 +369,8 @@ public void FindingMultipleElementsByAWeirdLookingClassName() driver.Url = xhtmlTestPage; String weird = "cls-!@#$%^&*"; ReadOnlyCollection elements = driver.FindElements(By.ClassName(weird)); - Assert.AreEqual(1, elements.Count); - Assert.AreEqual(weird, elements[0].GetAttribute("class")); + Assert.That(elements, Has.Count.EqualTo(1)); + Assert.That(elements[0].GetAttribute("class"), Is.EqualTo(weird)); } // By.XPath positive @@ -380,7 +380,7 @@ public void ShouldBeAbleToFindASingleElementByXPath() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.XPath("//h1")); - Assert.AreEqual("XHTML Might Be The Future", element.Text); + Assert.That(element.Text, Is.EqualTo("XHTML Might Be The Future")); } [Test] @@ -388,7 +388,7 @@ public void ShouldBeAbleToFindMultipleElementsByXPath() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.XPath("//div")); - Assert.AreEqual(13, elements.Count); + Assert.That(elements, Has.Count.EqualTo(13)); } [Test] @@ -396,10 +396,10 @@ public void ShouldBeAbleToFindManyElementsRepeatedlyByXPath() { driver.Url = xhtmlTestPage; String xpathString = "//node()[contains(@id,'id')]"; - Assert.AreEqual(3, driver.FindElements(By.XPath(xpathString)).Count); + Assert.That(driver.FindElements(By.XPath(xpathString)), Has.Exactly(3).Items); xpathString = "//node()[contains(@id,'nope')]"; - Assert.AreEqual(0, driver.FindElements(By.XPath(xpathString)).Count); + Assert.That(driver.FindElements(By.XPath(xpathString)), Is.Empty); } [Test] @@ -407,7 +407,7 @@ public void ShouldBeAbleToIdentifyElementsByClass() { driver.Url = xhtmlTestPage; IWebElement header = driver.FindElement(By.XPath("//h1[@class='header']")); - Assert.AreEqual("XHTML Might Be The Future", header.Text); + Assert.That(header.Text, Is.EqualTo("XHTML Might Be The Future")); } [Test] @@ -416,8 +416,8 @@ public void ShouldBeAbleToFindAnElementByXPathWithMultipleAttributes() driver.Url = formsPage; IWebElement element = driver.FindElement( By.XPath("//form[@name='optional']/input[@type='submit' and @value='Click!']")); - Assert.AreEqual("input", element.TagName.ToLower()); - Assert.AreEqual("Click!", element.GetAttribute("value")); + Assert.That(element.TagName.ToLower(), Is.EqualTo("input")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("Click!")); } [Test] @@ -425,7 +425,7 @@ public void FindingALinkByXpathShouldLocateAnElementWithTheGivenText() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.XPath("//a[text()='click me']")); - Assert.AreEqual("click me", element.Text); + Assert.That(element.Text, Is.EqualTo("click me")); } [Test] @@ -558,8 +558,8 @@ public void ShouldBeAbleToFindASingleElementByCssSelector() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.CssSelector("div.content")); - Assert.AreEqual("div", element.TagName.ToLower()); - Assert.AreEqual("content", element.GetAttribute("class")); + Assert.That(element.TagName.ToLower(), Is.EqualTo("div")); + Assert.That(element.GetAttribute("class"), Is.EqualTo("content")); } [Test] @@ -575,8 +575,8 @@ public void ShouldBeAbleToFindASingleElementByCompoundCssSelector() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.CssSelector("div.extraDiv, div.content")); - Assert.AreEqual("div", element.TagName.ToLower()); - Assert.AreEqual("content", element.GetAttribute("class")); + Assert.That(element.TagName.ToLower(), Is.EqualTo("div")); + Assert.That(element.GetAttribute("class"), Is.EqualTo("content")); } [Test] @@ -594,7 +594,7 @@ public void ShouldBeAbleToFindAnElementByBooleanAttributeUsingCssSelector() { driver.Url = (EnvironmentManager.Instance.UrlBuilder.WhereIs("locators_tests/boolean_attribute_selected.html")); IWebElement element = driver.FindElement(By.CssSelector("option[selected='selected']")); - Assert.AreEqual("two", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("two")); } [Test] @@ -602,7 +602,7 @@ public void ShouldBeAbleToFindAnElementByBooleanAttributeUsingShortCssSelector() { driver.Url = (EnvironmentManager.Instance.UrlBuilder.WhereIs("locators_tests/boolean_attribute_selected.html")); IWebElement element = driver.FindElement(By.CssSelector("option[selected]")); - Assert.AreEqual("two", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("two")); } [Test] @@ -610,7 +610,7 @@ public void ShouldBeAbleToFindAnElementByBooleanAttributeUsingShortCssSelectorOn { driver.Url = (EnvironmentManager.Instance.UrlBuilder.WhereIs("locators_tests/boolean_attribute_selected_html4.html")); IWebElement element = driver.FindElement(By.CssSelector("option[selected]")); - Assert.AreEqual("two", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("two")); } // By.CssSelector negative @@ -627,7 +627,7 @@ public void ShouldNotFindElementsByCssSelectorWhenThereIsNoSuchElement() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.CssSelector(".there-is-no-such-class")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } [Test] @@ -665,7 +665,7 @@ public void ShouldBeAbleToFindALinkByText() { driver.Url = xhtmlTestPage; IWebElement link = driver.FindElement(By.LinkText("click me")); - Assert.AreEqual("click me", link.Text); + Assert.That(link.Text, Is.EqualTo("click me")); } [Test] @@ -673,7 +673,7 @@ public void ShouldBeAbleToFindMultipleLinksByText() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.LinkText("click me")); - Assert.AreEqual(2, elements.Count, "Expected 2 links, got " + elements.Count); + Assert.That(elements, Has.Count.EqualTo(2), "Expected 2 links, got " + elements.Count); } [Test] @@ -681,7 +681,7 @@ public void ShouldFindElementByLinkTextContainingEqualsSign() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.LinkText("Link=equalssign")); - Assert.AreEqual("linkWithEqualsSign", element.GetAttribute("id")); + Assert.That(element.GetAttribute("id"), Is.EqualTo("linkWithEqualsSign")); } [Test] @@ -689,8 +689,8 @@ public void ShouldFindMultipleElementsByLinkTextContainingEqualsSign() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.LinkText("Link=equalssign")); - Assert.AreEqual(1, elements.Count); - Assert.AreEqual("linkWithEqualsSign", elements[0].GetAttribute("id")); + Assert.That(elements, Has.Count.EqualTo(1)); + Assert.That(elements[0].GetAttribute("id"), Is.EqualTo("linkWithEqualsSign")); } [Test] @@ -705,7 +705,7 @@ public void FindsByLinkTextOnXhtmlPage() driver.Url = (EnvironmentManager.Instance.UrlBuilder.WhereIs("actualXhtmlPage.xhtml")); string linkText = "Foo"; IWebElement element = driver.FindElement(By.LinkText(linkText)); - Assert.AreEqual(linkText, element.Text); + Assert.That(element.Text, Is.EqualTo(linkText)); } [Test] @@ -716,7 +716,7 @@ public void LinkWithFormattingTags() IWebElement elem = driver.FindElement(By.Id("links")); IWebElement res = elem.FindElement(By.PartialLinkText("link with formatting tags")); - Assert.AreEqual("link with formatting tags", res.Text); + Assert.That(res.Text, Is.EqualTo("link with formatting tags")); } [Test] @@ -724,8 +724,8 @@ public void DriverCanGetLinkByLinkTestIgnoringTrailingWhitespace() { driver.Url = simpleTestPage; IWebElement link = driver.FindElement(By.LinkText("link with trailing space")); - Assert.AreEqual("linkWithTrailingSpace", link.GetAttribute("id")); - Assert.AreEqual("link with trailing space", link.Text); + Assert.That(link.GetAttribute("id"), Is.EqualTo("linkWithTrailingSpace")); + Assert.That(link.Text, Is.EqualTo("link with trailing space")); } // By.linkText negative @@ -742,7 +742,7 @@ public void ShouldNotBeAbleToLocateByLinkTextMultipleElementsThatDoNotExist() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.LinkText("Not here either")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } // By.partialLinkText positive @@ -752,7 +752,7 @@ public void ShouldBeAbleToFindMultipleElementsByPartialLinkText() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.PartialLinkText("ick me")); - Assert.AreEqual(2, elements.Count); + Assert.That(elements, Has.Exactly(2).Items); } [Test] @@ -768,7 +768,7 @@ public void ShouldFindElementByPartialLinkTextContainingEqualsSign() { driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.PartialLinkText("Link=")); - Assert.AreEqual("linkWithEqualsSign", element.GetAttribute("id")); + Assert.That(element.GetAttribute("id"), Is.EqualTo("linkWithEqualsSign")); } [Test] @@ -776,8 +776,8 @@ public void ShouldFindMultipleElementsByPartialLinkTextContainingEqualsSign() { driver.Url = xhtmlTestPage; ReadOnlyCollection elements = driver.FindElements(By.PartialLinkText("Link=")); - Assert.AreEqual(1, elements.Count); - Assert.AreEqual("linkWithEqualsSign", elements[0].GetAttribute("id")); + Assert.That(elements, Has.Count.EqualTo(1)); + Assert.That(elements[0].GetAttribute("id"), Is.EqualTo("linkWithEqualsSign")); } // Misc tests @@ -788,7 +788,7 @@ public void DriverShouldBeAbleToFindElementsAfterLoadingMoreThanOnePageAtATime() driver.Url = formsPage; driver.Url = xhtmlTestPage; IWebElement link = driver.FindElement(By.LinkText("click me")); - Assert.AreEqual("click me", link.Text); + Assert.That(link.Text, Is.EqualTo("click me")); } // You don't want to ask why this is here @@ -798,16 +798,16 @@ public void WhenFindingByNameShouldNotReturnById() driver.Url = formsPage; IWebElement element = driver.FindElement(By.Name("id-name1")); - Assert.AreEqual("name", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("name")); element = driver.FindElement(By.Id("id-name1")); - Assert.AreEqual("id", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("id")); element = driver.FindElement(By.Name("id-name2")); - Assert.AreEqual("name", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("name")); element = driver.FindElement(By.Id("id-name2")); - Assert.AreEqual("id", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("id")); } [Test] @@ -815,7 +815,7 @@ public void ShouldBeAbleToFindAHiddenElementsByName() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.Name("hidden")); - Assert.AreEqual("hidden", element.GetAttribute("name")); + Assert.That(element.GetAttribute("name"), Is.EqualTo("hidden")); } [Test] @@ -851,10 +851,10 @@ public void AnElementFoundInADifferentFrameIsStale() public void ShouldReturnTitleOfPageIfSet() { driver.Url = xhtmlTestPage; - Assert.AreEqual(driver.Title, "XHTML Test Page"); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); driver.Url = simpleTestPage; - Assert.AreEqual(driver.Title, "Hello WebDriver"); + Assert.That(driver.Title, Is.EqualTo("Hello WebDriver")); } [Test] @@ -863,7 +863,7 @@ public void ShouldBeAbleToClickOnLinkIdentifiedByText() driver.Url = xhtmlTestPage; driver.FindElement(By.LinkText("click me")).Click(); WaitFor(() => { return driver.Title == "We Arrive Here"; }, "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -872,7 +872,7 @@ public void ShouldBeAbleToClickOnLinkIdentifiedById() driver.Url = xhtmlTestPage; driver.FindElement(By.Id("linkId")).Click(); WaitFor(() => { return driver.Title == "We Arrive Here"; }, "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -892,7 +892,7 @@ public void ShouldBeAbleToFindChildrenOfANode() ReadOnlyCollection elements = driver.FindElements(By.XPath("/html/head")); IWebElement head = elements[0]; ReadOnlyCollection importedScripts = head.FindElements(By.TagName("script")); - Assert.AreEqual(importedScripts.Count, 3); + Assert.That(importedScripts, Has.Exactly(3).Items); } [Test] @@ -902,7 +902,7 @@ public void ReturnAnEmptyListWhenThereAreNoChildrenOfANode() IWebElement table = driver.FindElement(By.Id("table")); ReadOnlyCollection rows = table.FindElements(By.TagName("tr")); - Assert.AreEqual(rows.Count, 0); + Assert.That(rows, Is.Empty); } [Test] @@ -912,7 +912,7 @@ public void ShouldFindElementsByName() IWebElement element = driver.FindElement(By.Name("checky")); - Assert.AreEqual(element.GetAttribute("value"), "furrfu"); + Assert.That(element.GetAttribute("value"), Is.EqualTo("furrfu")); } [Test] @@ -921,7 +921,7 @@ public void ShouldFindElementsByClassWhenItIsTheFirstNameAmongMany() driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.ClassName("nameA")); - Assert.AreEqual(element.Text, "An H2 title"); + Assert.That(element.Text, Is.EqualTo("An H2 title")); } [Test] @@ -930,7 +930,7 @@ public void ShouldFindElementsByClassWhenItIsTheLastNameAmongMany() driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.ClassName("nameC")); - Assert.AreEqual(element.Text, "An H2 title"); + Assert.That(element.Text, Is.EqualTo("An H2 title")); } [Test] @@ -939,7 +939,7 @@ public void ShouldFindElementsByClassWhenItIsInTheMiddleAmongMany() driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.ClassName("nameBnoise")); - Assert.AreEqual(element.Text, "An H2 title"); + Assert.That(element.Text, Is.EqualTo("An H2 title")); } [Test] @@ -976,7 +976,7 @@ public void ShouldBeAbleToClickOnLinksWithNoHrefAttribute() element.Click(); // if any exception is thrown, we won't get this far. Sanity check - Assert.AreEqual("Changed", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Changed")); } [Test] @@ -985,8 +985,8 @@ public void FindingByTagNameShouldNotIncludeParentElementIfSameTagType() driver.Url = xhtmlTestPage; IWebElement parent = driver.FindElement(By.Id("my_span")); - Assert.AreEqual(2, parent.FindElements(By.TagName("div")).Count); - Assert.AreEqual(2, parent.FindElements(By.TagName("span")).Count); + Assert.That(parent.FindElements(By.TagName("div")), Has.Count.EqualTo(2)); + Assert.That(parent.FindElements(By.TagName("span")), Has.Count.EqualTo(2)); } [Test] @@ -996,7 +996,7 @@ public void FindingByCssShouldNotIncludeParentElementIfSameTagType() IWebElement parent = driver.FindElement(By.CssSelector("div#parent")); IWebElement child = parent.FindElement(By.CssSelector("div")); - Assert.AreEqual("child", child.GetAttribute("id")); + Assert.That(child.GetAttribute("id"), Is.EqualTo("child")); } [Test] @@ -1005,8 +1005,8 @@ public void FindingByXPathShouldNotIncludeParentElementIfSameTagType() driver.Url = xhtmlTestPage; IWebElement parent = driver.FindElement(By.Id("my_span")); - Assert.AreEqual(2, parent.FindElements(By.TagName("div")).Count); - Assert.AreEqual(2, parent.FindElements(By.TagName("span")).Count); + Assert.That(parent.FindElements(By.TagName("div")), Has.Count.EqualTo(2)); + Assert.That(parent.FindElements(By.TagName("span")), Has.Count.EqualTo(2)); } [Test] @@ -1025,7 +1025,7 @@ public void ShouldFindElementByLinkTextContainingDoubleQuote() { driver.Url = simpleTestPage; IWebElement element = driver.FindElement(By.LinkText("link with \" (double quote)")); - Assert.AreEqual("quote", element.GetAttribute("id")); + Assert.That(element.GetAttribute("id"), Is.EqualTo("quote")); } [Test] @@ -1033,7 +1033,7 @@ public void ShouldFindElementByLinkTextContainingBackslash() { driver.Url = simpleTestPage; IWebElement element = driver.FindElement(By.LinkText("link with \\ (backslash)")); - Assert.AreEqual("backslash", element.GetAttribute("id")); + Assert.That(element.GetAttribute("id"), Is.EqualTo("backslash")); } } } diff --git a/dotnet/test/common/ElementPropertyTest.cs b/dotnet/test/common/ElementPropertyTest.cs index fd93089262c2a6..2f3b98c80bfe12 100644 --- a/dotnet/test/common/ElementPropertyTest.cs +++ b/dotnet/test/common/ElementPropertyTest.cs @@ -40,9 +40,10 @@ public void CanRetrieveTheCurrentValueOfAProperty() { driver.Url = formsPage; IWebElement element = driver.FindElement(By.Id("working")); - Assert.AreEqual(string.Empty, element.GetDomProperty("value")); + + Assert.That(element.GetDomProperty("value"), Is.Empty); element.SendKeys("hello world"); - Assert.AreEqual("hello world", element.GetDomProperty("value")); + Assert.That(element.GetDomProperty("value"), Is.EqualTo("hello world")); } } } diff --git a/dotnet/test/common/ElementSelectingTest.cs b/dotnet/test/common/ElementSelectingTest.cs index 0fc8013784878e..6d9bb1a7125aca 100644 --- a/dotnet/test/common/ElementSelectingTest.cs +++ b/dotnet/test/common/ElementSelectingTest.cs @@ -204,14 +204,14 @@ private static void AssertSelected(IWebElement element) private static void AssertSelected(IWebElement element, bool isSelected) { - Assert.AreEqual(isSelected, element.Selected, string.Format("Expected element {0} to be {1} but was {2}", Describe(element), SelectedToString(isSelected), SelectedToString(!isSelected))); + Assert.That(element.Selected, Is.EqualTo(isSelected), string.Format("Expected element {0} to be {1} but was {2}", Describe(element), SelectedToString(isSelected), SelectedToString(!isSelected))); } private static void AssertCannotSelect(IWebElement element) { bool previous = element.Selected; element.Click(); - Assert.AreEqual(previous, element.Selected); + Assert.That(element.Selected, Is.EqualTo(previous)); } private static void AssertCanSelect(IWebElement element) @@ -261,7 +261,7 @@ private static void AssertTogglingSwapsSelectedStateFrom(IWebElement element, bo { element.Click(); bool isNowSelected = element.Selected; - Assert.AreNotEqual(isNowSelected, originalState, string.Format("Expected element {0} to have been toggled to {1} but was {2}", Describe(element), SelectedToString(!originalState), SelectedToString(originalState))); + Assert.That(originalState, Is.Not.EqualTo(isNowSelected), string.Format("Expected element {0} to have been toggled to {1} but was {2}", Describe(element), SelectedToString(!originalState), SelectedToString(originalState))); AssertSelected(element, !originalState); } diff --git a/dotnet/test/common/ErrorsTest.cs b/dotnet/test/common/ErrorsTest.cs index f01894020c3f33..ad5ea3a1208330 100644 --- a/dotnet/test/common/ErrorsTest.cs +++ b/dotnet/test/common/ErrorsTest.cs @@ -35,7 +35,7 @@ public void ShouldNotGenerateErrorsWhenOpeningANewPage() { driver.Url = errorsPage; object result = ((IJavaScriptExecutor)driver).ExecuteScript("return window.ERRORS.join('\\n');"); - Assert.AreEqual("", result, "Should have no errors"); + Assert.That(result, Is.Empty, "Should have no errors"); } } diff --git a/dotnet/test/common/ExecutingAsyncJavascriptTest.cs b/dotnet/test/common/ExecutingAsyncJavascriptTest.cs index 077bcd721c0fac..ef0711453b6dc9 100644 --- a/dotnet/test/common/ExecutingAsyncJavascriptTest.cs +++ b/dotnet/test/common/ExecutingAsyncJavascriptTest.cs @@ -118,7 +118,7 @@ public void ShouldBeAbleToReturnArraysOfPrimitivesFromAsyncScripts() Assert.That(result, Is.Not.Null); Assert.That(result, Is.InstanceOf>()); ReadOnlyCollection resultList = result as ReadOnlyCollection; - Assert.That(resultList.Count, Is.EqualTo(5)); + Assert.That(resultList, Has.Count.EqualTo(5)); Assert.That(resultList[0], Is.Null); Assert.That((long)resultList[1], Is.EqualTo(123)); Assert.That(resultList[2].ToString(), Is.EqualTo("abc")); @@ -221,10 +221,12 @@ public void ShouldCatchErrorsWithMessageAndStacktraceWhenExecutingInitialScript( string js = "function functionB() { throw Error('errormessage'); };" + "function functionA() { functionB(); };" + "functionA();"; - Exception ex = Assert.Catch(() => executor.ExecuteAsyncScript(js)); - Assert.That(ex, Is.InstanceOf()); - Assert.That(ex.Message.Contains("errormessage")); - Assert.That(ex.StackTrace.Contains("functionB")); + + Assert.That( + () => executor.ExecuteAsyncScript(js), + Throws.InstanceOf() + .With.Message.Contains("errormessage") + .And.Property(nameof(WebDriverException.StackTrace)).Contains("functionB")); } [Test] @@ -236,21 +238,21 @@ public void ShouldBeAbleToExecuteAsynchronousScripts() IWebElement typer = driver.FindElement(By.Name("typer")); typer.SendKeys("bob"); - Assert.AreEqual("bob", typer.GetAttribute("value")); + Assert.That(typer.GetAttribute("value"), Is.EqualTo("bob")); driver.FindElement(By.Id("red")).Click(); driver.FindElement(By.Name("submit")).Click(); - Assert.AreEqual(1, GetNumberOfDivElements(), "There should only be 1 DIV at this point, which is used for the butter message"); + Assert.That(GetNumberOfDivElements(), Is.EqualTo(1), "There should only be 1 DIV at this point, which is used for the butter message"); driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(10); string text = (string)executor.ExecuteAsyncScript( "var callback = arguments[arguments.length - 1];" + "window.registerListener(arguments[arguments.length - 1]);"); - Assert.AreEqual("bob", text); - Assert.AreEqual("", typer.GetAttribute("value")); + Assert.That(text, Is.EqualTo("bob")); + Assert.That(typer.GetAttribute("value"), Is.Empty); - Assert.AreEqual(2, GetNumberOfDivElements(), "There should be 1 DIV (for the butter message) + 1 DIV (for the new label)"); + Assert.That(GetNumberOfDivElements(), Is.EqualTo(2), "There should be 1 DIV (for the butter message) + 1 DIV (for the new label)"); } [Test] @@ -258,7 +260,7 @@ public void ShouldBeAbleToPassMultipleArgumentsToAsyncScripts() { driver.Url = ajaxyPage; long result = (long)executor.ExecuteAsyncScript("arguments[arguments.length - 1](arguments[0] + arguments[1]);", 1, 2); - Assert.AreEqual(3, result); + Assert.That(result, Is.EqualTo(3)); } [Test] @@ -290,7 +292,7 @@ public void ShouldBeAbleToMakeXMLHttpRequestsAndWaitForTheResponse() driver.Url = ajaxyPage; driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(3); string response = (string)executor.ExecuteAsyncScript(script, sleepingPage + "?time=2"); - Assert.AreEqual("DoneSlept for 2s", response.Trim()); + Assert.That(response.Trim(), Is.EqualTo("DoneSlept for 2s")); } [Test] diff --git a/dotnet/test/common/ExecutingJavascriptTest.cs b/dotnet/test/common/ExecutingJavascriptTest.cs index 34a567a7a92c2c..d5b239a9cf206c 100644 --- a/dotnet/test/common/ExecutingJavascriptTest.cs +++ b/dotnet/test/common/ExecutingJavascriptTest.cs @@ -143,7 +143,7 @@ public void ShouldBeAbleToExecuteJavascriptAndReturnABasicObjectLiteral() expected.Add("abc", "123"); expected.Add("tired", false); - Assert.AreEqual(expected.Count, map.Count, "Expected:<" + expected.Count + ">, but was:<" + map.Count + ">"); + Assert.That(map, Has.Count.EqualTo(expected.Count), "Expected:<" + expected.Count + ">, but was:<" + map.Count + ">"); foreach (string expectedKey in expected.Keys) { Assert.That(map, Does.ContainKey(expectedKey)); @@ -200,8 +200,8 @@ public void ShouldBeAbleToExecuteSimpleJavascriptAndReturnAComplexObject() Assert.That(result, Is.InstanceOf>()); Dictionary map = (Dictionary)result; - Assert.AreEqual("http:", map["protocol"]); - Assert.AreEqual(javascriptPage, map["href"]); + Assert.That(map["protocol"], Is.EqualTo("http:")); + Assert.That(map["href"], Is.EqualTo(javascriptPage)); } [Test] @@ -256,10 +256,12 @@ public void ShouldThrowAnExceptionWithMessageAndStacktraceWhenTheJavascriptIsBad string js = "function functionB() { throw Error('errormessage'); };" + "function functionA() { functionB(); };" + "functionA();"; - Exception ex = Assert.Catch(() => ExecuteScript(js)); - Assert.That(ex, Is.InstanceOf()); - Assert.That(ex.Message.Contains("errormessage"), "Exception message does not contain 'errormessage'"); - Assert.That(ex.StackTrace.Contains("functionB"), "Exception message does not contain 'functionB'"); + + Assert.That( + () => ExecuteScript(js), + Throws.InstanceOf() + .With.Message.Contains("errormessage") + .And.Property(nameof(WebDriverException.StackTrace)).Contains("functionB")); } [Test] @@ -272,7 +274,7 @@ public void ShouldBeAbleToCallFunctionsDefinedOnThePage() ExecuteScript("displayMessage('I like cheese');"); string text = driver.FindElement(By.Id("result")).Text; - Assert.AreEqual("I like cheese", text.Trim()); + Assert.That(text.Trim(), Is.EqualTo("I like cheese")); } [Test] @@ -284,7 +286,7 @@ public void ShouldBeAbleToPassAStringAsAnArgument() driver.Url = javascriptPage; string text = (string)ExecuteScript("return arguments[0] == 'Hello!' ? 'Hello!' : 'Goodbye!';", "Hello!"); - Assert.AreEqual("Hello!", text); + Assert.That(text, Is.EqualTo("Hello!")); } [Test] @@ -317,19 +319,19 @@ public void ShouldBeAbleToPassANumberAsAnArgument() string function = string.Format(functionTemplate, 3); long result = (long)ExecuteScript(function, 3); - Assert.AreEqual(3, result); + Assert.That(result, Is.EqualTo(3)); function = string.Format(functionTemplate, -3); result = (long)ExecuteScript(function, -3); - Assert.AreEqual(-3, result); + Assert.That(result, Is.EqualTo(-3)); function = string.Format(functionTemplate, 2147483647); result = (long)ExecuteScript(function, 2147483647); - Assert.AreEqual(2147483647, result); + Assert.That(result, Is.EqualTo(2147483647)); function = string.Format(functionTemplate, -2147483647); result = (long)ExecuteScript(function, -2147483647); - Assert.AreEqual(-2147483647, result); + Assert.That(result, Is.EqualTo(-2147483647)); } [Test] @@ -343,7 +345,7 @@ public void ShouldBeAbleToPassAWebElementAsArgument() IWebElement button = driver.FindElement(By.Id("plainButton")); string value = (string)ExecuteScript("arguments[0]['flibble'] = arguments[0].getAttribute('id'); return arguments[0]['flibble'];", button); - Assert.AreEqual("plainButton", value); + Assert.That(value, Is.EqualTo("plainButton")); } [Test] @@ -357,7 +359,7 @@ public void PassingArrayAsOnlyArgumentShouldFlattenArray() driver.Url = javascriptPage; object[] array = new object[] { "zero", 1, true, 3.14159 }; long length = (long)ExecuteScript("return arguments[0].length", array); - Assert.AreEqual(array.Length, length); + Assert.That(length, Is.EqualTo(array.Length)); } [Test] @@ -371,7 +373,7 @@ public void ShouldBeAbleToPassAnArrayAsAdditionalArgument() driver.Url = javascriptPage; object[] array = new object[] { "zero", 1, true, 3.14159, false }; long length = (long)ExecuteScript("return arguments[1].length", "string", array); - Assert.AreEqual(array.Length, length); + Assert.That(length, Is.EqualTo(array.Length)); } [Test] @@ -388,7 +390,7 @@ public void ShouldBeAbleToPassACollectionAsArgument() collection.Add("Brie"); collection.Add(7); long length = (long)ExecuteScript("return arguments[0].length", collection); - Assert.AreEqual(collection.Count, length); + Assert.That(length, Is.EqualTo(collection.Count)); } [Test] @@ -415,7 +417,7 @@ public void ShouldBeAbleToPassInMoreThanOneArgument() driver.Url = javascriptPage; string result = (string)ExecuteScript("return arguments[0] + arguments[1];", "one", "two"); - Assert.AreEqual("onetwo", result); + Assert.That(result, Is.EqualTo("onetwo")); } [Test] @@ -426,7 +428,7 @@ public void ShouldBeAbleToGrabTheBodyOfFrameOnceSwitchedTo() driver.SwitchTo().Frame("editFrame"); IWebElement body = (IWebElement)((IJavaScriptExecutor)driver).ExecuteScript("return document.body"); - Assert.AreEqual("", body.Text); + Assert.That(body.Text, Is.Empty); } // This is a duplicate test of ShouldBeAbleToExecuteScriptAndReturnElementsList. @@ -449,13 +451,13 @@ public void JavascriptStringHandlingShouldWorkAsExpected() driver.Url = javascriptPage; string value = (string)ExecuteScript("return '';"); - Assert.AreEqual("", value); + Assert.That(value, Is.Empty); value = (string)ExecuteScript("return undefined;"); Assert.That(value, Is.Null); value = (string)ExecuteScript("return ' '"); - Assert.AreEqual(" ", value); + Assert.That(value, Is.EqualTo(" ")); } [Test] @@ -467,7 +469,7 @@ public void ShouldBeAbleToExecuteABigChunkOfJavascriptCode() if (fileList.Length > 0) { string jquery = System.IO.File.ReadAllText(fileList[0]); - Assert.That(jquery.Length, Is.GreaterThan(50000)); + Assert.That(jquery, Has.Length.GreaterThan(50000)); ExecuteScript(jquery, null); } } @@ -508,7 +510,7 @@ public void ShouldBeAbleToExecuteScriptAndReturnElementsList() ReadOnlyCollection resultsList = (ReadOnlyCollection)resultObject; - Assert.That(resultsList.Count, Is.GreaterThan(0)); + Assert.That(resultsList, Is.Not.Empty); } [Test] @@ -520,7 +522,7 @@ public void ShouldBeAbleToCreateAPersistentValue() ExecuteScript("document.alerts.push('hello world');"); string text = (string)ExecuteScript("return document.alerts.shift()"); - Assert.AreEqual("hello world", text); + Assert.That(text, Is.EqualTo("hello world")); } [Test] @@ -533,7 +535,7 @@ public void ShouldBeAbleToHandleAnArrayOfElementsAsAnObjectArray() string name = (string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0][0].tagName", args); - Assert.AreEqual("form", name.ToLower()); + Assert.That(name, Is.EqualTo("form").IgnoreCase); } [Test] @@ -548,7 +550,7 @@ public void ShouldBeAbleToPassADictionaryAsAParameter() object res = ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0]['foo'][1]", args); - Assert.AreEqual(2, (long)res); + Assert.That((long)res, Is.EqualTo(2)); } [Test] @@ -713,7 +715,7 @@ public void ShouldBeAbleToPassMoreThanOneStringAsArguments() driver.Url = javascriptPage; string text = (string)ExecuteScript("return arguments[0] + arguments[1] + arguments[2] + arguments[3];", "Hello,", " ", "world", "!"); - Assert.AreEqual("Hello, world!", text); + Assert.That(text, Is.EqualTo("Hello, world!")); } [Test] @@ -728,16 +730,16 @@ public void ShouldBeAbleToPassMoreThanOneBooleanAsArguments() driver.Url = javascriptPage; string text = (string)ExecuteScript(function, true, true); - Assert.AreEqual("TrueTrue", text); + Assert.That(text, Is.EqualTo("TrueTrue")); text = (string)ExecuteScript(function, false, true); - Assert.AreEqual("FalseTrue", text); + Assert.That(text, Is.EqualTo("FalseTrue")); text = (string)ExecuteScript(function, true, false); - Assert.AreEqual("TrueFalse", text); + Assert.That(text, Is.EqualTo("TrueFalse")); text = (string)ExecuteScript(function, false, false); - Assert.AreEqual("FalseFalse", text); + Assert.That(text, Is.EqualTo("FalseFalse")); } [Test] @@ -751,16 +753,16 @@ public void ShouldBeAbleToPassMoreThanOneNumberAsArguments() driver.Url = javascriptPage; long result = (long)ExecuteScript(function, 30, 12); - Assert.AreEqual(42, result); + Assert.That(result, Is.EqualTo(42)); result = (long)ExecuteScript(function, -30, -12); - Assert.AreEqual(-42, result); + Assert.That(result, Is.EqualTo(-42)); result = (long)ExecuteScript(function, 2147483646, 1); - Assert.AreEqual(2147483647, result); + Assert.That(result, Is.EqualTo(2147483647)); result = (long)ExecuteScript(function, -2147483646, -1); - Assert.AreEqual(-2147483647, result); + Assert.That(result, Is.EqualTo(-2147483647)); } @@ -775,22 +777,22 @@ public void ShouldBeAbleToPassADoubleAsAnArgument() driver.Url = javascriptPage; double result = (double)ExecuteScript(function, (double)4.2); - Assert.AreEqual(4.2, result); + Assert.That(result, Is.EqualTo(4.2)); result = (double)ExecuteScript(function, (double)-4.2); - Assert.AreEqual(-4.2, result); + Assert.That(result, Is.EqualTo(-4.2)); result = (double)ExecuteScript(function, (float)4.2); - Assert.AreEqual(4.2, result); + Assert.That(result, Is.EqualTo(4.2)); result = (double)ExecuteScript(function, (float)-4.2); - Assert.AreEqual(-4.2, result); + Assert.That(result, Is.EqualTo(-4.2)); result = (long)ExecuteScript(function, (double)4.0); - Assert.AreEqual(4, result); + Assert.That(result, Is.EqualTo(4)); result = (long)ExecuteScript(function, (double)-4.0); - Assert.AreEqual(-4, result); + Assert.That(result, Is.EqualTo(-4)); } [Test] @@ -804,16 +806,16 @@ public void ShouldBeAbleToPassMoreThanOneDoubleAsArguments() driver.Url = javascriptPage; double result = (double)ExecuteScript(function, 30.1, 12.1); - Assert.AreEqual(42.2, result); + Assert.That(result, Is.EqualTo(42.2)); result = (double)ExecuteScript(function, -30.1, -12.1); - Assert.AreEqual(-42.2, result); + Assert.That(result, Is.EqualTo(-42.2)); result = (double)ExecuteScript(function, 2147483646.1, 1.0); - Assert.AreEqual(2147483647.1, result); + Assert.That(result, Is.EqualTo(2147483647.1)); result = (double)ExecuteScript(function, -2147483646.1, -1.0); - Assert.AreEqual(-2147483647.1, result); + Assert.That(result, Is.EqualTo(-2147483647.1)); } @@ -828,7 +830,7 @@ public void ShouldBeAbleToPassMoreThanOneWebElementAsArguments() IWebElement dynamo = driver.FindElement(By.Id("dynamo")); string value = (string)ExecuteScript("arguments[0]['flibble'] = arguments[0].getAttribute('id'); return arguments[0]['flibble'] + arguments[1].innerHTML;", button, dynamo); - Assert.AreEqual("plainButtonWhat's for dinner?", value); + Assert.That(value, Is.EqualTo("plainButtonWhat's for dinner?")); } [Test] @@ -847,7 +849,7 @@ public void ShouldBeAbleToPassInMixedArguments() "Hello, World!", true); - Assert.AreEqual("What's for dinner?424.2Hello, World!true", result); + Assert.That(result, Is.EqualTo("What's for dinner?424.2Hello, World!true")); } @@ -864,7 +866,7 @@ public void ShouldBeAbleToPassInAndRetrieveDates() ExecuteScript(function, "2014-05-20T20:00:00+08:00"); IWebElement element = driver.FindElement(By.Id("result")); string text = element.Text; - Assert.AreEqual("2014-05-20T20:00:00+08:00", text); + Assert.That(text, Is.EqualTo("2014-05-20T20:00:00+08:00")); } private object ExecuteScript(String script, params Object[] args) diff --git a/dotnet/test/common/FormHandlingTests.cs b/dotnet/test/common/FormHandlingTests.cs index 736b77a610f25f..47382b7ebf8e1e 100644 --- a/dotnet/test/common/FormHandlingTests.cs +++ b/dotnet/test/common/FormHandlingTests.cs @@ -32,7 +32,7 @@ public void ShouldClickOnSubmitInputElements() driver.Url = formsPage; driver.FindElement(By.Id("submitButton")).Click(); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -48,7 +48,7 @@ public void ShouldBeAbleToClickImageButtons() driver.Url = formsPage; driver.FindElement(By.Id("imageButton")).Click(); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -57,7 +57,7 @@ public void ShouldBeAbleToSubmitForms() driver.Url = formsPage; driver.FindElement(By.Name("login")).Submit(); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -66,7 +66,7 @@ public void ShouldSubmitAFormWhenAnyInputElementWithinThatFormIsSubmitted() driver.Url = formsPage; driver.FindElement(By.Id("checky")).Submit(); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -75,7 +75,7 @@ public void ShouldSubmitAFormWhenAnyElementWithinThatFormIsSubmitted() driver.Url = formsPage; driver.FindElement(By.XPath("//form/p")).Submit(); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -84,7 +84,7 @@ public void ShouldSubmitAFormWithIdSubmit() driver.Url = formsPage; driver.FindElement(By.Id("submit")).Submit(); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -94,7 +94,7 @@ public void ShouldSubmitAFormWithNameSubmit() driver.Url = formsPage; driver.FindElement(By.Name("submit")).Submit(); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -111,7 +111,7 @@ public void ShouldBeAbleToEnterTextIntoATextAreaBySettingItsValue() IWebElement textarea = driver.FindElement(By.Id("keyUpArea")); string cheesey = "Brie and cheddar"; textarea.SendKeys(cheesey); - Assert.AreEqual(textarea.GetAttribute("value"), cheesey); + Assert.That(textarea.GetAttribute("value"), Is.EqualTo(cheesey)); } [Test] @@ -121,7 +121,7 @@ public void SendKeysKeepsCapitalization() IWebElement textarea = driver.FindElement(By.Id("keyUpArea")); string cheesey = "BrIe And CheDdar"; textarea.SendKeys(cheesey); - Assert.AreEqual(textarea.GetAttribute("value"), cheesey); + Assert.That(textarea.GetAttribute("value"), Is.EqualTo(cheesey)); } [Test] @@ -134,7 +134,7 @@ public void ShouldSubmitAFormUsingTheNewlineLiteral() input.SendKeys("\n"); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); Assert.That(driver.Url, Does.EndWith("?x=name")); } @@ -147,7 +147,7 @@ public void ShouldSubmitAFormUsingTheEnterKey() input.SendKeys(Keys.Enter); WaitFor(TitleToBe("We Arrive Here"), "Browser title is not 'We Arrive Here'"); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); Assert.That(driver.Url, Does.EndWith("?x=name")); } @@ -157,14 +157,14 @@ public void ShouldEnterDataIntoFormFields() driver.Url = xhtmlTestPage; IWebElement element = driver.FindElement(By.XPath("//form[@name='someForm']/input[@id='username']")); String originalValue = element.GetAttribute("value"); - Assert.AreEqual(originalValue, "change"); + Assert.That(originalValue, Is.EqualTo("change")); element.Clear(); element.SendKeys("some text"); element = driver.FindElement(By.XPath("//form[@name='someForm']/input[@id='username']")); String newFormValue = element.GetAttribute("value"); - Assert.AreEqual(newFormValue, "some text"); + Assert.That(newFormValue, Is.EqualTo("some text")); } [Test] @@ -173,7 +173,7 @@ public void ShouldBeAbleToAlterTheContentsOfAFileUploadInputElement() string testFileName = string.Format("test-{0}.txt", Guid.NewGuid().ToString("D")); driver.Url = formsPage; IWebElement uploadElement = driver.FindElement(By.Id("upload")); - Assert.That(uploadElement.GetAttribute("value"), Is.Null.Or.EqualTo(string.Empty)); + Assert.That(uploadElement.GetAttribute("value"), Is.Null.Or.Empty); string filePath = System.IO.Path.Combine(EnvironmentManager.Instance.CurrentDirectory, testFileName); System.IO.FileInfo inputFile = new System.IO.FileInfo(filePath); @@ -201,7 +201,7 @@ public void ShouldBeAbleToSendKeysToAFileUploadInputElementInAnXhtmlDocument() driver.Url = xhtmlFormPage; IWebElement uploadElement = driver.FindElement(By.Id("file")); - Assert.AreEqual(string.Empty, uploadElement.GetAttribute("value")); + Assert.That(uploadElement.GetAttribute("value"), Is.Empty); string testFileName = string.Format("test-{0}.txt", Guid.NewGuid().ToString("D")); string filePath = System.IO.Path.Combine(EnvironmentManager.Instance.CurrentDirectory, testFileName); @@ -214,7 +214,7 @@ public void ShouldBeAbleToSendKeysToAFileUploadInputElementInAnXhtmlDocument() string uploadElementValue = uploadElement.GetAttribute("value"); System.IO.FileInfo outputFile = new System.IO.FileInfo(uploadElementValue.Replace('\\', System.IO.Path.DirectorySeparatorChar)); - Assert.AreEqual(inputFile.Name, outputFile.Name); + Assert.That(outputFile.Name, Is.EqualTo(inputFile.Name)); inputFile.Delete(); } @@ -253,11 +253,11 @@ public void SendingKeyboardEventsShouldAppendTextInInputs() IWebElement element = driver.FindElement(By.Id("working")); element.SendKeys("Some"); String value = element.GetAttribute("value"); - Assert.AreEqual(value, "Some"); + Assert.That(value, Is.EqualTo("Some")); element.SendKeys(" text"); value = element.GetAttribute("value"); - Assert.AreEqual(value, "Some text"); + Assert.That(value, Is.EqualTo("Some text")); } [Test] @@ -268,7 +268,7 @@ public void SendingKeyboardEventsShouldAppendTextInInputsWithExistingValue() element.SendKeys(". Some text"); string value = element.GetAttribute("value"); - Assert.AreEqual("Example text. Some text", value); + Assert.That(value, Is.EqualTo("Example text. Some text")); } [Test] @@ -280,7 +280,7 @@ public void SendingKeyboardEventsShouldAppendTextInTextAreas() element.SendKeys(". Some text"); String value = element.GetAttribute("value"); - Assert.AreEqual(value, "Example text. Some text"); + Assert.That(value, Is.EqualTo("Example text. Some text")); } [Test] @@ -288,10 +288,10 @@ public void EmptyTextBoxesShouldReturnAnEmptyStringNotNull() { driver.Url = formsPage; IWebElement emptyTextBox = driver.FindElement(By.Id("working")); - Assert.AreEqual(emptyTextBox.GetAttribute("value"), ""); + Assert.That(emptyTextBox.GetAttribute("value"), Is.Empty); IWebElement emptyTextArea = driver.FindElement(By.Id("emptyTextArea")); - Assert.AreEqual(emptyTextBox.GetAttribute("value"), ""); + Assert.That(emptyTextBox.GetAttribute("value"), Is.Empty); } [Test] @@ -316,7 +316,7 @@ public void HandleFormWithJavascriptAction() string text = alert.Text; alert.Dismiss(); - Assert.AreEqual("Tasty cheese", text); + Assert.That(text, Is.EqualTo("Tasty cheese")); } [Test] @@ -391,12 +391,12 @@ public void ShouldBeAbleToClearTextFromInputElements() IWebElement element = driver.FindElement(By.Id("working")); element.SendKeys("Some text"); String value = element.GetAttribute("value"); - Assert.That(value.Length, Is.GreaterThan(0)); + Assert.That(value, Is.Not.Empty); element.Clear(); value = element.GetAttribute("value"); - Assert.That(value.Length, Is.EqualTo(0)); + Assert.That(value, Is.Empty); } [Test] @@ -406,12 +406,12 @@ public void ShouldBeAbleToClearTextFromTextAreas() IWebElement element = driver.FindElement(By.Id("withText")); element.SendKeys("Some text"); String value = element.GetAttribute("value"); - Assert.That(value.Length, Is.GreaterThan(0)); + Assert.That(value, Is.Not.Empty); element.Clear(); value = element.GetAttribute("value"); - Assert.That(value.Length, Is.EqualTo(0)); + Assert.That(value, Is.Empty); } private void CheckSubmitButton(string buttonId) @@ -424,7 +424,7 @@ private void CheckSubmitButton(string buttonId) WaitFor(TitleToBe("Submitted Successfully!"), "Browser title is not 'Submitted Successfully!'"); - Assert.That(driver.Url.Contains("name=" + name), "URL does not contain 'name=" + name + "'. Actual URL:" + driver.Url); + Assert.That(driver.Url, Does.Contain("name=" + name), "URL does not contain 'name=" + name + "'. Actual URL:" + driver.Url); } private Func TitleToBe(string desiredTitle) diff --git a/dotnet/test/common/FrameSwitchingTest.cs b/dotnet/test/common/FrameSwitchingTest.cs index a5e9777e2f48a0..cd23b0c0bbbed4 100644 --- a/dotnet/test/common/FrameSwitchingTest.cs +++ b/dotnet/test/common/FrameSwitchingTest.cs @@ -84,7 +84,7 @@ public void ShouldBeAbleToSwitchToAFrameByItsIndex() driver.Url = framesetPage; driver.SwitchTo().Frame(1); - Assert.AreEqual("2", driver.FindElement(By.Id("pageNumber")).Text); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("2")); } [Test] @@ -93,7 +93,7 @@ public void ShouldBeAbleToSwitchToAnIframeByItsIndex() driver.Url = iframePage; driver.SwitchTo().Frame(0); - Assert.AreEqual("name", driver.FindElement(By.Name("id-name1")).GetAttribute("value")); + Assert.That(driver.FindElement(By.Name("id-name1")).GetAttribute("value"), Is.EqualTo("name")); } [Test] @@ -101,7 +101,7 @@ public void ShouldBeAbleToSwitchToAFrameByItsName() { driver.Url = framesetPage; driver.SwitchTo().Frame("fourth"); - Assert.AreEqual("child1", driver.FindElement(By.TagName("frame")).GetAttribute("name")); + Assert.That(driver.FindElement(By.TagName("frame")).GetAttribute("name"), Is.EqualTo("child1")); } @@ -110,7 +110,7 @@ public void ShouldBeAbleToSwitchToAnIframeByItsName() { driver.Url = iframePage; driver.SwitchTo().Frame("iframe1-name"); - Assert.AreEqual("name", driver.FindElement(By.Name("id-name1")).GetAttribute("value")); + Assert.That(driver.FindElement(By.Name("id-name1")).GetAttribute("value"), Is.EqualTo("name")); } @@ -119,7 +119,7 @@ public void ShouldBeAbleToSwitchToAFrameByItsID() { driver.Url = framesetPage; driver.SwitchTo().Frame("fifth"); - Assert.AreEqual("Open new window", driver.FindElement(By.Name("windowOne")).Text); + Assert.That(driver.FindElement(By.Name("windowOne")).Text, Is.EqualTo("Open new window")); } @@ -128,7 +128,7 @@ public void ShouldBeAbleToSwitchToAnIframeByItsID() { driver.Url = iframePage; driver.SwitchTo().Frame("iframe1"); - Assert.AreEqual("name", driver.FindElement(By.Name("id-name1")).GetAttribute("value")); + Assert.That(driver.FindElement(By.Name("id-name1")).GetAttribute("value"), Is.EqualTo("name")); } [Test] @@ -145,7 +145,7 @@ public void ShouldBeAbleToSwitchToAFrameUsingAPreviouslyLocatedWebElement() driver.Url = framesetPage; IWebElement frame = driver.FindElement(By.TagName("frame")); driver.SwitchTo().Frame(frame); - Assert.AreEqual("1", driver.FindElement(By.Id("pageNumber")).Text); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("1")); } [Test] @@ -154,7 +154,7 @@ public void ShouldBeAbleToSwitchToAnIFrameUsingAPreviouslyLocatedWebElement() driver.Url = iframePage; IWebElement frame = driver.FindElement(By.TagName("iframe")); driver.SwitchTo().Frame(frame); - Assert.AreEqual("name", driver.FindElement(By.Name("id-name1")).GetAttribute("value")); + Assert.That(driver.FindElement(By.Name("id-name1")).GetAttribute("value"), Is.EqualTo("name")); } @@ -173,7 +173,7 @@ public void FrameSearchesShouldBeRelativeToTheCurrentlySelectedFrame() IWebElement frameElement = WaitFor(() => driver.FindElement(By.Name("second")), "did not find frame"); driver.SwitchTo().Frame(frameElement); - Assert.AreEqual("2", driver.FindElement(By.Id("pageNumber")).Text); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("2")); Assert.That( () => driver.SwitchTo().Frame("third"), @@ -188,7 +188,7 @@ public void FrameSearchesShouldBeRelativeToTheCurrentlySelectedFrame() driver.SwitchTo().DefaultContent(); driver.SwitchTo().Frame("second"); - Assert.AreEqual("2", driver.FindElement(By.Id("pageNumber")).Text); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("2")); } [Test] @@ -196,7 +196,7 @@ public void ShouldSelectChildFramesByChainedCalls() { driver.Url = framesetPage; driver.SwitchTo().Frame("fourth").SwitchTo().Frame("child2"); - Assert.AreEqual("11", driver.FindElement(By.Id("pageNumber")).Text); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("11")); } [Test] @@ -235,7 +235,7 @@ public void ShouldBeAbleToSwitchToParentFrame() { driver.Url = framesetPage; driver.SwitchTo().Frame("fourth").SwitchTo().ParentFrame().SwitchTo().Frame("first"); - Assert.AreEqual("1", driver.FindElement(By.Id("pageNumber")).Text); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("1")); } [Test] @@ -244,7 +244,7 @@ public void ShouldBeAbleToSwitchToParentFrameFromASecondLevelFrame() driver.Url = framesetPage; driver.SwitchTo().Frame("fourth").SwitchTo().Frame("child1").SwitchTo().ParentFrame().SwitchTo().Frame("child2"); - Assert.AreEqual("11", driver.FindElement(By.Id("pageNumber")).Text); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("11")); } [Test] @@ -252,7 +252,7 @@ public void SwitchingToParentFrameFromDefaultContextIsNoOp() { driver.Url = xhtmlTestPage; driver.SwitchTo().ParentFrame(); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -291,7 +291,7 @@ public void ShouldFocusOnTheReplacementWhenAFrameFollowsALinkToA_TopTargettedPag driver.FindElement(By.LinkText("top")).Click(); WaitFor(() => { return driver.Title == "XHTML Test Page"; }, "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -314,7 +314,7 @@ public void ShouldAllowTheUserToSwitchToAnIFrameAndRemainFocusedOnIt() driver.FindElement(By.Id("submitButton")).Click(); string hello = GetTextOfGreetingElement(); - Assert.AreEqual(hello, "Success!"); + Assert.That(hello, Is.EqualTo("Success!")); } [Test] @@ -327,11 +327,11 @@ public void ShouldBeAbleToClickInAFrame() driver.FindElement(By.Id("submitButton")).Click(); // driver should still be focused on frame "third" ... - Assert.AreEqual("Success!", GetTextOfGreetingElement()); + Assert.That(GetTextOfGreetingElement(), Is.EqualTo("Success!")); // Make sure it was really frame "third" which was replaced ... driver.SwitchTo().DefaultContent().SwitchTo().Frame("third"); - Assert.AreEqual("Success!", GetTextOfGreetingElement()); + Assert.That(GetTextOfGreetingElement(), Is.EqualTo("Success!")); } [Test] @@ -354,11 +354,11 @@ public void ShouldBeAbleToClickInASubFrame() driver.FindElement(By.Id("submitButton")).Click(); // driver should still be focused on frame "iframe1" inside frame "sixth" ... - Assert.AreEqual("Success!", GetTextOfGreetingElement()); + Assert.That(GetTextOfGreetingElement(), Is.EqualTo("Success!")); // Make sure it was really frame "iframe1" inside frame "sixth" which was replaced ... driver.SwitchTo().DefaultContent().SwitchTo().Frame("sixth").SwitchTo().Frame("iframe1"); - Assert.AreEqual("Success!", driver.FindElement(By.Id("greeting")).Text); + Assert.That(driver.FindElement(By.Id("greeting")).Text, Is.EqualTo("Success!")); } [Test] @@ -377,21 +377,21 @@ public void ShouldBeAbleToFindElementsInIframesByXPath() public void GetCurrentUrlShouldReturnTopLevelBrowsingContextUrl() { driver.Url = framesetPage; - Assert.AreEqual(framesetPage, driver.Url); + Assert.That(driver.Url, Is.EqualTo(framesetPage)); driver.SwitchTo().Frame("second"); - Assert.AreEqual(framesetPage, driver.Url); + Assert.That(driver.Url, Is.EqualTo(framesetPage)); } [Test] public void GetCurrentUrlShouldReturnTopLevelBrowsingContextUrlForIframes() { driver.Url = iframePage; - Assert.AreEqual(iframePage, driver.Url); + Assert.That(driver.Url, Is.EqualTo(iframePage)); driver.SwitchTo().Frame("iframe1"); - Assert.AreEqual(iframePage, driver.Url); + Assert.That(driver.Url, Is.EqualTo(iframePage)); } [Test] @@ -476,7 +476,7 @@ public void ShouldReturnWindowTitleInAFrameset() { driver.Url = framesetPage; driver.SwitchTo().Frame("third"); - Assert.AreEqual("Unique title", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Unique title")); } [Test] @@ -518,7 +518,7 @@ public void ShouldNotSwitchMagicallyToTheTopWindow() { url = url.Substring(0, url.Length - 1); } - Assert.AreEqual(baseUrl + "bug4876_iframe.html", url); + Assert.That(url, Is.EqualTo(baseUrl + "bug4876_iframe.html")); } } } @@ -557,13 +557,13 @@ public void ShouldBeAbleToSelectAFrameByName() driver.Url = framesetPage; driver.SwitchTo().Frame("second"); - Assert.AreEqual(driver.FindElement(By.Id("pageNumber")).Text, "2"); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("2")); driver.SwitchTo().DefaultContent().SwitchTo().Frame("third"); driver.FindElement(By.Id("changeme")).Click(); driver.SwitchTo().DefaultContent().SwitchTo().Frame("second"); - Assert.AreEqual(driver.FindElement(By.Id("pageNumber")).Text, "2"); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("2")); } [Test] diff --git a/dotnet/test/common/GetLogsTest.cs b/dotnet/test/common/GetLogsTest.cs index 59e28ba091aa33..79524819f2e7ed 100644 --- a/dotnet/test/common/GetLogsTest.cs +++ b/dotnet/test/common/GetLogsTest.cs @@ -89,7 +89,7 @@ public void TurningOffLogShouldMeanNoLogMessages() { CreateWebDriverWithLogging(logType, LogLevel.Off); ReadOnlyCollection entries = localDriver.Manage().Logs.GetLog(logType); - Assert.AreEqual(0, entries.Count, string.Format("There should be no log entries for log type {0} when logging is turned off.", logType)); + Assert.That(entries, Is.Empty, string.Format("There should be no log entries for log type {0} when logging is turned off.", logType)); QuitDriver(); } } diff --git a/dotnet/test/common/GetMultipleAttributeTest.cs b/dotnet/test/common/GetMultipleAttributeTest.cs index 48e441b50d4e56..26cf57d4813c11 100644 --- a/dotnet/test/common/GetMultipleAttributeTest.cs +++ b/dotnet/test/common/GetMultipleAttributeTest.cs @@ -37,7 +37,7 @@ public void MultipleAttributeShouldBeTrueWhenSet() { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithMultipleEqualsMultiple")); - Assert.AreEqual("true", element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.EqualTo("true")); } [Test] @@ -45,7 +45,7 @@ public void MultipleAttributeShouldBeTrueWhenSelectHasMutilpeWithValueAsBlank() { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithEmptyStringMultiple")); - Assert.AreEqual("true", element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.EqualTo("true")); } [Test] @@ -53,7 +53,7 @@ public void MultipleAttributeShouldBeTrueWhenSelectHasMutilpeWithoutAValue() { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithMultipleWithoutValue")); - Assert.AreEqual("true", element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.EqualTo("true")); } [Test] @@ -61,7 +61,7 @@ public void MultipleAttributeShouldBeTrueWhenSelectHasMutilpeWithValueAsSomethin { driver.Url = selectPage; IWebElement element = driver.FindElement(By.Id("selectWithRandomMultipleValue")); - Assert.AreEqual("true", element.GetAttribute("multiple")); + Assert.That(element.GetAttribute("multiple"), Is.EqualTo("true")); } } } diff --git a/dotnet/test/common/I18Test.cs b/dotnet/test/common/I18Test.cs index 9c115b89b6dd9c..eeed6e357e5c8a 100644 --- a/dotnet/test/common/I18Test.cs +++ b/dotnet/test/common/I18Test.cs @@ -49,7 +49,7 @@ public void ShouldBeAbleToEnterHebrewTextFromLeftToRight() input.SendKeys(shalom); - Assert.AreEqual(shalom, input.GetAttribute("value")); + Assert.That(input.GetAttribute("value"), Is.EqualTo(shalom)); } [Test] @@ -60,7 +60,7 @@ public void ShouldBeAbleToEnterHebrewTextFromRightToLeft() input.SendKeys(tmunot); - Assert.AreEqual(tmunot, input.GetAttribute("value")); + Assert.That(input.GetAttribute("value"), Is.EqualTo(tmunot)); } [Test] @@ -86,7 +86,7 @@ public void ShouldBeAbleToEnterSupplementaryCharacters() IWebElement el = driver.FindElement(By.Name("i18n")); el.SendKeys(input); - Assert.AreEqual(input, el.GetAttribute("value")); + Assert.That(el.GetAttribute("value"), Is.EqualTo(input)); } [Test] @@ -98,7 +98,7 @@ public void ShouldBeAbleToReturnTheTextInAPage() string text = driver.FindElement(By.TagName("body")).Text; - Assert.AreEqual(shalom, text); + Assert.That(text, Is.EqualTo(shalom)); } } } diff --git a/dotnet/test/common/ImplicitWaitTest.cs b/dotnet/test/common/ImplicitWaitTest.cs index fc55cb7fbd1536..4c6f6592abd543 100644 --- a/dotnet/test/common/ImplicitWaitTest.cs +++ b/dotnet/test/common/ImplicitWaitTest.cs @@ -86,7 +86,7 @@ public void ShouldStillFailToFindElementsWhenImplicitWaitsAreEnabled() driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(500); ReadOnlyCollection elements = driver.FindElements(By.ClassName("redbox")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } [Test] @@ -99,7 +99,7 @@ public void ShouldReturnAfterFirstAttemptToFindManyAfterDisablingImplicitWaits() driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(0); add.Click(); ReadOnlyCollection elements = driver.FindElements(By.ClassName("redbox")); - Assert.AreEqual(0, elements.Count); + Assert.That(elements, Is.Empty); } [Test] diff --git a/dotnet/test/common/Interactions/ActionBuilderTest.cs b/dotnet/test/common/Interactions/ActionBuilderTest.cs index a762bc92639d2d..d7acb6a95888f1 100644 --- a/dotnet/test/common/Interactions/ActionBuilderTest.cs +++ b/dotnet/test/common/Interactions/ActionBuilderTest.cs @@ -19,7 +19,6 @@ using NUnit.Framework; using System; -using System.Collections; using System.Collections.Generic; namespace OpenQA.Selenium.Interactions @@ -52,11 +51,12 @@ public void OutputsPointerEventsToDictionary() var dictionary = sequence[0].ToDictionary(); Console.WriteLine(dictionary); - Assert.AreEqual("pointer", dictionary["type"]); - Assert.NotNull(dictionary["id"]); - Assert.NotNull(dictionary["parameters"]); + Assert.That(dictionary, Does.ContainKey("type").WithValue("pointer")); + Assert.That(dictionary["id"], Is.Not.Null); + Assert.That(dictionary["parameters"], Is.Not.Null); + var parameters = new Dictionary { { "pointerType", "pen" } }; - CollectionAssert.AreEquivalent(parameters, (IEnumerable)dictionary["parameters"]); + Assert.That(dictionary["parameters"], Is.EquivalentTo(parameters)); var events = new Dictionary { @@ -72,8 +72,8 @@ public void OutputsPointerEventsToDictionary() {"type", "pointerDown"}, {"button", 0} }; - var actions = (IList)dictionary["actions"]; - CollectionAssert.AreEquivalent(events, (IEnumerable)actions[0]); + var actions = (IList)dictionary["actions"]; + Assert.That(actions[0], Is.EquivalentTo(events)); } } } diff --git a/dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs b/dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs index 88f148ca1cf3d8..88c235a5a19b8e 100644 --- a/dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs +++ b/dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs @@ -58,7 +58,7 @@ public void ShouldSetActiveKeyboard() KeyInputDevice device = actionProvider.GetActiveKeyboard(); - Assert.AreEqual("test keyboard", device.DeviceName); + Assert.That(device.DeviceName, Is.EqualTo("test keyboard")); } [Test] @@ -77,7 +77,7 @@ public void ShouldAllowBasicKeyboardInput() sendLowercase.Perform(); - Assert.AreEqual("abc def", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("abc def")); } @@ -154,7 +154,7 @@ public void ShouldAllowSendingKeysWithShiftPressed() AssertThatFormEventsFiredAreExactly("focus keydown keydown keypress keyup keydown keypress keyup keyup"); - Assert.AreEqual("AB", keysEventInput.GetAttribute("value")); + Assert.That(keysEventInput.GetAttribute("value"), Is.EqualTo("AB")); } [Test] @@ -333,12 +333,12 @@ public void ShouldAllowSendingKeysWithLeftShiftPressed() AssertThatFormEventsFiredAreExactly("focus keydown keydown keypress keyup keydown keypress keyup keyup"); - Assert.AreEqual("AB", keysEventInput.GetAttribute("value")); + Assert.That(keysEventInput.GetAttribute("value"), Is.EqualTo("AB")); } private void AssertThatFormEventsFiredAreExactly(string message, string expected) { - Assert.AreEqual(expected, driver.FindElement(By.Id("result")).Text.Trim(), message); + Assert.That(driver.FindElement(By.Id("result")).Text.Trim(), Is.EqualTo(expected), message); } private void AssertThatFormEventsFiredAreExactly(string expected) @@ -348,7 +348,7 @@ private void AssertThatFormEventsFiredAreExactly(string expected) private void AssertThatBodyEventsFiredAreExactly(string expected) { - Assert.AreEqual(expected, driver.FindElement(By.Id("body_result")).Text.Trim()); + Assert.That(driver.FindElement(By.Id("body_result")).Text.Trim(), Is.EqualTo(expected)); } private Func BackgroundColorToChangeFrom(IWebElement element, Color currentColor) diff --git a/dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs b/dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs index f88252cc4d1a9f..41ffa4812164fb 100644 --- a/dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs +++ b/dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs @@ -45,7 +45,7 @@ public void ShouldSetActivePointer() PointerInputDevice device = actionProvider.GetActivePointer(); - Assert.AreEqual("test mouse", device.DeviceName); + Assert.That(device.DeviceName, Is.EqualTo("test mouse")); } [Test] @@ -53,7 +53,7 @@ public void ShouldAllowDraggingElementWithMouseMovesItToAnotherList() { PerformDragAndDropWithMouse(); IWebElement dragInto = driver.FindElement(By.Id("sortable1")); - Assert.AreEqual(6, dragInto.FindElements(By.TagName("li")).Count); + Assert.That(dragInto.FindElements(By.TagName("li")), Has.Exactly(6).Items); } // This test is very similar to DraggingElementWithMouse. The only @@ -116,7 +116,7 @@ public void ShouldAllowDragAndDrop() dropInto = driver.FindElement(By.Id("droppable")); string text = dropInto.FindElement(By.TagName("p")).Text; - Assert.AreEqual("Dropped!", text); + Assert.That(text, Is.EqualTo("Dropped!")); } [Test] @@ -130,7 +130,7 @@ public void ShouldAllowDoubleClick() IAction dblClick = actionProvider.DoubleClick(toDoubleClick).Build(); dblClick.Perform(); - Assert.AreEqual("DoubleClicked", toDoubleClick.GetAttribute("value")); + Assert.That(toDoubleClick.GetAttribute("value"), Is.EqualTo("DoubleClicked")); } [Test] @@ -144,7 +144,7 @@ public void ShouldAllowContextClick() IAction contextClick = actionProvider.ContextClick(toContextClick).Build(); contextClick.Perform(); - Assert.AreEqual("ContextClicked", toContextClick.GetAttribute("value")); + Assert.That(toContextClick.GetAttribute("value"), Is.EqualTo("ContextClicked")); } [Test] @@ -159,7 +159,7 @@ public void ShouldAllowMoveAndClick() IAction contextClick = actionProvider.MoveToElement(toClick).Click().Build(); contextClick.Perform(); - Assert.AreEqual("Clicked", toClick.GetAttribute("value"), "Value should change to Clicked."); + Assert.That(toClick.GetAttribute("value"), Is.EqualTo("Clicked"), "Value should change to Clicked."); } [Test] @@ -175,8 +175,8 @@ public void ShouldMoveToLocation() IWebElement location = driver.FindElement(By.Id("absolute-location")); var coordinates = location.Text.Split(','); - Assert.AreEqual("100", coordinates[0].Trim()); - Assert.AreEqual("200", coordinates[1].Trim()); + Assert.That(coordinates[0].Trim(), Is.EqualTo("100")); + Assert.That(coordinates[1].Trim(), Is.EqualTo("200")); } [Test] @@ -286,14 +286,14 @@ public void ShouldAllowUsersToHoverOverElements() } IWebElement item = driver.FindElement(By.Id("item1")); - Assert.AreEqual("", item.Text); + Assert.That(item.Text, Is.EqualTo("")); ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].style.background = 'green'", element); Actions actionBuilder = new Actions(driver); actionBuilder.MoveToElement(element).Perform(); item = driver.FindElement(By.Id("item1")); - Assert.AreEqual("Item 1", item.Text); + Assert.That(item.Text, Is.EqualTo("Item 1")); } [Test] @@ -307,7 +307,7 @@ public void HoverPersists() IWebElement element = driver.FindElement(By.Id("menu1")); IWebElement item = driver.FindElement(By.Id("item1")); - Assert.AreEqual(string.Empty, item.Text); + Assert.That(item.Text, Is.Empty); ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].style.background = 'green'", element); new Actions(driver).MoveToElement(element).Perform(); @@ -317,7 +317,7 @@ public void HoverPersists() WaitFor(ElementTextToNotEqual(item, ""), "Element text was empty after timeout"); - Assert.AreEqual("Item 1", item.Text); + Assert.That(item.Text, Is.EqualTo("Item 1")); } [Test] @@ -462,7 +462,7 @@ private void PerformDragAndDropWithMouse() IAction drop = new Actions(driver).Release(dragInto).Build(); - Assert.AreEqual("Nothing happened.", dragReporter.Text); + Assert.That(dragReporter.Text, Is.EqualTo("Nothing happened.")); holdItem.Perform(); moveToSpecificItem.Perform(); diff --git a/dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs b/dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs index f46cb647dc510f..38ef28a7a8fcd5 100644 --- a/dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs +++ b/dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs @@ -46,7 +46,7 @@ public void ShouldSetActiveWheel() WheelInputDevice device = actionProvider.GetActiveWheel(); - Assert.AreEqual("test wheel", device.DeviceName); + Assert.That(device.DeviceName, Is.EqualTo("test wheel")); } [Test] @@ -56,11 +56,11 @@ public void ShouldAllowScrollingToAnElement() driver.Url = scrollFrameOutOfViewport; IWebElement iframe = driver.FindElement(By.TagName("iframe")); - Assert.IsFalse(IsInViewport(iframe)); + Assert.That(IsInViewport(iframe), Is.False); new Actions(driver).ScrollToElement(iframe).Build().Perform(); - Assert.IsTrue(IsInViewport(iframe)); + Assert.That(IsInViewport(iframe), Is.True); } [Test] @@ -78,7 +78,7 @@ public void ShouldScrollFromElementByGivenAmount() driver.SwitchTo().Frame(iframe); IWebElement checkbox = driver.FindElement(By.Name("scroll_checkbox")); - Assert.IsTrue(IsInViewport(checkbox)); + Assert.That(IsInViewport(checkbox), Is.True); } [Test] @@ -99,7 +99,7 @@ public void ShouldAllowScrollingFromElementByGivenAmountWithOffset() IWebElement iframe = driver.FindElement(By.TagName("iframe")); driver.SwitchTo().Frame(iframe); IWebElement checkbox = driver.FindElement(By.Name("scroll_checkbox")); - Assert.IsTrue(IsInViewport(checkbox)); + Assert.That(IsInViewport(checkbox), Is.True); } [Test] @@ -128,7 +128,7 @@ public void ShouldAllowScrollingFromViewportByGivenAmount() new Actions(driver).ScrollByAmount(0, deltaY).Build().Perform(); - Assert.IsTrue(IsInViewport(footer)); + Assert.That(IsInViewport(footer), Is.True); } [Test] @@ -147,7 +147,7 @@ public void ShouldAllowScrollingFromViewportByGivenAmountFromOrigin() IWebElement iframe = driver.FindElement(By.TagName("iframe")); driver.SwitchTo().Frame(iframe); IWebElement checkbox = driver.FindElement(By.Name("scroll_checkbox")); - Assert.IsTrue(IsInViewport(checkbox)); + Assert.That(IsInViewport(checkbox), Is.True); } [Test] diff --git a/dotnet/test/common/Interactions/CombinedInputActionsTest.cs b/dotnet/test/common/Interactions/CombinedInputActionsTest.cs index 9133254c209c51..9fcb0d42422c79 100644 --- a/dotnet/test/common/Interactions/CombinedInputActionsTest.cs +++ b/dotnet/test/common/Interactions/CombinedInputActionsTest.cs @@ -70,7 +70,7 @@ public void PlainClickingOnMultiSelectionList() showButton.Click(); IWebElement resultElement = driver.FindElement(By.Id("result")); - Assert.AreEqual("cheddar", resultElement.Text, "Should have picked the third option only."); + Assert.That(resultElement.Text, Is.EqualTo("cheddar"), "Should have picked the third option only."); } [Test] @@ -94,7 +94,7 @@ public void ShouldAllowSettingActivePointerWithKeyBoardActions() loginAction.Perform(); IAlert alert = driver.SwitchTo().Alert(); - Assert.AreEqual("You have successfully logged in.", alert.Text); + Assert.That(alert.Text, Is.EqualTo("You have successfully logged in.")); alert.Accept(); } @@ -120,7 +120,7 @@ public void ShiftClickingOnMultiSelectionList() showButton.Click(); IWebElement resultElement = driver.FindElement(By.Id("result")); - Assert.AreEqual("roquefort parmigiano cheddar", resultElement.Text, "Should have picked the last three options."); + Assert.That(resultElement.Text, Is.EqualTo("roquefort parmigiano cheddar"), "Should have picked the last three options."); } [Test] @@ -149,7 +149,7 @@ public void ControlClickingOnMultiSelectionList() showButton.Click(); IWebElement resultElement = driver.FindElement(By.Id("result")); - Assert.AreEqual("roquefort cheddar", resultElement.Text, "Should have picked the first and third options."); + Assert.That(resultElement.Text, Is.EqualTo("roquefort cheddar"), "Should have picked the first and third options."); } [Test] @@ -165,7 +165,7 @@ public void ControlClickingOnCustomMultiSelectionList() IWebElement reportingElement = driver.FindElement(By.Id("infodiv")); - Assert.AreEqual("no info", reportingElement.Text); + Assert.That(reportingElement.Text, Is.EqualTo("no info")); ReadOnlyCollection listItems = driver.FindElements(By.TagName("li")); @@ -177,11 +177,11 @@ public void ControlClickingOnCustomMultiSelectionList() selectThreeItems.Perform(); - Assert.AreEqual("#item2 #item4 #item6", reportingElement.Text); + Assert.That(reportingElement.Text, Is.EqualTo("#item2 #item4 #item6")); // Now click on another element, make sure that's the only one selected. new Actions(driver).Click(listItems[6]).Build().Perform(); - Assert.AreEqual("#item7", reportingElement.Text); + Assert.That(reportingElement.Text, Is.EqualTo("#item7")); } [Test] @@ -292,7 +292,7 @@ public void ChordControlCutAndPaste() .SendKeys(element, "abc def") .Perform(); - Assert.AreEqual("abc def", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abc def")); //TODO: Figure out why calling sendKey(Key.CONTROL + "a") and then //sendKeys("x") does not work on Linux. @@ -303,7 +303,7 @@ public void ChordControlCutAndPaste() // Release keys before next step. new Actions(driver).SendKeys(Keys.Null).Perform(); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); new Actions(driver).KeyDown(controlModifier) .SendKeys("v") @@ -312,7 +312,7 @@ public void ChordControlCutAndPaste() new Actions(driver).SendKeys(Keys.Null).Perform(); - Assert.AreEqual("abc defabc def", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abc defabc def")); } [Test] @@ -331,8 +331,8 @@ public void CombiningShiftAndClickResultsInANewWindow() .KeyUp(Keys.Shift) .Perform(); WaitFor(() => { return driver.WindowHandles.Count > 1; }, "Did not receive new window"); - Assert.AreEqual(2, driver.WindowHandles.Count, "Should have opened a new window."); - Assert.AreEqual(originalTitle, driver.Title, "Should not have navigated away."); + Assert.That(driver.WindowHandles, Has.Exactly(2).Items, "Should have opened a new window."); + Assert.That(driver.Title, Is.EqualTo(originalTitle), "Should not have navigated away."); string originalHandle = driver.CurrentWindowHandle; foreach (string newHandle in driver.WindowHandles) @@ -358,7 +358,7 @@ public void HoldingDownShiftKeyWhileClicking() new Actions(driver).MoveToElement(toClick).KeyDown(Keys.Shift).Click().KeyUp(Keys.Shift).Perform(); IWebElement shiftInfo = WaitFor(() => { return driver.FindElement(By.Id("shiftKey")); }, "Could not find element with id 'shiftKey'"); - Assert.AreEqual("true", shiftInfo.Text); + Assert.That(shiftInfo.Text, Is.EqualTo("true")); } [Test] @@ -373,7 +373,7 @@ public void CanClickOnSuckerFishStyleMenu() IWebElement element = driver.FindElement(By.Id("menu1")); IWebElement target = driver.FindElement(By.Id("item1")); - Assert.AreEqual(string.Empty, target.Text); + Assert.That(target.Text, Is.Empty); ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].style.background = 'green'", element); new Actions(driver).MoveToElement(element).Build().Perform(); @@ -413,7 +413,7 @@ public void PerformsPause() { DateTime start = DateTime.Now; new Actions(driver).Pause(TimeSpan.FromMilliseconds(1200)).Build().Perform(); - Assert.IsTrue(DateTime.Now - start > TimeSpan.FromMilliseconds(1200)); + Assert.That(DateTime.Now - start > TimeSpan.FromMilliseconds(1200), Is.True); } [Test] diff --git a/dotnet/test/common/Interactions/DragAndDropTest.cs b/dotnet/test/common/Interactions/DragAndDropTest.cs index 87a900aefa86be..0eb0f98c03d5d6 100644 --- a/dotnet/test/common/Interactions/DragAndDropTest.cs +++ b/dotnet/test/common/Interactions/DragAndDropTest.cs @@ -44,13 +44,13 @@ public void DragAndDropRelative() driver.Url = dragAndDropPage; IWebElement img = driver.FindElement(By.Id("test1")); Point expectedLocation = Drag(img, img.Location, 150, 200); - Assert.AreEqual(expectedLocation, img.Location); + Assert.That(img.Location, Is.EqualTo(expectedLocation)); expectedLocation = Drag(img, img.Location, -50, -25); - Assert.AreEqual(expectedLocation, img.Location); + Assert.That(img.Location, Is.EqualTo(expectedLocation)); expectedLocation = Drag(img, img.Location, 0, 0); - Assert.AreEqual(expectedLocation, img.Location); + Assert.That(img.Location, Is.EqualTo(expectedLocation)); expectedLocation = Drag(img, img.Location, 1, -1); - Assert.AreEqual(expectedLocation, img.Location); + Assert.That(img.Location, Is.EqualTo(expectedLocation)); } [Test] @@ -61,7 +61,7 @@ public void DragAndDropToElement() IWebElement img2 = driver.FindElement(By.Id("test2")); Actions actionProvider = new Actions(driver); actionProvider.DragAndDrop(img2, img1).Perform(); - Assert.AreEqual(img1.Location, img2.Location); + Assert.That(img2.Location, Is.EqualTo(img1.Location)); } [Test] @@ -87,7 +87,7 @@ public void DragAndDropToElementInIframe() IWebElement img2 = driver.FindElement(By.Id("test2")); new Actions(driver).DragAndDrop(img2, img1).Perform(); - Assert.AreEqual(img1.Location, img2.Location); + Assert.That(img2.Location, Is.EqualTo(img1.Location)); } [Test] @@ -103,7 +103,7 @@ public void DragAndDropElementWithOffsetInIframeAtBottom() new Actions(driver).DragAndDropToOffset(img1, 20, 20).Perform(); initial.Offset(20, 20); - Assert.AreEqual(initial, img1.Location); + Assert.That(img1.Location, Is.EqualTo(initial)); } [Test] @@ -126,7 +126,7 @@ public void DragAndDropElementWithOffsetInScrolledDiv() new Actions(driver).DragAndDropToOffset(el, 3700, 3700).Perform(); initial.Offset(3700, 3700); - Assert.AreEqual(initial, el.Location); + Assert.That(el.Location, Is.EqualTo(initial)); } [Test] @@ -137,7 +137,7 @@ public void ElementInDiv() Point startLocation = img.Location; Point expectedLocation = Drag(img, startLocation, 100, 100); Point endLocation = img.Location; - Assert.AreEqual(expectedLocation, endLocation); + Assert.That(endLocation, Is.EqualTo(expectedLocation)); } [Test] @@ -172,7 +172,7 @@ public void ShouldAllowUsersToDragAndDropToElementsOffTheCurrentViewPort() driver.Url = dragAndDropPage; IWebElement img = driver.FindElement(By.Id("test3")); Point expectedLocation = Drag(img, img.Location, 100, 100); - Assert.AreEqual(expectedLocation, img.Location); + Assert.That(img.Location, Is.EqualTo(expectedLocation)); } finally { @@ -204,15 +204,15 @@ public void DragAndDropOnJQueryItems() text = dropInto.FindElement(By.TagName("p")).Text; } - Assert.AreEqual("Dropped!", text); + Assert.That(text, Is.EqualTo("Dropped!")); IWebElement reporter = driver.FindElement(By.Id("drop_reports")); // Assert that only one mouse click took place and the mouse was moved // during it. string reporterText = reporter.Text; Assert.That(reporterText, Does.Match("start( move)* down( move)+ up")); - Assert.AreEqual(1, Regex.Matches(reporterText, "down").Count, "Reporter text:" + reporterText); - Assert.AreEqual(1, Regex.Matches(reporterText, "up").Count, "Reporter text:" + reporterText); + Assert.That(Regex.Matches(reporterText, "down"), Has.Count.EqualTo(1), "Reporter text:" + reporterText); + Assert.That(Regex.Matches(reporterText, "up"), Has.Count.EqualTo(1), "Reporter text:" + reporterText); Assert.That(reporterText, Does.Contain("move")); } @@ -230,11 +230,11 @@ public void CanDragAnElementNotVisibleInTheCurrentViewportDueToAParentOverflow() Point targetLocation = dragTo.Location; int yOffset = targetLocation.Y - srcLocation.Y; - Assert.AreNotEqual(0, yOffset); + Assert.That(yOffset, Is.Not.Zero); new Actions(driver).DragAndDropToOffset(toDrag, 0, yOffset).Perform(); - Assert.AreEqual(dragTo.Location, toDrag.Location); + Assert.That(toDrag.Location, Is.EqualTo(dragTo.Location)); } //------------------------------------------------------------------ @@ -250,7 +250,7 @@ public void DragAndDropRelativeAndToElement() actionProvider.DragAndDropToOffset(img1, 100, 100).Perform(); actionProvider.Reset(); actionProvider.DragAndDrop(img2, img1).Perform(); - Assert.AreEqual(img1.Location, img2.Location); + Assert.That(img2.Location, Is.EqualTo(img1.Location)); } private Point Drag(IWebElement elem, Point initialLocation, int moveRightBy, int moveDownBy) diff --git a/dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs b/dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs index 63deb2bece47bf..5c3e3150061dd0 100644 --- a/dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs +++ b/dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs @@ -72,7 +72,7 @@ public void ShouldCreateFileIfDoesNotExist() fileLogHandler2.Handle(new LogEvent(typeof(FileLogHandlerTest), DateTimeOffset.Now, LogEventLevel.Info, "test message")); } - Assert.That(Regex.Matches(File.ReadAllText(tempFile), "test message").Count, Is.EqualTo(1)); + Assert.That(Regex.Matches(File.ReadAllText(tempFile), "test message"), Has.Count.EqualTo(1)); } finally { @@ -97,7 +97,7 @@ public void ShouldAppendFileIfExists() fileLogHandler2.Handle(new LogEvent(typeof(FileLogHandlerTest), DateTimeOffset.Now, LogEventLevel.Info, "test message")); } - Assert.That(Regex.Matches(File.ReadAllText(tempFilePath), "test message").Count, Is.EqualTo(2)); + Assert.That(Regex.Matches(File.ReadAllText(tempFilePath), "test message"), Has.Count.EqualTo(2)); } finally { @@ -117,7 +117,7 @@ public void ShouldOverwriteFileIfExists() fileLogHandler.Handle(new LogEvent(typeof(FileLogHandlerTest), DateTimeOffset.Now, LogEventLevel.Info, "test message")); } - Assert.That(Regex.Matches(File.ReadAllText(tempFile), "test message").Count, Is.EqualTo(1)); + Assert.That(Regex.Matches(File.ReadAllText(tempFile), "test message"), Has.Count.EqualTo(1)); } finally { @@ -137,7 +137,7 @@ public void ShouldAppendFileIfDoesNotExist() fileLogHandler.Handle(new LogEvent(typeof(FileLogHandlerTest), DateTimeOffset.Now, LogEventLevel.Info, "test message")); } - Assert.That(Regex.Matches(File.ReadAllText(tempFilePath), "test message").Count, Is.EqualTo(1)); + Assert.That(Regex.Matches(File.ReadAllText(tempFilePath), "test message"), Has.Count.EqualTo(1)); } finally { diff --git a/dotnet/test/common/JavascriptEnabledBrowserTest.cs b/dotnet/test/common/JavascriptEnabledBrowserTest.cs index 2c87086c897039..ea9d267db29d85 100644 --- a/dotnet/test/common/JavascriptEnabledBrowserTest.cs +++ b/dotnet/test/common/JavascriptEnabledBrowserTest.cs @@ -32,9 +32,9 @@ public void DocumentShouldReflectLatestTitle() { driver.Url = javascriptPage; - Assert.AreEqual("Testing Javascript", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Testing Javascript")); driver.FindElement(By.LinkText("Change the page title!")).Click(); - Assert.AreEqual("Changed", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Changed")); } [Test] @@ -42,13 +42,13 @@ public void DocumentShouldReflectLatestDom() { driver.Url = javascriptPage; String currentText = driver.FindElement(By.XPath("//div[@id='dynamo']")).Text; - Assert.AreEqual("What's for dinner?", currentText); + Assert.That(currentText, Is.EqualTo("What's for dinner?")); IWebElement element = driver.FindElement(By.LinkText("Update a div")); element.Click(); String newText = driver.FindElement(By.XPath("//div[@id='dynamo']")).Text; - Assert.AreEqual("Fish and chips!", newText); + Assert.That(newText, Is.EqualTo("Fish and chips!")); } [Test] @@ -60,7 +60,7 @@ public void ShouldWaitForLoadsToCompleteAfterJavascriptCausesANewPageToLoad() driver.FindElement(By.Id("changeme")).Click(); WaitFor(() => { return driver.Title == "Page3"; }, "Browser title was not 'Page3'"); - Assert.AreEqual("Page3", driver.Title); + Assert.That(driver.Title, Is.EqualTo("Page3")); } [Test] @@ -73,7 +73,7 @@ public void ShouldBeAbleToFindElementAfterJavascriptCausesANewPageToLoad() driver.FindElement(By.Id("changeme")).Click(); WaitFor(() => { return driver.Title == "Page3"; }, "Browser title was not 'Page3'"); - Assert.AreEqual("3", driver.FindElement(By.Id("pageNumber")).Text); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("3")); } [Test] @@ -83,7 +83,7 @@ public void ShouldFireOnChangeEventWhenSettingAnElementsValue() driver.FindElement(By.Id("change")).SendKeys("foo"); String result = driver.FindElement(By.Id("result")).Text; - Assert.AreEqual("change", result); + Assert.That(result, Is.EqualTo("change")); } [Test] @@ -94,7 +94,7 @@ public void ShouldBeAbleToSubmitFormsByCausingTheOnClickEventToFire() element.Click(); WaitFor(() => { return driver.Title == "We Arrive Here"; }, "Browser title was not 'We Arrive Here'"); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -105,7 +105,7 @@ public void ShouldBeAbleToClickOnSubmitButtons() element.Click(); WaitFor(() => { return driver.Title == "We Arrive Here"; }, "Browser title was not 'We Arrive Here'"); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -113,11 +113,11 @@ public void Issue80ClickShouldGenerateClickEvent() { driver.Url = javascriptPage; IWebElement element = driver.FindElement(By.Id("clickField")); - Assert.AreEqual("Hello", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("Hello")); element.Click(); - Assert.AreEqual("Clicked", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("Clicked")); } [Test] @@ -128,7 +128,7 @@ public void ShouldBeAbleToSwitchToFocusedElement() driver.FindElement(By.Id("switchFocus")).Click(); IWebElement element = driver.SwitchTo().ActiveElement(); - Assert.AreEqual("theworks", element.GetAttribute("id")); + Assert.That(element.GetAttribute("id"), Is.EqualTo("theworks")); } [Test] @@ -138,7 +138,7 @@ public void IfNoElementHasFocusTheActiveElementIsTheBody() IWebElement element = driver.SwitchTo().ActiveElement(); - Assert.AreEqual("body", element.GetAttribute("name")); + Assert.That(element.GetAttribute("name"), Is.EqualTo("body")); } [Test] diff --git a/dotnet/test/common/MiscTest.cs b/dotnet/test/common/MiscTest.cs index a979bd1071d60b..dbccd948ed3717 100644 --- a/dotnet/test/common/MiscTest.cs +++ b/dotnet/test/common/MiscTest.cs @@ -40,13 +40,13 @@ public void ShouldReturnTitleOfPageIfSet() public void ShouldReportTheCurrentUrlCorrectly() { driver.Url = macbethPage; - Assert.AreEqual(macbethPage, driver.Url); + Assert.That(driver.Url, Is.EqualTo(macbethPage)); driver.Url = simpleTestPage; - Assert.AreEqual(simpleTestPage, driver.Url); + Assert.That(driver.Url, Is.EqualTo(simpleTestPage)); driver.Url = javascriptPage; - Assert.AreEqual(javascriptPage, driver.Url); + Assert.That(driver.Url, Is.EqualTo(javascriptPage)); } [Test] @@ -82,7 +82,7 @@ public void ShouldBeAbleToGetTheSourceOfAnXmlDocument() driver.Url = simpleXmlDocument; string source = driver.PageSource.ToLower(); source = System.Text.RegularExpressions.Regex.Replace(source, "\\s", string.Empty); - Assert.AreEqual("baz", source); + Assert.That(source, Is.EqualTo("baz")); } // Test is ignored for all browsers, but is kept here in the source code for @@ -108,14 +108,14 @@ public void ClickingShouldNotTrampleWOrHInGlobalScope() foreach (string val in values) { - Assert.AreEqual(val, GetGlobalVar(driver, val)); + Assert.That(GetGlobalVar(driver, val), Is.EqualTo(val)); } driver.FindElement(By.Id("toclick")).Click(); foreach (string val in values) { - Assert.AreEqual(val, GetGlobalVar(driver, val)); + Assert.That(GetGlobalVar(driver, val), Is.EqualTo(val)); } } diff --git a/dotnet/test/common/NavigationTest.cs b/dotnet/test/common/NavigationTest.cs index 32a660f7cd57fa..6dce194d446d4b 100644 --- a/dotnet/test/common/NavigationTest.cs +++ b/dotnet/test/common/NavigationTest.cs @@ -48,10 +48,10 @@ public void ShouldGoBackAndForward() driver.Url = simpleTestPage; navigation.Back(); - Assert.AreEqual(macbethTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(macbethTitle)); navigation.Forward(); - Assert.AreEqual(simpleTestTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(simpleTestTitle)); } [Test] @@ -71,12 +71,12 @@ public void ShouldGoToUrlUsingString() navigation = driver.Navigate(); navigation.GoToUrl(macbethPage); - Assert.AreEqual(macbethTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(macbethTitle)); // We go to two pages to ensure that the browser wasn't // already at the desired page through a previous test. navigation.GoToUrl(simpleTestPage); - Assert.AreEqual(simpleTestTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(simpleTestTitle)); } [Test] @@ -88,12 +88,12 @@ public void ShouldGoToUrlUsingUri() navigation = driver.Navigate(); navigation.GoToUrl(macBeth); - Assert.AreEqual(driver.Title, macbethTitle); + Assert.That(macbethTitle, Is.EqualTo(driver.Title)); // We go to two pages to ensure that the browser wasn't // already at the desired page through a previous test. navigation.GoToUrl(simpleTest); - Assert.AreEqual(simpleTestTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(simpleTestTitle)); } [Test] @@ -103,21 +103,20 @@ public void ShouldRefreshPage() IWebElement changedDiv = driver.FindElement(By.Id("dynamo")); driver.FindElement(By.Id("updatediv")).Click(); - Assert.AreEqual("Fish and chips!", changedDiv.Text); + Assert.That(changedDiv.Text, Is.EqualTo("Fish and chips!")); driver.Navigate().Refresh(); changedDiv = driver.FindElement(By.Id("dynamo")); - Assert.AreEqual("What's for dinner?", changedDiv.Text); + Assert.That(changedDiv.Text, Is.EqualTo("What's for dinner?")); } [Test] [NeedsFreshDriver(IsCreatedBeforeTest = true)] - public Task ShouldNotHaveProblemNavigatingWithNoPagesBrowsedAsync() + public void ShouldNotHaveProblemNavigatingWithNoPagesBrowsedAsync() { var navigation = driver.Navigate(); - Assert.DoesNotThrowAsync(async () => await navigation.BackAsync()); - Assert.DoesNotThrowAsync(async () => await navigation.ForwardAsync()); - return Task.CompletedTask; + Assert.That(async () => await navigation.BackAsync(), Throws.Nothing); + Assert.That(async () => await navigation.ForwardAsync(), Throws.Nothing); } [Test] @@ -129,10 +128,10 @@ public async Task ShouldGoBackAndForwardAsync() await navigation.GoToUrlAsync(simpleTestPage); await navigation.BackAsync(); - Assert.AreEqual(macbethTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(macbethTitle)); await navigation.ForwardAsync(); - Assert.AreEqual(simpleTestTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(simpleTestTitle)); } [Test] @@ -148,10 +147,10 @@ public async Task ShouldGoToUrlUsingStringAsync() var navigation = driver.Navigate(); await navigation.GoToUrlAsync(macbethPage); - Assert.AreEqual(macbethTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(macbethTitle)); await navigation.GoToUrlAsync(simpleTestPage); - Assert.AreEqual(simpleTestTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(simpleTestTitle)); } [Test] @@ -160,9 +159,9 @@ public void ShouldGoToUrlUsingUriAsync() var navigation = driver.Navigate(); navigation.GoToUrlAsync(new Uri(macbethPage)); - Assert.AreEqual(driver.Title, macbethTitle); + Assert.That(macbethTitle, Is.EqualTo(driver.Title)); navigation.GoToUrl(new Uri(simpleTestPage)); - Assert.AreEqual(simpleTestTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(simpleTestTitle)); } [Test] @@ -172,11 +171,11 @@ public async Task ShouldRefreshPageAsync() IWebElement changedDiv = driver.FindElement(By.Id("dynamo")); driver.FindElement(By.Id("updatediv")).Click(); - Assert.AreEqual("Fish and chips!", changedDiv.Text); + Assert.That(changedDiv.Text, Is.EqualTo("Fish and chips!")); await driver.Navigate().RefreshAsync(); changedDiv = driver.FindElement(By.Id("dynamo")); - Assert.AreEqual("What's for dinner?", changedDiv.Text); + Assert.That(changedDiv.Text, Is.EqualTo("What's for dinner?")); } } } diff --git a/dotnet/test/common/NetworkInterceptionTests.cs b/dotnet/test/common/NetworkInterceptionTests.cs index 10234945895d0b..59434fb563e867 100644 --- a/dotnet/test/common/NetworkInterceptionTests.cs +++ b/dotnet/test/common/NetworkInterceptionTests.cs @@ -57,7 +57,7 @@ public async Task TestCanInterceptNetworkCalls() driver.Url = simpleTestPage; string text = driver.FindElement(By.CssSelector("p")).Text; await network.StopMonitoring(); - Assert.AreEqual("I intercepted you", text); + Assert.That(text, Is.EqualTo("I intercepted you")); } } @@ -78,7 +78,7 @@ public async Task TestCanUseAuthorizationHandler() driver.Url = authenticationPage; string text = driver.FindElement(By.CssSelector("h1")).Text; await network.StopMonitoring(); - Assert.AreEqual("authorized", text); + Assert.That(text, Is.EqualTo("authorized")); } } } diff --git a/dotnet/test/common/PageLoadingTest.cs b/dotnet/test/common/PageLoadingTest.cs index 9cbb86c06bcb4b..0b231c94746e14 100644 --- a/dotnet/test/common/PageLoadingTest.cs +++ b/dotnet/test/common/PageLoadingTest.cs @@ -145,7 +145,7 @@ public void NormalStrategyShouldWaitForDocumentToBeLoaded() { driver.Url = simpleTestPage; - Assert.AreEqual(driver.Title, "Hello WebDriver"); + Assert.That(driver.Title, Is.EqualTo("Hello WebDriver")); } [Test] @@ -153,7 +153,7 @@ public void NormalStrategyShouldWaitForDocumentToBeLoaded() public void ShouldFollowRedirectsSentInTheHttpResponseHeaders() { driver.Url = redirectPage; - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -161,7 +161,7 @@ public void ShouldFollowMetaRedirects() { driver.Url = metaRedirectPage; WaitFor(() => { return driver.Title == "We Arrive Here"; }, "Browser title was not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -192,7 +192,7 @@ public void ShouldReturnUrlOnNotExistedPage() { string url = EnvironmentManager.Instance.UrlBuilder.WhereIs("not_existed_page.html"); driver.Url = url; - Assert.AreEqual(url, driver.Url); + Assert.That(driver.Url, Is.EqualTo(url)); } [Test] @@ -202,11 +202,11 @@ public void ShouldBeAbleToLoadAPageWithFramesetsAndWaitUntilAllFramesAreLoaded() driver.SwitchTo().Frame(0); IWebElement pageNumber = driver.FindElement(By.XPath("//span[@id='pageNumber']")); - Assert.AreEqual(pageNumber.Text.Trim(), "1"); + Assert.That(pageNumber.Text.Trim(), Is.EqualTo("1")); driver.SwitchTo().DefaultContent().SwitchTo().Frame(1); pageNumber = driver.FindElement(By.XPath("//span[@id='pageNumber']")); - Assert.AreEqual(pageNumber.Text.Trim(), "2"); + Assert.That(pageNumber.Text.Trim(), Is.EqualTo("2")); } [Test] @@ -223,7 +223,7 @@ public void ShouldDoNothingIfThereIsNothingToGoBackTo() if (driver.Title == originalTitle) { driver.Navigate().Back(); - Assert.AreEqual(originalTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(originalTitle)); } } @@ -234,11 +234,11 @@ public void ShouldBeAbleToNavigateBackInTheBrowserHistory() driver.FindElement(By.Id("imageButton")).Submit(); WaitFor(TitleToBeEqualTo("We Arrive Here"), "Browser title was not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); driver.Navigate().Back(); WaitFor(TitleToBeEqualTo("We Leave From Here"), "Browser title was not 'We Leave From Here'"); - Assert.AreEqual(driver.Title, "We Leave From Here"); + Assert.That(driver.Title, Is.EqualTo("We Leave From Here")); } [Test] @@ -248,11 +248,11 @@ public void ShouldBeAbleToNavigateBackInTheBrowserHistoryInPresenceOfIframes() driver.FindElement(By.Name("sameWindow")).Click(); WaitFor(TitleToBeEqualTo("This page has iframes"), "Browser title was not 'This page has iframes'"); - Assert.AreEqual(driver.Title, "This page has iframes"); + Assert.That(driver.Title, Is.EqualTo("This page has iframes")); driver.Navigate().Back(); WaitFor(TitleToBeEqualTo("XHTML Test Page"), "Browser title was not 'XHTML Test Page'"); - Assert.AreEqual(driver.Title, "XHTML Test Page"); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } [Test] @@ -262,15 +262,15 @@ public void ShouldBeAbleToNavigateForwardsInTheBrowserHistory() driver.FindElement(By.Id("imageButton")).Submit(); WaitFor(TitleToBeEqualTo("We Arrive Here"), "Browser title was not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); driver.Navigate().Back(); WaitFor(TitleToBeEqualTo("We Leave From Here"), "Browser title was not 'We Leave From Here'"); - Assert.AreEqual(driver.Title, "We Leave From Here"); + Assert.That(driver.Title, Is.EqualTo("We Leave From Here")); driver.Navigate().Forward(); WaitFor(TitleToBeEqualTo("We Arrive Here"), "Browser title was not 'We Arrive Here'"); - Assert.AreEqual(driver.Title, "We Arrive Here"); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } [Test] @@ -283,7 +283,7 @@ public void ShouldBeAbleToAccessPagesWithAnInsecureSslCertificate() driver.Url = url; // This should work - Assert.AreEqual(driver.Title, "Hello WebDriver"); + Assert.That(driver.Title, Is.EqualTo("Hello WebDriver")); } [Test] @@ -293,7 +293,7 @@ public void ShouldBeAbleToRefreshAPage() driver.Navigate().Refresh(); - Assert.AreEqual(driver.Title, "XHTML Test Page"); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); } /// diff --git a/dotnet/test/common/PartialLinkTextMatchTest.cs b/dotnet/test/common/PartialLinkTextMatchTest.cs index 111c7e301702a6..1d69fe0b7aea77 100644 --- a/dotnet/test/common/PartialLinkTextMatchTest.cs +++ b/dotnet/test/common/PartialLinkTextMatchTest.cs @@ -33,7 +33,7 @@ public void LinkWithFormattingTags() IWebElement res = elem.FindElement(By.PartialLinkText("link with formatting tags")); Assert.That(res, Is.Not.Null); - Assert.AreEqual("link with formatting tags", res.Text); + Assert.That(res.Text, Is.EqualTo("link with formatting tags")); } [Test] @@ -44,7 +44,7 @@ public void LinkWithLeadingSpaces() IWebElement res = elem.FindElement(By.PartialLinkText("link with leading space")); Assert.That(res, Is.Not.Null); - Assert.AreEqual("link with leading space", res.Text); + Assert.That(res.Text, Is.EqualTo("link with leading space")); } [Test] @@ -56,7 +56,7 @@ public void LinkWithTrailingSpace() IWebElement res = elem.FindElement(By.PartialLinkText("link with trailing space")); Assert.That(res, Is.Not.Null); - Assert.AreEqual("link with trailing space", res.Text); + Assert.That(res.Text, Is.EqualTo("link with trailing space")); } [Test] @@ -67,7 +67,7 @@ public void FindMultipleElements() ReadOnlyCollection elements = elem.FindElements(By.PartialLinkText("link")); Assert.That(elements, Is.Not.Null); - Assert.AreEqual(6, elements.Count); + Assert.That(elements, Has.Count.EqualTo(6)); } [Test] @@ -76,7 +76,7 @@ public void DriverCanGetLinkByLinkTestIgnoringTrailingWhitespace() driver.Url = simpleTestPage; IWebElement link = null; link = driver.FindElement(By.LinkText("link with trailing space")); - Assert.AreEqual("linkWithTrailingSpace", link.GetAttribute("id")); + Assert.That(link.GetAttribute("id"), Is.EqualTo("linkWithTrailingSpace")); } [Test] @@ -87,7 +87,7 @@ public void ElementCanGetLinkByLinkTestIgnoringTrailingWhitespace() IWebElement link = null; link = elem.FindElement(By.LinkText("link with trailing space")); - Assert.AreEqual("linkWithTrailingSpace", link.GetAttribute("id")); + Assert.That(link.GetAttribute("id"), Is.EqualTo("linkWithTrailingSpace")); } } } diff --git a/dotnet/test/common/PositionAndSizeTest.cs b/dotnet/test/common/PositionAndSizeTest.cs index 8b8f225148ec77..5d5cab17a89e50 100644 --- a/dotnet/test/common/PositionAndSizeTest.cs +++ b/dotnet/test/common/PositionAndSizeTest.cs @@ -43,40 +43,40 @@ public void ShouldBeAbleToDetermineTheLocationOfAnElement() public void ShouldGetCoordinatesOfAnElement() { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("coordinates_tests/simple_page.html"); - Assert.AreEqual(new Point(10, 10), GetLocationInViewPort(By.Id("box"))); - Assert.AreEqual(new Point(10, 10), GetLocationOnPage(By.Id("box"))); + Assert.That(GetLocationInViewPort(By.Id("box")), Is.EqualTo(new Point(10, 10))); + Assert.That(GetLocationOnPage(By.Id("box")), Is.EqualTo(new Point(10, 10))); } [Test] public void ShouldGetCoordinatesOfAnEmptyElement() { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("coordinates_tests/page_with_empty_element.html"); - Assert.AreEqual(new Point(10, 10), GetLocationInViewPort(By.Id("box"))); - Assert.AreEqual(new Point(10, 10), GetLocationOnPage(By.Id("box"))); + Assert.That(GetLocationInViewPort(By.Id("box")), Is.EqualTo(new Point(10, 10))); + Assert.That(GetLocationOnPage(By.Id("box")), Is.EqualTo(new Point(10, 10))); } [Test] public void ShouldGetCoordinatesOfATransparentElement() { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("coordinates_tests/page_with_transparent_element.html"); - Assert.AreEqual(new Point(10, 10), GetLocationInViewPort(By.Id("box"))); - Assert.AreEqual(new Point(10, 10), GetLocationOnPage(By.Id("box"))); + Assert.That(GetLocationInViewPort(By.Id("box")), Is.EqualTo(new Point(10, 10))); + Assert.That(GetLocationOnPage(By.Id("box")), Is.EqualTo(new Point(10, 10))); } [Test] public void ShouldGetCoordinatesOfAHiddenElement() { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("coordinates_tests/page_with_hidden_element.html"); - Assert.AreEqual(new Point(10, 10), GetLocationInViewPort(By.Id("box"))); - Assert.AreEqual(new Point(10, 10), GetLocationOnPage(By.Id("box"))); + Assert.That(GetLocationInViewPort(By.Id("box")), Is.EqualTo(new Point(10, 10))); + Assert.That(GetLocationOnPage(By.Id("box")), Is.EqualTo(new Point(10, 10))); } [Test] public void ShouldGetCoordinatesOfAnInvisibleElement() { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("coordinates_tests/page_with_invisible_element.html"); - Assert.AreEqual(new Point(0, 0), GetLocationInViewPort(By.Id("box"))); - Assert.AreEqual(new Point(0, 0), GetLocationOnPage(By.Id("box"))); + Assert.That(GetLocationInViewPort(By.Id("box")), Is.EqualTo(new Point(0, 0))); + Assert.That(GetLocationOnPage(By.Id("box")), Is.EqualTo(new Point(0, 0))); } [Test] @@ -99,8 +99,8 @@ public void ShouldGetCoordinatesOfAnElementInAFrame() driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("coordinates_tests/element_in_frame.html"); driver.SwitchTo().Frame("ifr"); IWebElement box = driver.FindElement(By.Id("box")); - Assert.AreEqual(new Point(10, 10), box.Location); - Assert.AreEqual(new Point(10, 10), GetLocationOnPage(By.Id("box"))); + Assert.That(box.Location, Is.EqualTo(new Point(10, 10))); + Assert.That(GetLocationOnPage(By.Id("box")), Is.EqualTo(new Point(10, 10))); } [Test] @@ -108,10 +108,10 @@ public void ShouldGetCoordinatesInViewPortOfAnElementInAFrame() { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("coordinates_tests/element_in_frame.html"); driver.SwitchTo().Frame("ifr"); - Assert.AreEqual(new Point(10, 10), GetLocationOnPage(By.Id("box"))); + Assert.That(GetLocationOnPage(By.Id("box")), Is.EqualTo(new Point(10, 10))); // GetLocationInViewPort only works within the context of a single frame // for W3C-spec compliant remote ends. - // Assert.AreEqual(new Point(25, 25), GetLocationInViewPort(By.Id("box"))); + // Assert.That(GetLocationInViewPort(By.Id("box")), Is.EqualTo(new Point(25, 25))); } [Test] @@ -120,10 +120,10 @@ public void ShouldGetCoordinatesInViewPortOfAnElementInANestedFrame() driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("coordinates_tests/element_in_nested_frame.html"); driver.SwitchTo().Frame("ifr"); driver.SwitchTo().Frame("ifr"); - Assert.AreEqual(new Point(10, 10), GetLocationOnPage(By.Id("box"))); + Assert.That(GetLocationOnPage(By.Id("box")), Is.EqualTo(new Point(10, 10))); // GetLocationInViewPort only works within the context of a single frame // for W3C-spec compliant remote ends. - // Assert.AreEqual(new Point(40, 40), GetLocationInViewPort(By.Id("box"))); + // Assert.That(GetLocationInViewPort(By.Id("box")), Is.EqualTo(new Point(40, 40))); } [Test] @@ -156,15 +156,15 @@ public void ShouldHandleNonIntegerPositionAndSize() IWebElement r2 = driver.FindElement(By.Id("r2")); string left = r2.GetCssValue("left"); - Assert.AreEqual(10.9, Math.Round(Convert.ToDecimal(left.Replace("px", "")), 1)); + Assert.That(Math.Round(Convert.ToDecimal(left.Replace("px", "")), 1), Is.EqualTo(10.9)); string top = r2.GetCssValue("top"); - Assert.AreEqual(10.1, Math.Round(Convert.ToDecimal(top.Replace("px", "")), 1)); - Assert.AreEqual(new Point(11, 10), r2.Location); + Assert.That(Math.Round(Convert.ToDecimal(top.Replace("px", "")), 1), Is.EqualTo(10.1)); + Assert.That(r2.Location, Is.EqualTo(new Point(11, 10))); string width = r2.GetCssValue("width"); - Assert.AreEqual(48.7, Math.Round(Convert.ToDecimal(width.Replace("px", "")), 1)); + Assert.That(Math.Round(Convert.ToDecimal(width.Replace("px", "")), 1), Is.EqualTo(48.7)); string height = r2.GetCssValue("height"); - Assert.AreEqual(49.3, Math.Round(Convert.ToDecimal(height.Replace("px", "")), 1)); - Assert.AreEqual(new Size(49, 49), r2.Size); + Assert.That(Math.Round(Convert.ToDecimal(height.Replace("px", "")), 1), Is.EqualTo(49.3)); + Assert.That(r2.Size, Is.EqualTo(new Size(49, 49))); } //------------------------------------------------------------------ diff --git a/dotnet/test/common/SessionHandlingTest.cs b/dotnet/test/common/SessionHandlingTest.cs index f0c50c329a691c..8b9c1db2f5504a 100644 --- a/dotnet/test/common/SessionHandlingTest.cs +++ b/dotnet/test/common/SessionHandlingTest.cs @@ -49,7 +49,7 @@ public void CallingQuitAfterClosingTheLastWindowIsANoOp() testDriver.Quit(); testDriver = EnvironmentManager.Instance.CreateDriverInstance(); testDriver.Url = xhtmlTestPage; - Assert.AreEqual("XHTML Test Page", testDriver.Title); + Assert.That(testDriver.Title, Is.EqualTo("XHTML Test Page")); testDriver.Quit(); } @@ -106,7 +106,7 @@ public void ShouldBeAbleToStartNewDriverAfterCallingCloseOnOnlyOpenWindow() testDriver.Dispose(); testDriver = EnvironmentManager.Instance.CreateDriverInstance(); testDriver.Url = xhtmlTestPage; - Assert.AreEqual("XHTML Test Page", testDriver.Title); + Assert.That(testDriver.Title, Is.EqualTo("XHTML Test Page")); testDriver.Close(); testDriver.Dispose(); } @@ -143,7 +143,7 @@ public void ShouldBeAbleToCallDisposeAfterQuit() testDriver.Dispose(); testDriver = EnvironmentManager.Instance.CreateDriverInstance(); testDriver.Url = xhtmlTestPage; - Assert.AreEqual("XHTML Test Page", testDriver.Title); + Assert.That(testDriver.Title, Is.EqualTo("XHTML Test Page")); testDriver.Quit(); } @@ -155,7 +155,7 @@ public void ShouldOpenAndCloseBrowserRepeatedly() EnvironmentManager.Instance.CloseCurrentDriver(); CreateFreshDriver(); driver.Url = simpleTestPage; - Assert.AreEqual(simpleTestTitle, driver.Title); + Assert.That(driver.Title, Is.EqualTo(simpleTestTitle)); } } } diff --git a/dotnet/test/common/SvgDocumentTest.cs b/dotnet/test/common/SvgDocumentTest.cs index 5eb5483667c799..5a777d920492ae 100644 --- a/dotnet/test/common/SvgDocumentTest.cs +++ b/dotnet/test/common/SvgDocumentTest.cs @@ -38,9 +38,9 @@ public void ClickOnSvgElement() driver.Url = svgTestPage; IWebElement rect = driver.FindElement(By.Id("rect")); - Assert.AreEqual("blue", rect.GetAttribute("fill")); + Assert.That(rect.GetAttribute("fill"), Is.EqualTo("blue")); rect.Click(); - Assert.AreEqual("green", rect.GetAttribute("fill")); + Assert.That(rect.GetAttribute("fill"), Is.EqualTo("green")); } [Test] @@ -54,9 +54,9 @@ public void ExecuteScriptInSvgDocument() driver.Url = svgTestPage; IWebElement rect = driver.FindElement(By.Id("rect")); - Assert.AreEqual("blue", rect.GetAttribute("fill")); + Assert.That(rect.GetAttribute("fill"), Is.EqualTo("blue")); ((IJavaScriptExecutor)driver).ExecuteScript("document.getElementById('rect').setAttribute('fill', 'yellow');"); - Assert.AreEqual("yellow", rect.GetAttribute("fill")); + Assert.That(rect.GetAttribute("fill"), Is.EqualTo("yellow")); } } } diff --git a/dotnet/test/common/SvgElementTest.cs b/dotnet/test/common/SvgElementTest.cs index fbefdea76a6ea9..554b860edbc183 100644 --- a/dotnet/test/common/SvgElementTest.cs +++ b/dotnet/test/common/SvgElementTest.cs @@ -39,17 +39,17 @@ public void ShouldClickOnGraphVisualElements() IWebElement svg = driver.FindElement(By.CssSelector("svg")); ReadOnlyCollection groupElements = svg.FindElements(By.CssSelector("g")); - Assert.AreEqual(5, groupElements.Count); + Assert.That(groupElements, Has.Count.EqualTo(5)); groupElements[1].Click(); IWebElement resultElement = driver.FindElement(By.Id("result")); WaitFor(() => { return resultElement.Text == "slice_red"; }, "Element text was not 'slice_red'"); - Assert.AreEqual("slice_red", resultElement.Text); + Assert.That(resultElement.Text, Is.EqualTo("slice_red")); groupElements[2].Click(); resultElement = driver.FindElement(By.Id("result")); WaitFor(() => { return resultElement.Text == "slice_green"; }, "Element text was not 'slice_green'"); - Assert.AreEqual("slice_green", resultElement.Text); + Assert.That(resultElement.Text, Is.EqualTo("slice_green")); } [Test] @@ -70,7 +70,7 @@ public void ShouldClickOnGraphTextElements() appleElement.Click(); IWebElement resultElement = driver.FindElement(By.Id("result")); WaitFor(() => { return resultElement.Text == "text_apple"; }, "Element text was not 'text_apple'"); - Assert.AreEqual("text_apple", resultElement.Text); + Assert.That(resultElement.Text, Is.EqualTo("text_apple")); } private IWebElement FindAppleElement(IEnumerable textElements) diff --git a/dotnet/test/common/TagNameTest.cs b/dotnet/test/common/TagNameTest.cs index fec7d75d2cc0dd..77b64af111de8e 100644 --- a/dotnet/test/common/TagNameTest.cs +++ b/dotnet/test/common/TagNameTest.cs @@ -29,7 +29,7 @@ public void ShouldReturnInput() { driver.Url = formsPage; IWebElement selectBox = driver.FindElement(By.Id("cheese")); - Assert.AreEqual(selectBox.TagName.ToLower(), "input"); + Assert.That(selectBox.TagName, Is.EqualTo("input").IgnoreCase); } } } diff --git a/dotnet/test/common/TakesScreenshotTest.cs b/dotnet/test/common/TakesScreenshotTest.cs index 6c09b0acfde93f..74fcad3463f42e 100644 --- a/dotnet/test/common/TakesScreenshotTest.cs +++ b/dotnet/test/common/TakesScreenshotTest.cs @@ -141,7 +141,7 @@ public void ShouldTakeScreenshotsOfAnElement() Color pixelColor = GetPixelColor(screenImage, 1, 1); string pixelColorString = FormatColorToHex(pixelColor.ToArgb()); - Assert.AreEqual("#0f12f7", pixelColorString); + Assert.That(pixelColorString, Is.EqualTo("#0f12f7")); } [Test] diff --git a/dotnet/test/common/TargetLocatorTest.cs b/dotnet/test/common/TargetLocatorTest.cs index 19a23cb1dd0860..de1cd4a70816a3 100644 --- a/dotnet/test/common/TargetLocatorTest.cs +++ b/dotnet/test/common/TargetLocatorTest.cs @@ -89,7 +89,7 @@ public void ShouldSwitchToFrameByNameAndBackToDefaultContent() driver.Url = framesPage; driver.SwitchTo().Frame("first"); - Assert.AreEqual(driver.FindElement(By.Id("pageNumber")).Text, "1"); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("1")); driver.SwitchTo().DefaultContent(); @@ -99,7 +99,7 @@ public void ShouldSwitchToFrameByNameAndBackToDefaultContent() Throws.TypeOf()); driver.SwitchTo().Frame("second"); - Assert.AreEqual(driver.FindElement(By.Id("pageNumber")).Text, "2"); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("2")); driver.SwitchTo().DefaultContent(); @@ -115,7 +115,7 @@ public void ShouldSwitchToFrameByIndexAndBackToDefaultContent() driver.Url = framesPage; driver.SwitchTo().Frame(0); - Assert.AreEqual(driver.FindElement(By.Id("pageNumber")).Text, "1"); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("1")); driver.SwitchTo().DefaultContent(); @@ -126,7 +126,7 @@ public void ShouldSwitchToFrameByIndexAndBackToDefaultContent() driver.SwitchTo().Frame(1); - Assert.AreEqual(driver.FindElement(By.Id("pageNumber")).Text, "2"); + Assert.That(driver.FindElement(By.Id("pageNumber")).Text, Is.EqualTo("2")); driver.SwitchTo().DefaultContent(); diff --git a/dotnet/test/common/TextHandlingTest.cs b/dotnet/test/common/TextHandlingTest.cs index f087f1fbd23468..3b66fe86dd2c4c 100644 --- a/dotnet/test/common/TextHandlingTest.cs +++ b/dotnet/test/common/TextHandlingTest.cs @@ -34,10 +34,10 @@ public void ShouldReturnTheTextContentOfASingleElementWithNoChildren() { driver.Url = simpleTestPage; string selectText = driver.FindElement(By.Id("oneline")).Text; - Assert.AreEqual(selectText, "A single line of text"); + Assert.That(selectText, Is.EqualTo("A single line of text")); string getText = driver.FindElement(By.Id("oneline")).Text; - Assert.AreEqual(getText, "A single line of text"); + Assert.That(getText, Is.EqualTo("A single line of text")); } [Test] @@ -58,9 +58,9 @@ public void ShouldIgnoreScriptElements() IWebElement labelForUsername = driver.FindElement(By.Id("labelforusername")); string text = labelForUsername.Text; - Assert.AreEqual(labelForUsername.FindElements(By.TagName("script")).Count, 1); + Assert.That(labelForUsername.FindElements(By.TagName("script")).Count, Is.EqualTo(1)); Assert.That(text, Does.Not.Contain("document.getElementById")); - Assert.AreEqual(text, "Username:"); + Assert.That(text, Is.EqualTo("Username:")); } [Test] @@ -80,7 +80,7 @@ public void ShouldCollapseMultipleWhitespaceCharactersIntoASingleSpace() driver.Url = (simpleTestPage); string text = driver.FindElement(By.Id("lotsofspaces")).Text; - Assert.AreEqual(text, "This line has lots of spaces."); + Assert.That(text, Is.EqualTo("This line has lots of spaces.")); } [Test] @@ -99,7 +99,7 @@ public void ShouldConvertANonBreakingSpaceIntoANormalSpaceCharacter() driver.Url = (simpleTestPage); string text = driver.FindElement(By.Id("nbsp")).Text; - Assert.AreEqual(text, "This line has a non-breaking space"); + Assert.That(text, Is.EqualTo("This line has a non-breaking space")); } [Test] @@ -109,7 +109,7 @@ public void ShouldNotCollapseANonBreakingSpaces() IWebElement element = driver.FindElement(By.Id("nbspandspaces")); string text = element.Text; - Assert.AreEqual(text, "This line has a non-breaking space and spaces"); + Assert.That(text, Is.EqualTo("This line has a non-breaking space and spaces")); } [Test] @@ -147,7 +147,7 @@ public void HavingInlineElementsShouldNotAffectHowTextIsReturned() { driver.Url = (simpleTestPage); string text = driver.FindElement(By.Id("inline")).Text; - Assert.AreEqual(text, "This line has text within elements that are meant to be displayed inline"); + Assert.That(text, Is.EqualTo("This line has text within elements that are meant to be displayed inline")); } [Test] @@ -156,7 +156,7 @@ public void ShouldReturnTheEntireTextOfInlineElements() driver.Url = (simpleTestPage); string text = driver.FindElement(By.Id("span")).Text; - Assert.AreEqual(text, "An inline element"); + Assert.That(text, Is.EqualTo("An inline element")); } [Test] @@ -195,7 +195,7 @@ public void ShouldBeAbleToSetMoreThanOneLineOfTextInATextArea() textarea.SendKeys(expectedText); string seenText = textarea.GetAttribute("value"); - Assert.AreEqual(expectedText, seenText); + Assert.That(seenText, Is.EqualTo(expectedText)); } [Test] @@ -207,7 +207,7 @@ public void ShouldBeAbleToEnterDatesAfterFillingInOtherValuesFirst() input.SendKeys(expectedValue); string seenValue = input.GetAttribute("value"); - Assert.AreEqual(seenValue, expectedValue); + Assert.That(expectedValue, Is.EqualTo(seenValue)); } [Test] @@ -216,7 +216,7 @@ public void ShouldReturnEmptyStringWhenTextIsOnlySpaces() driver.Url = (xhtmlTestPage); string text = driver.FindElement(By.Id("spaces")).Text; - Assert.AreEqual(text, string.Empty); + Assert.That(text, Is.Empty); } [Test] @@ -225,7 +225,7 @@ public void ShouldReturnEmptyStringWhenTextIsEmpty() driver.Url = (xhtmlTestPage); string text = driver.FindElement(By.Id("empty")).Text; - Assert.AreEqual(text, string.Empty); + Assert.That(text, Is.Empty); } [Test] @@ -234,7 +234,7 @@ public void ShouldReturnEmptyStringWhenTagIsSelfClosing() driver.Url = (xhtmlFormPage); string text = driver.FindElement(By.Id("self-closed")).Text; - Assert.AreEqual(text, string.Empty); + Assert.That(text, Is.Empty); } [Test] @@ -243,7 +243,7 @@ public void ShouldNotTrimSpacesWhenLineWraps() driver.Url = simpleTestPage; string text = driver.FindElement(By.XPath("//table/tbody/tr[1]/td[1]")).Text; - Assert.AreEqual("beforeSpace afterSpace", text); + Assert.That(text, Is.EqualTo("beforeSpace afterSpace")); } [Test] @@ -253,7 +253,7 @@ public void ShouldHandleSiblingBlockLevelElements() string text = driver.FindElement(By.Id("twoblocks")).Text; - Assert.AreEqual("Some text" + NewLine + "Some more text", text); + Assert.That(text, Is.EqualTo("Some text" + NewLine + "Some more text")); } [Test] @@ -263,8 +263,8 @@ public void ShouldHandleNestedBlockLevelElements() string text = driver.FindElement(By.Id("nestedblocks")).Text; - Assert.AreEqual("Cheese" + NewLine + "Some text" + NewLine + "Some more text" + NewLine - + "and also" + NewLine + "Brie", text); + Assert.That(text, Is.EqualTo("Cheese" + NewLine + "Some text" + NewLine + "Some more text" + NewLine + + "and also" + NewLine + "Brie")); } [Test] @@ -274,7 +274,7 @@ public void ShouldHandleWhitespaceInInlineElements() string text = driver.FindElement(By.Id("inlinespan")).Text; - Assert.AreEqual(text, "line has text"); + Assert.That(text, Is.EqualTo("line has text")); } [Test] @@ -305,8 +305,8 @@ public void ShouldOnlyIncludeVisibleText() string empty = driver.FindElement(By.Id("suppressedParagraph")).Text; string explicitText = driver.FindElement(By.Id("outer")).Text; - Assert.AreEqual(string.Empty, empty); - Assert.AreEqual("sub-element that is explicitly visible", explicitText); + Assert.That(empty, Is.Empty); + Assert.That(explicitText, Is.EqualTo("sub-element that is explicitly visible")); } [Test] @@ -326,7 +326,7 @@ public void TextOfAnInputFieldShouldBeEmpty() { driver.Url = formsPage; IWebElement input = driver.FindElement(By.Id("inputWithText")); - Assert.AreEqual(string.Empty, input.Text); + Assert.That(input.Text, Is.Empty); } [Test] @@ -334,7 +334,7 @@ public void TextOfATextAreaShouldBeEqualToItsDefaultText() { driver.Url = formsPage; IWebElement area = driver.FindElement(By.Id("withText")); - Assert.AreEqual("Example text", area.Text); + Assert.That(area.Text, Is.EqualTo("Example text")); } [Test] @@ -345,7 +345,7 @@ public void TextOfATextAreaShouldBeEqualToItsDefaultTextEvenAfterTyping() IWebElement area = driver.FindElement(By.Id("withText")); string oldText = area.Text; area.SendKeys("New Text"); - Assert.AreEqual(oldText, area.Text); + Assert.That(area.Text, Is.EqualTo(oldText)); } [Test] @@ -356,7 +356,7 @@ public void TextOfATextAreaShouldBeEqualToItsDefaultTextEvenAfterChangingTheValu IWebElement area = driver.FindElement(By.Id("withText")); string oldText = area.GetAttribute("value"); ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].value = arguments[1]", area, "New Text"); - Assert.AreEqual(oldText, area.Text); + Assert.That(area.Text, Is.EqualTo(oldText)); } [Test] @@ -364,7 +364,7 @@ public void ShouldGetTextWhichIsAValidJSONObject() { driver.Url = simpleTestPage; IWebElement element = driver.FindElement(By.Id("simpleJsonText")); - Assert.AreEqual("{a=\"b\", c=1, d=true}", element.Text); + Assert.That(element.Text, Is.EqualTo("{a=\"b\", c=1, d=true}")); //assertEquals("{a=\"b\", \"c\"=d, e=true, f=\\123\\\\g\\\\\"\"\"\\\'}", element.getText()); } @@ -373,7 +373,7 @@ public void ShouldGetTextWhichIsAValidComplexJSONObject() { driver.Url = simpleTestPage; IWebElement element = driver.FindElement(By.Id("complexJsonText")); - Assert.AreEqual("{a=\"\\\\b\\\\\\\"\'\\\'\"}", element.Text); + Assert.That(element.Text, Is.EqualTo("{a=\"\\\\b\\\\\\\"\'\\\'\"}")); } [Test] @@ -384,11 +384,11 @@ public void ShouldNotReturnLtrMarks() IWebElement element = driver.FindElement(By.Id("EH")).FindElement(By.TagName("nobr")); string text = element.Text; String expected = "Some notes"; - Assert.AreNotSame(8206, (int)text[0], "RTL mark should not be present"); + Assert.That((int)text[0], Is.Not.EqualTo(8206), "RTL mark should not be present"); // Note: If this assertion fails but the content of the strings *looks* the same // it may be because of hidden unicode LTR character being included in the string. // That's the reason for the previous assert. - Assert.Equals(expected, element.Text); + Assert.That(element.Text, Is.EqualTo(expected)); } [Test] @@ -398,7 +398,7 @@ public void ShouldTrimTextWithMultiByteWhitespaces() driver.Url = simpleTestPage; String text = driver.FindElement(By.Id("trimmedSpace")).Text; - Assert.AreEqual("test", text); + Assert.That(text, Is.EqualTo("test")); } [Test] diff --git a/dotnet/test/common/TypingTest.cs b/dotnet/test/common/TypingTest.cs index d2290a210fdc7c..55caf6f76cfe00 100644 --- a/dotnet/test/common/TypingTest.cs +++ b/dotnet/test/common/TypingTest.cs @@ -74,7 +74,7 @@ public void ShouldTypeLowerCaseLetters() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("abc def"); - Assert.AreEqual("abc def", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("abc def")); } [Test] @@ -85,7 +85,7 @@ public void ShouldBeAbleToTypeCapitalLetters() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("ABC DEF"); - Assert.AreEqual("ABC DEF", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("ABC DEF")); } [Test] @@ -96,7 +96,7 @@ public void ShouldBeAbleToTypeQuoteMarks() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("\""); - Assert.AreEqual("\"", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("\"")); } [Test] @@ -113,7 +113,7 @@ public void ShouldBeAbleToTypeTheAtCharacter() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("@"); - Assert.AreEqual("@", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("@")); } [Test] @@ -124,7 +124,7 @@ public void ShouldBeAbleToMixUpperAndLowerCaseLetters() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("me@eXample.com"); - Assert.AreEqual("me@eXample.com", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("me@eXample.com")); } [Test] @@ -135,7 +135,7 @@ public void ArrowKeysShouldNotBePrintable() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys(Keys.ArrowLeft); - Assert.AreEqual(string.Empty, keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.Empty); } [Test] @@ -146,7 +146,7 @@ public void ShouldBeAbleToUseArrowKeys() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("Tet" + Keys.ArrowLeft + "s"); - Assert.AreEqual("Test", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("Test")); } [Test] @@ -158,7 +158,7 @@ public void WillSimulateAKeyUpWhenEnteringTextIntoInputElements() element.SendKeys("I like cheese"); IWebElement result = driver.FindElement(By.Id("result")); - Assert.AreEqual("I like cheese", result.Text); + Assert.That(result.Text, Is.EqualTo("I like cheese")); } [Test] @@ -172,7 +172,7 @@ public void WillSimulateAKeyDownWhenEnteringTextIntoInputElements() IWebElement result = driver.FindElement(By.Id("result")); // Because the key down gets the result before the input element is // filled, we're a letter short here - Assert.AreEqual("I like chees", result.Text); + Assert.That(result.Text, Is.EqualTo("I like chees")); } [Test] @@ -186,7 +186,7 @@ public void WillSimulateAKeyPressWhenEnteringTextIntoInputElements() IWebElement result = driver.FindElement(By.Id("result")); // Because the key down gets the result before the input element is // filled, we're a letter short here - Assert.AreEqual("I like chees", result.Text); + Assert.That(result.Text, Is.EqualTo("I like chees")); } [Test] @@ -198,7 +198,7 @@ public void WillSimulateAKeyUpWhenEnteringTextIntoTextAreas() element.SendKeys("I like cheese"); IWebElement result = driver.FindElement(By.Id("result")); - Assert.AreEqual("I like cheese", result.Text); + Assert.That(result.Text, Is.EqualTo("I like cheese")); } [Test] @@ -212,7 +212,7 @@ public void WillSimulateAKeyDownWhenEnteringTextIntoTextAreas() IWebElement result = driver.FindElement(By.Id("result")); // Because the key down gets the result before the input element is // filled, we're a letter short here - Assert.AreEqual("I like chees", result.Text); + Assert.That(result.Text, Is.EqualTo("I like chees")); } [Test] @@ -226,7 +226,7 @@ public void WillSimulateAKeyPressWhenEnteringTextIntoTextAreas() IWebElement result = driver.FindElement(By.Id("result")); // Because the key down gets the result before the input element is // filled, we're a letter short here - Assert.AreEqual("I like chees", result.Text); + Assert.That(result.Text, Is.EqualTo("I like chees")); } [Test] @@ -238,7 +238,7 @@ public void ShouldFireFocusKeyEventsInTheRightOrder() IWebElement element = driver.FindElement(By.Id("theworks")); element.SendKeys("a"); - Assert.AreEqual("focus keydown keypress keyup", result.Text.Trim()); + Assert.That(result.Text.Trim(), Is.EqualTo("focus keydown keypress keyup")); } [Test] @@ -262,7 +262,7 @@ public void ShouldReportKeyCodeOfArrowKeys() CheckRecordedKeySequence(result, 39); // And leave no rubbish/printable keys in the "keyReporter" - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); } [Test] @@ -294,7 +294,7 @@ public void ShouldReportKeyCodeOfArrowKeysUpDownEvents() Assert.That(text, Does.Contain("up: 39")); // And leave no rubbish/printable keys in the "keyReporter" - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); } [Test] @@ -307,7 +307,7 @@ public void NumericNonShiftKeys() string numericLineCharsNonShifted = "`1234567890-=[]\\;,.'/42"; element.SendKeys(numericLineCharsNonShifted); - Assert.AreEqual(numericLineCharsNonShifted, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(numericLineCharsNonShifted)); } [Test] @@ -322,7 +322,7 @@ public void NumericShiftKeys() string numericShiftsEtc = "~!@#$%^&*()_+{}:\"<>?|END~"; element.SendKeys(numericShiftsEtc); - Assert.AreEqual(numericShiftsEtc, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(numericShiftsEtc)); string text = result.Text.Trim(); Assert.That(text, Does.Contain(" up: 16")); } @@ -337,7 +337,7 @@ public void LowerCaseAlphaKeys() String lowerAlphas = "abcdefghijklmnopqrstuvwxyz"; element.SendKeys(lowerAlphas); - Assert.AreEqual(lowerAlphas, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(lowerAlphas)); } [Test] @@ -352,7 +352,7 @@ public void UppercaseAlphaKeys() String upperAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; element.SendKeys(upperAlphas); - Assert.AreEqual(upperAlphas, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(upperAlphas)); string text = result.Text.Trim(); Assert.That(text, Does.Contain(" up: 16")); } @@ -371,7 +371,7 @@ public void AllPrintableKeys() "PQRSTUVWXYZ [\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; element.SendKeys(allPrintable); - Assert.AreEqual(allPrintable, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(allPrintable)); string text = result.Text.Trim(); Assert.That(text, Does.Contain(" up: 16")); } @@ -385,7 +385,7 @@ public void ArrowKeysAndPageUpAndDown() element.SendKeys("a" + Keys.Left + "b" + Keys.Right + Keys.Up + Keys.Down + Keys.PageUp + Keys.PageDown + "1"); - Assert.AreEqual("ba1", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("ba1")); } [Test] @@ -399,7 +399,7 @@ public void HomeAndEndAndPageUpAndPageDownKeys() element.SendKeys("abc" + HomeKey() + "0" + Keys.Left + Keys.Right + Keys.PageUp + Keys.PageDown + EndKey() + "1" + HomeKey() + "0" + Keys.PageUp + EndKey() + "111" + HomeKey() + "00"); - Assert.AreEqual("0000abc1111", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("0000abc1111")); } [Test] @@ -410,13 +410,13 @@ public void DeleteAndBackspaceKeys() IWebElement element = driver.FindElement(By.Id("keyReporter")); element.SendKeys("abcdefghi"); - Assert.AreEqual("abcdefghi", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abcdefghi")); element.SendKeys(Keys.Left + Keys.Left + Keys.Delete); - Assert.AreEqual("abcdefgi", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abcdefgi")); element.SendKeys(Keys.Left + Keys.Left + Keys.Backspace); - Assert.AreEqual("abcdfgi", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abcdfgi")); } [Test] @@ -427,7 +427,7 @@ public void SpecialSpaceKeys() IWebElement element = driver.FindElement(By.Id("keyReporter")); element.SendKeys("abcd" + Keys.Space + "fgh" + Keys.Space + "ij"); - Assert.AreEqual("abcd fgh ij", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abcd fgh ij")); } [Test] @@ -441,7 +441,7 @@ public void NumberpadKeys() Keys.Decimal + Keys.Separator + Keys.NumberPad0 + Keys.NumberPad9 + Keys.Add + Keys.Semicolon + Keys.Equal + Keys.Divide + Keys.NumberPad3 + "abcd"); - Assert.AreEqual("abcd*-+.,09+;=/3abcd", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abcd*-+.,09+;=/3abcd")); } [Test] @@ -453,7 +453,7 @@ public void FunctionKeys() element.SendKeys("FUNCTION" + Keys.F8 + "-KEYS" + Keys.F8); element.SendKeys("" + Keys.F8 + "-TOO" + Keys.F8); - Assert.AreEqual("FUNCTION-KEYS-TOO", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("FUNCTION-KEYS-TOO")); } [Test] @@ -464,12 +464,12 @@ public void ShiftSelectionDeletes() IWebElement element = driver.FindElement(By.Id("keyReporter")); element.SendKeys("abcd efgh"); - Assert.AreEqual(element.GetAttribute("value"), "abcd efgh"); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abcd efgh")); //Could be chord problem element.SendKeys(Keys.Shift + Keys.Left + Keys.Left + Keys.Left); element.SendKeys(Keys.Delete); - Assert.AreEqual("abcd e", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("abcd e")); } [Test] @@ -486,7 +486,7 @@ public void ChordControlHomeShiftEndDelete() element.SendKeys(HomeKey()); element.SendKeys("" + Keys.Shift + EndKey() + Keys.Delete); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); string text = result.Text.Trim(); Assert.That(text, Does.Contain(" up: 16")); } @@ -501,22 +501,22 @@ public void ChordReverseShiftHomeSelectionDeletes() IWebElement element = driver.FindElement(By.Id("keyReporter")); element.SendKeys("done" + HomeKey()); - Assert.AreEqual("done", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("done")); //Sending chords element.SendKeys("" + Keys.Shift + "ALL " + HomeKey()); - Assert.AreEqual("ALL done", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("ALL done")); element.SendKeys(Keys.Delete); - Assert.AreEqual("done", element.GetAttribute("value"), "done"); + Assert.That(element.GetAttribute("value"), Is.EqualTo("done"), "done"); element.SendKeys("" + EndKey() + Keys.Shift + HomeKey()); - Assert.AreEqual("done", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("done")); // Note: trailing SHIFT up here string text = result.Text.Trim(); element.SendKeys("" + Keys.Delete); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); } [Test] @@ -529,31 +529,31 @@ public void ChordControlCutAndPaste() String paste = "!\"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFG"; element.SendKeys(paste); - Assert.AreEqual(paste, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(paste)); //Chords element.SendKeys("" + HomeKey() + Keys.Shift + EndKey()); element.SendKeys(PrimaryModifier() + "x"); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); element.SendKeys(PrimaryModifier() + "v"); - Assert.AreEqual(paste, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(paste)); element.SendKeys("" + Keys.Left + Keys.Left + Keys.Left + Keys.Shift + EndKey()); element.SendKeys(PrimaryModifier() + "x" + "v"); - Assert.AreEqual(paste, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo(paste)); element.SendKeys(HomeKey()); element.SendKeys(PrimaryModifier() + "v"); element.SendKeys(PrimaryModifier() + "v" + "v"); element.SendKeys(PrimaryModifier() + "v" + "v" + "v"); - Assert.AreEqual("EFGEFGEFGEFGEFGEFG" + paste, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("EFGEFGEFGEFGEFGEFG" + paste)); element.SendKeys("" + EndKey() + Keys.Shift + HomeKey() + Keys.Null + Keys.Delete); - Assert.AreEqual(element.GetAttribute("value"), string.Empty); + Assert.That(element.GetAttribute("value"), Is.Empty); } [Test] @@ -564,7 +564,7 @@ public void ShouldTypeIntoInputElementsThatHaveNoTypeAttribute() IWebElement element = driver.FindElement(By.Id("no-type")); element.SendKeys("Should Say Cheese"); - Assert.AreEqual("Should Say Cheese", element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.EqualTo("Should Say Cheese")); } [Test] @@ -575,7 +575,7 @@ public void ShouldNotTypeIntoElementsThatPreventKeyDownEvents() IWebElement silent = driver.FindElement(By.Name("suppress")); silent.SendKeys("s"); - Assert.AreEqual(string.Empty, silent.GetAttribute("value")); + Assert.That(silent.GetAttribute("value"), Is.Empty); } [Test] @@ -596,7 +596,7 @@ public void ShouldBeAbleToTypeOnAnEmailInputField() driver.Url = formsPage; IWebElement email = driver.FindElement(By.Id("email")); email.SendKeys("foobar"); - Assert.AreEqual("foobar", email.GetAttribute("value")); + Assert.That(email.GetAttribute("value"), Is.EqualTo("foobar")); } [Test] @@ -605,7 +605,7 @@ public void ShouldBeAbleToTypeOnANumberInputField() driver.Url = formsPage; IWebElement numberElement = driver.FindElement(By.Id("age")); numberElement.SendKeys("33"); - Assert.AreEqual("33", numberElement.GetAttribute("value")); + Assert.That(numberElement.GetAttribute("value"), Is.EqualTo("33")); } [Test] @@ -624,11 +624,11 @@ public void CanSafelyTypeOnElementThatIsRemovedFromTheDomOnKeyPress() IWebElement input = driver.FindElement(By.Id("target")); IWebElement log = driver.FindElement(By.Id("log")); - Assert.AreEqual("", log.GetAttribute("value")); + Assert.That(log.GetAttribute("value"), Is.EqualTo("")); input.SendKeys("b"); string expected = "keydown (target)\nkeyup (target)\nkeyup (body)"; - Assert.AreEqual(expected, GetValueText(log)); + Assert.That(GetValueText(log), Is.EqualTo(expected)); input.SendKeys("a"); @@ -647,7 +647,7 @@ public void CanClearNumberInputAfterTypingInvalidInput() input.SendKeys("e"); input.Clear(); input.SendKeys("3"); - Assert.AreEqual("3", input.GetAttribute("value")); + Assert.That(input.GetAttribute("value"), Is.EqualTo("3")); } //------------------------------------------------------------------ @@ -684,7 +684,7 @@ public void NonPrintableCharactersShouldWorkWithContentEditableOrDesignModeSet() element.SendKeys("Dishy" + Keys.Backspace + Keys.Left + Keys.Left); element.SendKeys(Keys.Left + Keys.Left + "F" + Keys.Delete + EndKey() + "ee!"); - Assert.AreEqual(element.Text, "Fishee!"); + Assert.That(element.Text, Is.EqualTo("Fishee!")); } [Test] @@ -696,7 +696,7 @@ public void ShouldBeAbleToTypeIntoEmptyContentEditableElement() editable.Clear(); editable.SendKeys("cheese"); // requires focus on OS X - Assert.AreEqual("cheese", editable.Text); + Assert.That(editable.Text, Is.EqualTo("cheese")); } [Test] @@ -711,7 +711,7 @@ public void ShouldBeAbleToTypeIntoContentEditableElementWithExistingValue() string initialText = editable.Text; editable.SendKeys(", edited"); - Assert.AreEqual(initialText + ", edited", editable.Text); + Assert.That(editable.Text, Is.EqualTo(initialText + ", edited")); } [Test] @@ -726,7 +726,7 @@ public void ShouldBeAbleToTypeIntoTinyMCE() editable.Clear(); editable.SendKeys("cheese"); // requires focus on OS X - Assert.AreEqual("cheese", editable.Text); + Assert.That(editable.Text, Is.EqualTo("cheese")); } private string GetValueText(IWebElement el) diff --git a/dotnet/test/common/UploadTest.cs b/dotnet/test/common/UploadTest.cs index c83363c2a7b980..5608e1e5d2747d 100644 --- a/dotnet/test/common/UploadTest.cs +++ b/dotnet/test/common/UploadTest.cs @@ -69,7 +69,7 @@ public void CleanFileInput() IWebElement element = driver.FindElement(By.Id("upload")); element.SendKeys(testFile.FullName); element.Clear(); - Assert.AreEqual(string.Empty, element.GetAttribute("value")); + Assert.That(element.GetAttribute("value"), Is.Empty); } [Test] diff --git a/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs b/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs index c46d541dcb5489..fdfa743d4a51f0 100644 --- a/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs +++ b/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs @@ -170,12 +170,12 @@ public void ShouldCreateAuthenticator() object response = jsDriver.ExecuteAsyncScript( "registerCredential().then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response)["status"]); + Assert.That((Dictionary)response, Does.ContainKey("status").WithValue("OK")); object assertionResponse = GetAssertionFor(ExtractRawIdFrom(response)); // Attempt to use the credential to get an assertion. - Assert.AreEqual("OK", ((Dictionary)assertionResponse)["status"]); + Assert.That((Dictionary)assertionResponse, Does.ContainKey("status").WithValue("OK")); } [Test] @@ -191,7 +191,7 @@ public void ShouldRemoveAuthenticator() webDriver.RemoveVirtualAuthenticator(authenticatorId); - Assert.IsNull(webDriver.AuthenticatorId); + Assert.That(webDriver.AuthenticatorId, Is.Null); } [Test] @@ -211,7 +211,7 @@ public void ShouldSupportMultipleVirtualAuthenticatorsAtOnce() webDriver.RemoveVirtualAuthenticator(authenticatorId1); webDriver.RemoveVirtualAuthenticator(authenticatorId2); - Assert.IsNull(webDriver.AuthenticatorId); + Assert.That(webDriver.AuthenticatorId, Is.Null); } [Test] @@ -236,7 +236,7 @@ public void ShouldAddNonResidentCredential() // Attempt to use the credential to generate an assertion. object response = GetAssertionFor(id); - Assert.AreEqual("OK", ((Dictionary)response)["status"]); + Assert.That((Dictionary)response, Does.ContainKey("status").WithValue("OK")); } [Test] @@ -268,7 +268,7 @@ public void ShouldAddNonResidentCredentialWhenAuthenticatorUsesU2FProtocol() // Attempt to use the credential to generate an assertion. object response = GetAssertionFor(id); - Assert.AreEqual("OK", ((Dictionary)response)["status"]); + Assert.That((Dictionary)response, Does.ContainKey("status").WithValue("OK")); } [Test] @@ -292,14 +292,14 @@ public void ShouldAddResidentCredential() // empty allowCredentials array. object response = jsDriver.ExecuteAsyncScript( "getCredential([]).then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response)["status"]); + Assert.That(((Dictionary)response)["status"], Is.EqualTo("OK")); Dictionary attestation = (Dictionary)((Dictionary)response)["attestation"]; ReadOnlyCollection returnedUserHandle = (ReadOnlyCollection)attestation["userHandle"]; - Assert.AreEqual(1, returnedUserHandle.Count); - Assert.AreEqual(0, returnedUserHandle.IndexOf(1L)); + Assert.That(returnedUserHandle, Has.One.Items); + Assert.That(returnedUserHandle.IndexOf(1L), Is.Zero); } [Test] @@ -341,21 +341,21 @@ public void ShouldGetCredential() object response1 = jsDriver.ExecuteAsyncScript( "registerCredential({authenticatorSelection: {requireResidentKey: true}})" + " .then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response1)["status"]); + Assert.That((Dictionary)response1, Does.ContainKey("status").WithValue("OK")); // Register a non resident credential. object response2 = jsDriver.ExecuteAsyncScript( "registerCredential().then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response2)["status"]); + Assert.That((Dictionary)response2, Does.ContainKey("status").WithValue("OK")); byte[] credential1Id = ConvertListIntoArrayOfBytes(ExtractRawIdFrom(response1)); byte[] credential2Id = ConvertListIntoArrayOfBytes(ExtractRawIdFrom(response2)); - Assert.AreNotEqual(credential1Id, credential2Id); + Assert.That(credential2Id, Is.Not.EqualTo(credential1Id)); // Retrieve the two credentials. List credentials = webDriver.GetCredentials(); - Assert.AreEqual(2, credentials.Count); + Assert.That(credentials, Has.Exactly(2).Items); Credential credential1 = null; Credential credential2 = null; @@ -375,11 +375,11 @@ public void ShouldGetCredential() } } - Assert.True(credential1.IsResidentCredential); - Assert.NotNull(credential1.PrivateKey); + Assert.That(credential1.IsResidentCredential, Is.True); + Assert.That(credential1.PrivateKey, Is.Not.Null); - Assert.False(credential2.IsResidentCredential); - Assert.NotNull(credential2.PrivateKey); + Assert.That(credential2.IsResidentCredential, Is.False); + Assert.That(credential2.PrivateKey, Is.Not.Null); } [Test] @@ -395,7 +395,7 @@ public void ShouldRemoveCredentialByRawId() object response = jsDriver.ExecuteAsyncScript( "registerCredential().then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response)["status"]); + Assert.That((Dictionary)response, Does.ContainKey("status").WithValue("OK")); // Remove a credential by its ID as an array of bytes. List rawId = ExtractRawIdFrom(response); @@ -406,7 +406,7 @@ public void ShouldRemoveCredentialByRawId() object assertionResponse = GetAssertionFor(rawId); string error = (string)((Dictionary)assertionResponse)["status"]; - Assert.True(error.StartsWith("NotAllowedError")); + Assert.That(error, Does.StartWith("NotAllowedError")); } [Test] @@ -422,7 +422,7 @@ public void ShouldRemoveCredentialByBase64UrlId() object response = jsDriver.ExecuteAsyncScript( "registerCredential().then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response)["status"]); + Assert.That((Dictionary)response, Does.ContainKey("status").WithValue("OK")); // Remove a credential by its base64url ID. String credentialId = ExtractIdFrom(response); @@ -432,7 +432,7 @@ public void ShouldRemoveCredentialByBase64UrlId() object assertionResponse = GetAssertionFor(credentialId); string error = (string)((Dictionary)assertionResponse)["status"]; - Assert.True(error.StartsWith("NotAllowedError")); + Assert.That(error, Does.StartWith("NotAllowedError")); } [Test] @@ -447,12 +447,12 @@ public void ShouldRemoveAllCredentials() // Register two credentials. object response1 = jsDriver.ExecuteAsyncScript( "registerCredential().then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response1)["status"]); + Assert.That((Dictionary)response1, Does.ContainKey("status").WithValue("OK")); List rawId1 = ExtractRawIdFrom(response1); object response2 = jsDriver.ExecuteAsyncScript( "registerCredential().then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response2)["status"]); + Assert.That((Dictionary)response2, Does.ContainKey("status").WithValue("OK")); List rawId2 = ExtractRawIdFrom(response1); // Remove all credentials. @@ -471,7 +471,7 @@ public void ShouldRemoveAllCredentials() string error = (string)((Dictionary)response)["status"]; - Assert.True(error.StartsWith("NotAllowedError")); + Assert.That(error, Does.StartWith("NotAllowedError")); } [Test] @@ -487,7 +487,7 @@ public void testSetUserVerified() Object response = jsDriver.ExecuteAsyncScript( "registerCredential({authenticatorSelection: {userVerification: 'required'}})" + " .then(arguments[arguments.length - 1]);"); - Assert.AreEqual("OK", ((Dictionary)response)["status"]); + Assert.That((Dictionary)response, Does.ContainKey("status").WithValue("OK")); List rawId = ExtractRawIdFrom(response); // Getting an assertion requiring user verification should succeed. @@ -497,7 +497,7 @@ public void testSetUserVerified() + " \"id\": Int8Array.from(arguments[0])," + "}], {userVerification: 'required'}).then(arguments[arguments.length - 1]);", rawId); - Assert.AreEqual("OK", ((Dictionary)response)["status"]); + Assert.That((Dictionary)response, Does.ContainKey("status").WithValue("OK")); // Disable user verification. webDriver.SetUserVerified(false); @@ -512,7 +512,7 @@ public void testSetUserVerified() string error = (string)((Dictionary)response)["status"]; - Assert.True(error.StartsWith("NotAllowedError")); + Assert.That(error, Does.StartWith("NotAllowedError")); } [Test] diff --git a/dotnet/test/common/VisibilityTest.cs b/dotnet/test/common/VisibilityTest.cs index a48e785e95f8b0..527699e6d8f887 100644 --- a/dotnet/test/common/VisibilityTest.cs +++ b/dotnet/test/common/VisibilityTest.cs @@ -111,8 +111,8 @@ public void ZeroSizedDivIsShownIfDescendantHasSize() IWebElement element = driver.FindElement(By.Id("zero")); Size size = element.Size; - Assert.AreEqual(0, size.Width, "Should have 0 width"); - Assert.AreEqual(0, size.Height, "Should have 0 height"); + Assert.That(size.Width, Is.Zero, "Should have 0 width"); + Assert.That(size.Height, Is.Zero, "Should have 0 height"); Assert.That(element.Displayed, Is.True); } @@ -268,9 +268,9 @@ public void ShouldBeAbleToClickOnElementsWithOpacityZero() driver.Url = clickJackerPage; IWebElement element = driver.FindElement(By.Id("clickJacker")); - Assert.AreEqual("0", element.GetCssValue("opacity"), "Precondition failed: clickJacker should be transparent"); + Assert.That(element.GetCssValue("opacity"), Is.EqualTo("0"), "Precondition failed: clickJacker should be transparent"); element.Click(); - Assert.AreEqual("1", element.GetCssValue("opacity")); + Assert.That(element.GetCssValue("opacity"), Is.EqualTo("1")); } [Test] diff --git a/dotnet/test/common/WebElementTest.cs b/dotnet/test/common/WebElementTest.cs index 5da1ec406f1be6..9fcf68ee1b0f42 100644 --- a/dotnet/test/common/WebElementTest.cs +++ b/dotnet/test/common/WebElementTest.cs @@ -68,7 +68,7 @@ public void ShouldGetElementName() driver.Url = simpleTestPage; IWebElement oneliner = driver.FindElement(By.Id("oneline")); - Assert.AreEqual("p", oneliner.TagName.ToLower()); + Assert.That(oneliner.TagName, Is.EqualTo("p").IgnoreCase); } @@ -78,12 +78,12 @@ public void ShouldGetElementText() driver.Url = simpleTestPage; IWebElement oneliner = driver.FindElement(By.Id("oneline")); - Assert.AreEqual("A single line of text", oneliner.Text); + Assert.That(oneliner.Text, Is.EqualTo("A single line of text")); IWebElement twoblocks = driver.FindElement(By.Id("twoblocks")); - Assert.AreEqual("Some text" + + Assert.That(twoblocks.Text, Is.EqualTo("Some text" + System.Environment.NewLine + - "Some more text", twoblocks.Text); + "Some more text")); } @@ -110,7 +110,7 @@ public void ShouldClearElement() IWebElement textbox = driver.FindElement(By.Id("keyUp")); textbox.SendKeys("a@#$ç.ó"); textbox.Clear(); - Assert.AreEqual("", textbox.GetAttribute("value")); + Assert.That(textbox.GetAttribute("value"), Is.Empty); } [Test] @@ -121,7 +121,7 @@ public void ShouldClearRenderedElement() IWebElement textbox = driver.FindElement(By.Id("keyUp")); textbox.SendKeys("a@#$ç.ó"); textbox.Clear(); - Assert.AreEqual("", textbox.GetAttribute("value")); + Assert.That(textbox.GetAttribute("value"), Is.Empty); } [Test] @@ -131,7 +131,7 @@ public void ShouldSendKeysToElement() IWebElement textbox = driver.FindElement(By.Id("keyUp")); textbox.SendKeys("a@#$ç.ó"); - Assert.AreEqual("a@#$ç.ó", textbox.GetAttribute("value")); + Assert.That(textbox.GetAttribute("value"), Is.EqualTo("a@#$ç.ó")); } [Test] @@ -152,7 +152,7 @@ public void ShouldClickLinkElement() IWebElement changedDiv = driver.FindElement(By.Id("dynamo")); IWebElement link = driver.FindElement(By.LinkText("Update a div")); link.Click(); - Assert.AreEqual("Fish and chips!", changedDiv.Text); + Assert.That(changedDiv.Text, Is.EqualTo("Fish and chips!")); } [Test] @@ -162,8 +162,8 @@ public void ShouldGetAttributesFromElement() IWebElement dynamo = driver.FindElement(By.Id("dynamo")); IWebElement mousedown = driver.FindElement(By.Id("mousedown")); - Assert.AreEqual("mousedown", mousedown.GetAttribute("id")); - Assert.AreEqual("dynamo", dynamo.GetAttribute("id")); + Assert.That(mousedown.GetAttribute("id"), Is.EqualTo("mousedown")); + Assert.That(dynamo.GetAttribute("id"), Is.EqualTo("dynamo")); } } diff --git a/dotnet/test/common/WindowSwitchingTest.cs b/dotnet/test/common/WindowSwitchingTest.cs index ab153b8377a506..9128351111f676 100644 --- a/dotnet/test/common/WindowSwitchingTest.cs +++ b/dotnet/test/common/WindowSwitchingTest.cs @@ -36,23 +36,23 @@ public void ShouldSwitchFocusToANewWindowWhenItIsOpenedAndNotStopFutureOperation String current = driver.CurrentWindowHandle; driver.FindElement(By.LinkText("Open new window")).Click(); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); WaitFor(WindowCountToBe(2), "Window count was not 2"); WaitFor(WindowWithName("result"), "Could not find window with name 'result'"); WaitFor(() => { return driver.Title == "We Arrive Here"; }, "Browser title was not 'We Arrive Here'"); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); driver.Url = iframesPage; string handle = driver.CurrentWindowHandle; driver.FindElement(By.Id("iframe_page_heading")); driver.SwitchTo().Frame("iframe1"); - Assert.AreEqual(driver.CurrentWindowHandle, handle); + Assert.That(handle, Is.EqualTo(driver.CurrentWindowHandle)); driver.SwitchTo().DefaultContent(); driver.Close(); driver.SwitchTo().Window(current); - //Assert.AreEqual("XHTML Test Page", driver.Title); + //Assert.That(driver.Title, Is.EqualTo("TML Test Page")); } [Test] @@ -79,7 +79,7 @@ public void ShouldThrowNoSuchWindowExceptionOnAnAttemptToGetItsHandle() driver.FindElement(By.LinkText("Open new window")).Click(); WaitFor(WindowCountToBe(2), "Window count was not 2"); - Assert.AreEqual(2, driver.WindowHandles.Count); + Assert.That(driver.WindowHandles, Has.Exactly(2).Items); WaitFor(WindowWithName("result"), "Could not find window with name 'result'"); driver.SwitchTo().Window("result"); @@ -108,7 +108,7 @@ public void ShouldThrowNoSuchWindowExceptionOnAnyOperationIfAWindowIsClosed() driver.FindElement(By.LinkText("Open new window")).Click(); WaitFor(WindowCountToBe(2), "Window count was not 2"); - Assert.AreEqual(2, driver.WindowHandles.Count); + Assert.That(driver.WindowHandles, Has.Exactly(2).Items); WaitFor(WindowWithName("result"), "Could not find window with name 'result'"); driver.SwitchTo().Window("result"); @@ -141,7 +141,7 @@ public void ShouldThrowNoSuchWindowExceptionOnAnyElementOperationIfAWindowIsClos driver.FindElement(By.LinkText("Open new window")).Click(); WaitFor(WindowCountToBe(2), "Window count was not 2"); - Assert.AreEqual(2, driver.WindowHandles.Count); + Assert.That(driver.WindowHandles, Has.Exactly(2).Items); WaitFor(WindowWithName("result"), "Could not find window with name 'result'"); driver.SwitchTo().Window("result"); @@ -182,7 +182,7 @@ public void ShouldBeAbleToIterateOverAllOpenWindows() seenHandles.Add(handle); } - Assert.AreEqual(3, allWindowHandles.Count); + Assert.That(allWindowHandles, Has.Exactly(3).Items); } [Test] @@ -265,7 +265,7 @@ public void FailingToSwitchToAWindowLeavesTheCurrentWindowAsIs() String newHandle = driver.CurrentWindowHandle; - Assert.AreEqual(current, newHandle); + Assert.That(newHandle, Is.EqualTo(current)); } [Test] @@ -281,7 +281,7 @@ public void CanCloseWindowWhenMultipleWindowsAreOpen() ReadOnlyCollection allWindowHandles = driver.WindowHandles; // There should be two windows. We should also see each of the window titles at least once. - Assert.AreEqual(2, allWindowHandles.Count); + Assert.That(allWindowHandles, Has.Exactly(2).Items); string handle1 = allWindowHandles[1]; driver.SwitchTo().Window(handle1); driver.Close(); @@ -289,7 +289,7 @@ public void CanCloseWindowWhenMultipleWindowsAreOpen() WaitFor(WindowCountToBe(1), "Window count was not 1"); allWindowHandles = driver.WindowHandles; - Assert.AreEqual(1, allWindowHandles.Count); + Assert.That(allWindowHandles, Has.One.Items); } [Test] @@ -309,7 +309,7 @@ public void CanCloseWindowAndSwitchBackToMainWindow() ReadOnlyCollection allWindowHandles = driver.WindowHandles; // There should be two windows. We should also see each of the window titles at least once. - Assert.AreEqual(2, allWindowHandles.Count); + Assert.That(allWindowHandles, Has.Exactly(2).Items); foreach (string handle in allWindowHandles) { @@ -323,9 +323,9 @@ public void CanCloseWindowAndSwitchBackToMainWindow() driver.SwitchTo().Window(mainHandle); string newHandle = driver.CurrentWindowHandle; - Assert.AreEqual(mainHandle, newHandle); + Assert.That(newHandle, Is.EqualTo(mainHandle)); - Assert.AreEqual(1, driver.WindowHandles.Count); + Assert.That(driver.WindowHandles, Has.One.Items); } [Test] @@ -381,8 +381,8 @@ public void ShouldGetBrowserHandles() ReadOnlyCollection handles = driver.WindowHandles; // At least the two handles we want should be there. - Assert.Contains(handle1, handles, "Should have contained current handle"); - Assert.Contains(handle2, handles, "Should have contained result handle"); + Assert.That(handles, Does.Contain(handle1), "Should have contained current handle"); + Assert.That(handles, Does.Contain(handle2), "Should have contained result handle"); // Some (semi-)clean up.. driver.SwitchTo().Window(handle2); diff --git a/dotnet/test/common/WindowTest.cs b/dotnet/test/common/WindowTest.cs index ac8fd10128444d..29110bc0439d74 100644 --- a/dotnet/test/common/WindowTest.cs +++ b/dotnet/test/common/WindowTest.cs @@ -60,8 +60,8 @@ public void ShouldBeAbleToSetTheSizeOfTheCurrentWindow() ChangeSizeBy(-20, -20); Size newSize = window.Size; - Assert.AreEqual(targetSize.Width, newSize.Width); - Assert.AreEqual(targetSize.Height, newSize.Height); + Assert.That(newSize.Width, Is.EqualTo(targetSize.Width)); + Assert.That(newSize.Height, Is.EqualTo(targetSize.Height)); } [Test] @@ -80,8 +80,8 @@ public void ShouldBeAbleToSetTheSizeOfTheCurrentWindowFromFrame() Size newSize = window.Size; - Assert.AreEqual(targetSize.Width, newSize.Width); - Assert.AreEqual(targetSize.Height, newSize.Height); + Assert.That(newSize.Width, Is.EqualTo(targetSize.Width)); + Assert.That(newSize.Height, Is.EqualTo(targetSize.Height)); } finally { @@ -105,8 +105,8 @@ public void ShouldBeAbleToSetTheSizeOfTheCurrentWindowFromIFrame() Size newSize = window.Size; - Assert.AreEqual(targetSize.Width, newSize.Width); - Assert.AreEqual(targetSize.Height, newSize.Height); + Assert.That(newSize.Width, Is.EqualTo(targetSize.Width)); + Assert.That(newSize.Height, Is.EqualTo(targetSize.Height)); } finally { @@ -134,8 +134,8 @@ public void ShouldBeAbleToSetThePositionOfTheCurrentWindow() Point newLocation = window.Position; - Assert.AreEqual(targetPosition.X, newLocation.X); - Assert.AreEqual(targetPosition.Y, newLocation.Y); + Assert.That(newLocation.X, Is.EqualTo(targetPosition.X)); + Assert.That(newLocation.Y, Is.EqualTo(targetPosition.Y)); } [Test] diff --git a/dotnet/test/firefox/FirefoxDriverTest.cs b/dotnet/test/firefox/FirefoxDriverTest.cs index 0ea48610a235ac..0de306815de96d 100644 --- a/dotnet/test/firefox/FirefoxDriverTest.cs +++ b/dotnet/test/firefox/FirefoxDriverTest.cs @@ -34,15 +34,9 @@ public void ShouldContinueToWorkIfUnableToFindElementById() { driver.Url = formsPage; - try - { - driver.FindElement(By.Id("notThere")); - Assert.Fail("Should not be able to select element by id here"); - } - catch (NoSuchElementException) - { - // This is expected - } + Assert.That( + () => driver.FindElement(By.Id("notThere")), + Throws.InstanceOf()); // Is this works, then we're golden driver.Url = xhtmlTestPage; @@ -64,7 +58,7 @@ public void ShouldWaitUntilBrowserHasClosedProperly() textarea.SendKeys(expectedText); string seenText = textarea.GetAttribute("value"); - Assert.AreEqual(expectedText, seenText); + Assert.That(seenText, Is.EqualTo(expectedText)); } //[Test] @@ -75,8 +69,8 @@ public void ShouldBeAbleToStartMoreThanOneInstanceOfTheFirefoxDriverSimultaneous driver.Url = xhtmlTestPage; secondDriver.Url = formsPage; - Assert.AreEqual("XHTML Test Page", driver.Title); - Assert.AreEqual("We Leave From Here", secondDriver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); + Assert.That(secondDriver.Title, Is.EqualTo("We Leave From Here")); // We only need to quit the second driver if the test passes secondDriver.Quit(); @@ -109,7 +103,7 @@ public void ShouldRemoveProfileAfterExit() string profileLocation = profile.ProfileDirectory; firefox.Quit(); - Assert.IsFalse(Directory.Exists(profileLocation)); + Assert.That(profileLocation, Does.Not.Exist); } //[Test] @@ -133,7 +127,7 @@ public void FocusRemainsInOriginalWindowWhenOpeningNewWindow() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("ABC DEF"); - Assert.AreEqual("ABC DEF", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("ABC DEF")); } //[Test] @@ -157,7 +151,7 @@ public void SwitchingWindowShouldSwitchFocus() List allWindowHandles = new List(driver.WindowHandles); // There should be two windows. We should also see each of the window titles at least once. - Assert.AreEqual(2, allWindowHandles.Count); + Assert.That(allWindowHandles, Has.Exactly(2).Items); allWindowHandles.Remove(originalWinHandle); string newWinHandle = (string)allWindowHandles[0]; @@ -169,7 +163,7 @@ public void SwitchingWindowShouldSwitchFocus() IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("ABC DEF"); - Assert.AreEqual("ABC DEF", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("ABC DEF")); // Key events in original window. driver.SwitchTo().Window(originalWinHandle); @@ -178,7 +172,7 @@ public void SwitchingWindowShouldSwitchFocus() IWebElement keyReporter2 = driver.FindElement(By.Id("keyReporter")); keyReporter2.SendKeys("QWERTY"); - Assert.AreEqual("QWERTY", keyReporter2.GetAttribute("value")); + Assert.That(keyReporter2.GetAttribute("value"), Is.EqualTo("QWERTY")); } //[Test] @@ -199,7 +193,7 @@ public void ClosingWindowAndSwitchingToOriginalSwitchesFocus() SleepBecauseWindowsTakeTimeToOpen(); List allWindowHandles = new List(driver.WindowHandles); // There should be two windows. We should also see each of the window titles at least once. - Assert.AreEqual(2, allWindowHandles.Count); + Assert.That(allWindowHandles, Has.Exactly(2).Items); allWindowHandles.Remove(originalWinHandle); string newWinHandle = (string)allWindowHandles[0]; @@ -217,7 +211,7 @@ public void ClosingWindowAndSwitchingToOriginalSwitchesFocus() driver.Url = javascriptPage; IWebElement keyReporter = driver.FindElement(By.Id("keyReporter")); keyReporter.SendKeys("ABC DEF"); - Assert.AreEqual("ABC DEF", keyReporter.GetAttribute("value")); + Assert.That(keyReporter.GetAttribute("value"), Is.EqualTo("ABC DEF")); } //[Test] @@ -234,7 +228,7 @@ public void CanBlockInvalidSslCertificates() secondDriver = new FirefoxDriver(options); secondDriver.Url = url; string gotTitle = secondDriver.Title; - Assert.AreNotEqual("Hello IWebDriver", gotTitle); + Assert.That(gotTitle, Is.EqualTo("Hello IWebDriver")); } catch (Exception) { @@ -263,7 +257,7 @@ public void ShouldAllowUserToSuccessfullyOverrideTheHomePage() try { - Assert.AreEqual(javascriptPage, driver2.Url); + Assert.That(driver2.Url, Is.EqualTo(javascriptPage)); } finally { diff --git a/dotnet/test/firefox/FirefoxProfileManagerTest.cs b/dotnet/test/firefox/FirefoxProfileManagerTest.cs index 82833b3e7c035c..649241074440ff 100644 --- a/dotnet/test/firefox/FirefoxProfileManagerTest.cs +++ b/dotnet/test/firefox/FirefoxProfileManagerTest.cs @@ -36,28 +36,28 @@ public void SetUp() public void ShouldGetNamedProfile() { FirefoxProfile profile = manager.GetProfile("default"); - Assert.IsNotNull(profile); + Assert.That(profile, Is.Not.Null); } //[Test] public void ShouldReturnNullForInvalidProfileName() { FirefoxProfile profile = manager.GetProfile("ThisIsMyBogusProfileName"); - Assert.IsNull(profile); + Assert.That(profile, Is.Null); } //[Test] public void ShouldReturnNullForNullProfileName() { FirefoxProfile profile = manager.GetProfile(null); - Assert.IsNull(profile); + Assert.That(profile, Is.Null); } //[Test] public void ShouldReturnNullForEmptyProfileName() { FirefoxProfile profile = manager.GetProfile(string.Empty); - Assert.IsNull(profile); + Assert.That(profile, Is.Null); } } } diff --git a/dotnet/test/firefox/FirefoxProfileTests.cs b/dotnet/test/firefox/FirefoxProfileTests.cs index 3cc64fd2220fca..3b1b89cdbd5b8d 100644 --- a/dotnet/test/firefox/FirefoxProfileTests.cs +++ b/dotnet/test/firefox/FirefoxProfileTests.cs @@ -54,7 +54,7 @@ public void ShouldQuoteStringsWhenSettingStringProperties() break; } } - Assert.IsTrue(seenCheese); + Assert.That(seenCheese, Is.True); } //[Test] @@ -72,7 +72,7 @@ public void ShouldSetIntegerPreferences() break; } } - Assert.IsTrue(seenCheese, "Did not see integer value being set correctly"); + Assert.That(seenCheese, Is.True, "Did not see integer value being set correctly"); } //[Test] @@ -90,7 +90,7 @@ public void testShouldSetBooleanPreferences() } } - Assert.IsTrue(seenCheese, "Did not see boolean value being set correctly"); + Assert.That(seenCheese, Is.True, "Did not see boolean value being set correctly"); } private List ReadGeneratedProperties() diff --git a/dotnet/test/ie/IeSpecificTests.cs b/dotnet/test/ie/IeSpecificTests.cs index 444bf96096765c..0158c19158f985 100644 --- a/dotnet/test/ie/IeSpecificTests.cs +++ b/dotnet/test/ie/IeSpecificTests.cs @@ -118,7 +118,7 @@ public void KeysTest() } } - Assert.IsTrue(passed, errors); + Assert.That(passed, errors); } //[Test] @@ -140,7 +140,7 @@ public void ScrollingFrameTest() WaitFor(FrameToExistAndBeSwitchedTo("scrolling_frame"), "No frame with name or id 'scrolling_frame' found"); IWebElement element = driver.FindElement(By.Name("scroll_checkbox")); element.Click(); - Assert.IsTrue(element.Selected); + Assert.That(element.Selected); driver.SwitchTo().DefaultContent(); @@ -148,7 +148,7 @@ public void ScrollingFrameTest() WaitFor(FrameToExistAndBeSwitchedTo("scrolling_frame"), "No frame with name or id 'scrolling_frame' found"); element = driver.FindElement(By.Name("scroll_checkbox")); element.Click(); - Assert.IsTrue(element.Selected); + Assert.That(element.Selected); } finally { @@ -176,11 +176,11 @@ public void ShouldBeAbleToBrowseTransformedXml() driver.FindElement(By.Id("x")).Click(); // Sleep is required; driver may not be fast enough after this Click(). System.Threading.Thread.Sleep(2000); - Assert.AreEqual("XHTML Test Page", driver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); // Act on the result page to make sure the window handling is still valid. driver.FindElement(By.Id("linkId")).Click(); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); } //[Test] @@ -191,8 +191,8 @@ public void ShouldBeAbleToStartMoreThanOneInstanceOfTheIEDriverSimultaneously() driver.Url = xhtmlTestPage; secondDriver.Url = formsPage; - Assert.AreEqual("XHTML Test Page", driver.Title); - Assert.AreEqual("We Leave From Here", secondDriver.Title); + Assert.That(driver.Title, Is.EqualTo("XHTML Test Page")); + Assert.That(secondDriver.Title, Is.EqualTo("We Arrive Here")); // We only need to quit the second driver if the test passes secondDriver.Quit(); @@ -212,7 +212,7 @@ public void ShouldPropagateSessionCookies() string bodyStyle = driver.FindElement(By.TagName("body")).GetAttribute("style"); driver.Close(); driver.SwitchTo().Window(startWindow); - Assert.IsTrue(bodyStyle.Contains("BACKGROUND-COLOR: #80ffff") || bodyStyle.Contains("background-color: rgb(128, 255, 255)")); + Assert.That(bodyStyle, Does.Contain("BACKGROUND-COLOR: #80ffff").Or.Contain("background-color: rgb(128, 255, 255)")); } //[Test] @@ -226,7 +226,7 @@ public void ShouldHandleShowModalDialogWindows() WaitFor(() => { return driver.WindowHandles.Count > 1; }, "Window count was not greater than 1"); ReadOnlyCollection windowHandles = driver.WindowHandles; - Assert.AreEqual(2, windowHandles.Count); + Assert.That(windowHandles, Has.Exactly(2).Items); string dialogHandle = string.Empty; foreach (string handle in windowHandles) @@ -238,7 +238,7 @@ public void ShouldHandleShowModalDialogWindows() } } - Assert.AreNotEqual(string.Empty, dialogHandle); + Assert.That(dialogHandle, Is.Not.Empty); driver.SwitchTo().Window(dialogHandle); IWebElement closeElement = driver.FindElement(By.Id("close")); @@ -247,7 +247,7 @@ public void ShouldHandleShowModalDialogWindows() WaitFor(() => { return driver.WindowHandles.Count == 1; }, "Window count was not 1"); windowHandles = driver.WindowHandles; - Assert.AreEqual(1, windowHandles.Count); + Assert.That(windowHandles, Has.One.Items); driver.SwitchTo().Window(originalWindowHandle); } @@ -256,9 +256,9 @@ public void ScrollTest() { driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("scroll.html"); driver.FindElement(By.Id("line8")).Click(); - Assert.AreEqual("line8", driver.FindElement(By.Id("clicked")).Text); + Assert.That(driver.FindElement(By.Id("clicked")).Text, Is.EqualTo("line8")); driver.FindElement(By.Id("line1")).Click(); - Assert.AreEqual("line1", driver.FindElement(By.Id("clicked")).Text); + Assert.That(driver.FindElement(By.Id("clicked")).Text, Is.EqualTo("line1")); } //[Test] @@ -268,7 +268,7 @@ public void ShouldNotScrollOverflowElementsWhichAreVisible() var list = driver.FindElement(By.TagName("ul")); var item = list.FindElement(By.Id("desired")); item.Click(); - Assert.AreEqual(0, ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].scrollTop;", list), "Should not have scrolled"); + Assert.That(((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].scrollTop;", list), Is.Zero, "Should not have scrolled"); } //[Test] @@ -278,7 +278,7 @@ public void ShouldNotScrollIfAlreadyScrolledAndElementIsInView() driver.FindElement(By.Id("button1")).Click(); var scrollTop = GetScrollTop(); driver.FindElement(By.Id("button2")).Click(); - Assert.AreEqual(scrollTop, GetScrollTop()); + Assert.That(GetScrollTop(), Is.EqualTo(scrollTop)); } //[Test] @@ -293,7 +293,7 @@ public void ShouldBeAbleToHandleCascadingModalDialogs() ReadOnlyCollection windows = driver.WindowHandles; string firstWindowHandle = windows.Except(new List() { parentHandle }).First(); driver.SwitchTo().Window(firstWindowHandle); - Assert.AreEqual(2, windows.Count); + Assert.That(windows, Has.Exactly(2).Items); // Launch second modal driver.FindElement(By.CssSelector("input[type='button'][value='btn2']")).Click(); @@ -301,14 +301,14 @@ public void ShouldBeAbleToHandleCascadingModalDialogs() ReadOnlyCollection windows_1 = driver.WindowHandles; string secondWindowHandle = windows_1.Except(windows).First(); driver.SwitchTo().Window(secondWindowHandle); - Assert.AreEqual(3, windows_1.Count); + Assert.That(windows_1, Has.Exactly(3).Items); // Launch third modal driver.FindElement(By.CssSelector("input[type='button'][value='btn3']")).Click(); WaitFor(() => { return driver.WindowHandles.Count > 3; }, "Window count was not greater than 3"); ReadOnlyCollection windows_2 = driver.WindowHandles; string finalWindowHandle = windows_2.Except(windows_1).First(); - Assert.AreEqual(4, windows_2.Count); + Assert.That(windows_2, Has.Exactly(4).Items); driver.SwitchTo().Window(finalWindowHandle).Close(); driver.SwitchTo().Window(secondWindowHandle).Close(); @@ -328,7 +328,7 @@ public void ShouldBeAbleToHandleCascadingModalDialogsLaunchedWithJavaScriptLinks ReadOnlyCollection windows = driver.WindowHandles; string firstWindowHandle = windows.Except(new List() { parentHandle }).First(); driver.SwitchTo().Window(firstWindowHandle); - Assert.AreEqual(2, windows.Count); + Assert.That(windows, Has.Exactly(2).Items); // Launch second modal driver.FindElement(By.CssSelector("a[id='lnk2']")).Click(); @@ -337,14 +337,14 @@ public void ShouldBeAbleToHandleCascadingModalDialogsLaunchedWithJavaScriptLinks ReadOnlyCollection windows_1 = driver.WindowHandles; string secondWindowHandle = windows_1.Except(windows).First(); driver.SwitchTo().Window(secondWindowHandle); - Assert.AreEqual(3, windows_1.Count); + Assert.That(windows_1, Has.Exactly(3).Items); // Launch third modal driver.FindElement(By.CssSelector("a[id='lnk3']")).Click(); WaitFor(() => { return driver.WindowHandles.Count > 3; }, "Window count was not greater than 3"); ReadOnlyCollection windows_2 = driver.WindowHandles; string finalWindowHandle = windows_2.Except(windows_1).First(); - Assert.AreEqual(4, windows_2.Count); + Assert.That(windows_2, Has.Exactly(4).Items); driver.SwitchTo().Window(finalWindowHandle).Close(); driver.SwitchTo().Window(secondWindowHandle).Close(); diff --git a/dotnet/test/remote/RemoteSessionCreationTests.cs b/dotnet/test/remote/RemoteSessionCreationTests.cs index 685b234cd1b573..a194c3e96d5ada 100644 --- a/dotnet/test/remote/RemoteSessionCreationTests.cs +++ b/dotnet/test/remote/RemoteSessionCreationTests.cs @@ -34,7 +34,7 @@ public void CreateChromeRemoteSession() chrome.Url = xhtmlTestPage; try { - Assert.AreEqual("XHTML Test Page", chrome.Title); + Assert.That(chrome.Title, Is.EqualTo("XHTML Test Page")); } finally { @@ -49,7 +49,7 @@ public void CreateFirefoxRemoteSession() firefox.Url = xhtmlTestPage; try { - Assert.AreEqual("XHTML Test Page", firefox.Title); + Assert.That(firefox.Title, Is.EqualTo("XHTML Test Page")); } finally { @@ -64,7 +64,7 @@ public void CreateEdgeRemoteSession() edge.Url = xhtmlTestPage; try { - Assert.AreEqual("XHTML Test Page", edge.Title); + Assert.That(edge.Title, Is.EqualTo("XHTML Test Page")); } finally { diff --git a/dotnet/test/remote/RemoteWebDriverSpecificTests.cs b/dotnet/test/remote/RemoteWebDriverSpecificTests.cs index 1462f4cbc8a9e6..391309436ff6cd 100644 --- a/dotnet/test/remote/RemoteWebDriverSpecificTests.cs +++ b/dotnet/test/remote/RemoteWebDriverSpecificTests.cs @@ -62,7 +62,7 @@ public void ShouldBeAbleToSendFileToRemoteServer() IAllowsFileDetection fileDetectionDriver = driver as IAllowsFileDetection; if (fileDetectionDriver == null) { - Assert.Fail("driver does not support file detection. This should not be"); + Assert.That(driver, Is.InstanceOf(), "driver does not support file detection. This should not be"); } fileDetectionDriver.FileDetector = new LocalFileDetector(); @@ -75,7 +75,7 @@ public void ShouldBeAbleToSendFileToRemoteServer() driver.SwitchTo().Frame("upload_target"); IWebElement body = driver.FindElement(By.XPath("//body")); - Assert.IsTrue(LoremIpsumText == body.Text, "Page source is: " + driver.PageSource); + Assert.That(body.Text, Is.EqualTo(LoremIpsumText), "Page source is: " + driver.PageSource); driver.SwitchTo().DefaultContent(); uploadElement = driver.FindElement(By.Id("upload")); Console.WriteLine(uploadElement.Text); diff --git a/dotnet/test/support/Events/EventFiringWebDriverElementTest.cs b/dotnet/test/support/Events/EventFiringWebDriverElementTest.cs index fd668df43d92ba..5ed36b705700c1 100644 --- a/dotnet/test/support/Events/EventFiringWebDriverElementTest.cs +++ b/dotnet/test/support/Events/EventFiringWebDriverElementTest.cs @@ -37,7 +37,7 @@ public void CanTakeEventFiringWebElementScreenshot() IWebElement element = firingDriver.FindElement(By.Name("checky")); Screenshot screenshot = ((ITakesScreenshot)element).GetScreenshot(); - Assert.IsNotNull(screenshot); + Assert.That(screenshot, Is.Not.Null); } } } diff --git a/dotnet/test/support/Events/EventFiringWebDriverTest.cs b/dotnet/test/support/Events/EventFiringWebDriverTest.cs index 8623c02b5f07af..bf2d95aec33f3f 100644 --- a/dotnet/test/support/Events/EventFiringWebDriverTest.cs +++ b/dotnet/test/support/Events/EventFiringWebDriverTest.cs @@ -85,7 +85,7 @@ Navigated forward mockNavigation.Verify(x => x.ForwardAsync(), Times.Once); string normalizedActualLog = log.ToString().Replace("\r\n", "\n").Replace("\r", "\n"); - Assert.AreEqual(normalizedExpectedLog, normalizedActualLog); + Assert.That(normalizedActualLog, Is.EqualTo(normalizedExpectedLog)); } [Test] @@ -103,7 +103,7 @@ public void ShouldFireClickEvent() string expectedLog = @"Clicking Clicked "; - Assert.AreEqual(expectedLog, log.ToString()); + Assert.That(log.ToString(), Is.EqualTo(expectedLog)); } [Test] @@ -126,7 +126,7 @@ public void ShouldFireValueChangedEvent() ValueChanging 'Dummy Text' ValueChanged 'Dummy Text' "; - Assert.AreEqual(expectedLog, log.ToString()); + Assert.That(log.ToString(), Is.EqualTo(expectedLog)); } [Test] @@ -138,7 +138,7 @@ public void ElementsCanEqual() var element1 = firingDriver.FindElement(By.Id("foo")); var element2 = firingDriver.FindElement(By.Id("foo")); - Assert.AreEqual(element1, element2); + Assert.That(element2, Is.EqualTo(element1)); } [Test] @@ -172,7 +172,7 @@ public void ShouldFireFindByEvent() FindElementCompleted from IWebDriver By.XPath: //link[@type = 'text/css'] "; - Assert.AreEqual(expectedLog, log.ToString()); + Assert.That(log.ToString(), Is.EqualTo(expectedLog)); } [Test] @@ -184,17 +184,11 @@ public void ShouldCallListenerOnException() EventFiringWebDriver firingDriver = new EventFiringWebDriver(mockDriver.Object); firingDriver.ExceptionThrown += new EventHandler(firingDriver_ExceptionThrown); - try - { - firingDriver.FindElement(By.Id("foo")); - Assert.Fail("Expected exception to be propogated"); - } - catch (NoSuchElementException) - { - // Fine - } + Assert.That( + () => firingDriver.FindElement(By.Id("foo")), + Throws.InstanceOf()); - Assert.IsTrue(log.ToString().Contains(exception.Message)); + Assert.That(log.ToString(), Does.Contain(exception.Message)); } [Test] @@ -231,7 +225,7 @@ public void ShouldBeAbleToAccessWrappedInstanceFromEventCalls() stubDriver = new StubDriver(); EventFiringWebDriver testDriver = new EventFiringWebDriver(stubDriver); StubDriver wrapped = ((IWrapsDriver)testDriver).WrappedDriver as StubDriver; - Assert.AreEqual(stubDriver, wrapped); + Assert.That(wrapped, Is.EqualTo(stubDriver)); testDriver.Navigating += new EventHandler(testDriver_Navigating); testDriver.Url = "http://example.org"; @@ -253,13 +247,13 @@ public void ShouldFireGetShadowRootEvents() // act abcElement.GetShadowRoot(); - Assert.IsNotNull(gettingShadowRootArgs); - Assert.AreEqual(mockDriver.Object, gettingShadowRootArgs.Driver); - Assert.AreEqual(mockElement.Object, gettingShadowRootArgs.SearchContext); + Assert.That(gettingShadowRootArgs, Is.Not.Null); + Assert.That(gettingShadowRootArgs.Driver, Is.EqualTo(mockDriver.Object)); + Assert.That(gettingShadowRootArgs.SearchContext, Is.EqualTo(mockElement.Object)); - Assert.IsNotNull(getShadowRootCompletedArgs); - Assert.AreEqual(mockDriver.Object, getShadowRootCompletedArgs.Driver); - Assert.AreEqual(mockElement.Object, getShadowRootCompletedArgs.SearchContext); + Assert.That(getShadowRootCompletedArgs, Is.Not.Null); + Assert.That(getShadowRootCompletedArgs.Driver, Is.EqualTo(mockDriver.Object)); + Assert.That(getShadowRootCompletedArgs.SearchContext, Is.EqualTo(mockElement.Object)); } [Test] @@ -281,18 +275,18 @@ public void ShouldFireFindEventsInShadowRoot() // act var element = shadowRoot.FindElement(By.CssSelector(".abc")); - Assert.IsNotNull(findingElementArgs); - Assert.AreEqual(mockDriver.Object, findingElementArgs.Driver); - Assert.AreEqual(null, findingElementArgs.Element); + Assert.That(findingElementArgs, Is.Not.Null); + Assert.That(findingElementArgs.Driver, Is.EqualTo(mockDriver.Object)); + Assert.That(findingElementArgs.Element, Is.Null); - Assert.IsNotNull(findElementCompletedArgs); - Assert.AreEqual(mockDriver.Object, findElementCompletedArgs.Driver); - Assert.AreEqual(null, findElementCompletedArgs.Element); + Assert.That(findElementCompletedArgs, Is.Not.Null); + Assert.That(findElementCompletedArgs.Driver, Is.EqualTo(mockDriver.Object)); + Assert.That(findElementCompletedArgs.Element, Is.Null); } void testDriver_Navigating(object sender, WebDriverNavigationEventArgs e) { - Assert.AreEqual(e.Driver, stubDriver); + Assert.That(stubDriver, Is.EqualTo(e.Driver)); } void firingDriver_ExceptionThrown(object sender, WebDriverExceptionEventArgs e) diff --git a/dotnet/test/support/UI/DefaultWaitTest.cs b/dotnet/test/support/UI/DefaultWaitTest.cs index 311123a2032ebb..6da08aa208ce97 100644 --- a/dotnet/test/support/UI/DefaultWaitTest.cs +++ b/dotnet/test/support/UI/DefaultWaitTest.cs @@ -55,7 +55,7 @@ public void ShouldWaitUntilReturnValueOfConditionIsNotNull() wait.PollingInterval = TimeSpan.FromSeconds(2); wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(NoSuchFrameException)); - Assert.AreEqual(defaultReturnValue, wait.Until(condition)); + Assert.That(wait.Until(condition), Is.EqualTo(defaultReturnValue)); } [Test] @@ -71,7 +71,7 @@ public void ShouldWaitUntilABooleanResultIsTrue() wait.PollingInterval = TimeSpan.FromSeconds(2); wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(NoSuchFrameException)); - Assert.IsTrue(wait.Until(condition)); + Assert.That(wait.Until(condition), Is.True); } [Test] @@ -102,7 +102,7 @@ public void CanIgnoreMultipleExceptions() wait.PollingInterval = TimeSpan.FromSeconds(2); wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(NoSuchFrameException)); - Assert.AreEqual(defaultReturnValue, wait.Until(condition)); + Assert.That(wait.Until(condition), Is.EqualTo(defaultReturnValue)); } [Test] @@ -119,10 +119,10 @@ public void PropagatesUnIgnoredExceptions() wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(NoSuchFrameException)); var caughtException = Assert.Throws(() => wait.Until(condition)); - Assert.AreSame(ex, caughtException); + Assert.That(caughtException, Is.SameAs(ex)); // Regression test for issue #6343 - StringAssert.Contains("NonInlineableThrow", caughtException.StackTrace, "the stack trace must include the call to NonInlineableThrow()"); + Assert.That(caughtException.StackTrace, Does.Contain("NonInlineableThrow"), "the stack trace must include the call to NonInlineableThrow()"); } [Test] @@ -139,7 +139,7 @@ public void TimeoutMessageIncludesLastIgnoredException() wait.IgnoreExceptionTypes(typeof(NoSuchWindowException)); var caughtException = Assert.Throws(() => wait.Until(condition)); - Assert.AreSame(ex, caughtException.InnerException); + Assert.That(caughtException.InnerException, Is.SameAs(ex)); } [Test] diff --git a/dotnet/test/support/UI/LoadableComponentTests.cs b/dotnet/test/support/UI/LoadableComponentTests.cs index cd86498113cbdf..0d99c2c8161f1b 100644 --- a/dotnet/test/support/UI/LoadableComponentTests.cs +++ b/dotnet/test/support/UI/LoadableComponentTests.cs @@ -45,7 +45,7 @@ public void ShouldCauseTheLoadMethodToBeCalledIfTheComponentIsNotAlreadyLoaded() ok.Load(); - Assert.True(ok.WasLoadCalled()); + Assert.That(ok.WasLoadCalled(), Is.True); } [Test] @@ -53,31 +53,21 @@ public void ShouldThrowAnErrorIfCallingLoadDoesNotCauseTheComponentToLoad() { LoadsOk ok = new LoadsOk(false); - try - { - ok.Load(); - Assert.Fail(); - } - catch (LoadableComponentException e) - { - Assert.AreEqual("Expected failure", e.Message); - } + Assert.That( + () => ok.Load(), + Throws.InstanceOf().With.Message.EqualTo("Expected failure")); } [Test] public void ShouldCallHandleLoadErrorWhenWebDriverExceptionOccursDuringExecuteLoad() { ExecuteLoadThrows loadThrows = new ExecuteLoadThrows(); - try - { - loadThrows.Load(); - Assert.Fail(); - } - catch (Exception e) - { - Assert.AreEqual("HandleLoadError called", e.Message); - Assert.AreEqual("Excpected failure in ExecuteLoad", e.InnerException.Message); - } + + Assert.That( + () => loadThrows.Load(), + Throws.Exception + .With.Message.EqualTo("HandleLoadError called") + .And.InnerException.Message.EqualTo("Excpected failure in ExecuteLoad")); } diff --git a/dotnet/test/support/UI/PopupWindowFinderTest.cs b/dotnet/test/support/UI/PopupWindowFinderTest.cs index 692fa8d19e1bb7..ac9f805083fd01 100644 --- a/dotnet/test/support/UI/PopupWindowFinderTest.cs +++ b/dotnet/test/support/UI/PopupWindowFinderTest.cs @@ -49,11 +49,11 @@ public void ShouldFindPopupWindowUsingAction() PopupWindowFinder finder = new PopupWindowFinder(driver); string newHandle = finder.Invoke(() => { driver.FindElement(By.LinkText("Open new window")).Click(); }); - Assert.That(newHandle, Is.Not.Null.Or.Empty); - Assert.AreNotEqual(current, newHandle); + Assert.That(newHandle, Is.Not.Null.And.Not.Empty); + Assert.That(newHandle, Is.Not.EqualTo(current)); driver.SwitchTo().Window(newHandle); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); driver.Close(); driver.SwitchTo().Window(current); @@ -68,11 +68,11 @@ public void ShouldFindPopupWindowUsingElementClick() PopupWindowFinder finder = new PopupWindowFinder(driver); string newHandle = finder.Click(driver.FindElement(By.LinkText("Open new window"))); - Assert.That(newHandle, Is.Not.Null.Or.Empty); - Assert.AreNotEqual(current, newHandle); + Assert.That(newHandle, Is.Not.Null.And.Not.Empty); + Assert.That(newHandle, Is.Not.EqualTo(current)); driver.SwitchTo().Window(newHandle); - Assert.AreEqual("We Arrive Here", driver.Title); + Assert.That(driver.Title, Is.EqualTo("We Arrive Here")); driver.Close(); driver.SwitchTo().Window(current); @@ -86,14 +86,14 @@ public void ShouldFindMultiplePopupWindowsInSuccession() PopupWindowFinder finder = new PopupWindowFinder(driver); string second = finder.Click(driver.FindElement(By.Name("windowOne"))); - Assert.That(second, Is.Not.Null.Or.Empty); - Assert.AreNotEqual(first, second); + Assert.That(second, Is.Not.Null.And.Not.Empty); + Assert.That(second, Is.Not.EqualTo(first)); finder = new PopupWindowFinder(driver); string third = finder.Click(driver.FindElement(By.Name("windowTwo"))); - Assert.That(third, Is.Not.Null.Or.Empty); - Assert.AreNotEqual(first, third); - Assert.AreNotEqual(second, third); + Assert.That(third, Is.Not.Null.And.Not.Empty); + Assert.That(third, Is.Not.EqualTo(first)); + Assert.That(third, Is.Not.EqualTo(second)); driver.SwitchTo().Window(second); driver.Close(); @@ -109,7 +109,9 @@ public void ShouldNotFindPopupWindowWhenNoneExists() { driver.Url = xhtmlTestPage; PopupWindowFinder finder = new PopupWindowFinder(driver); - Assert.Throws(() => { string handle = finder.Click(driver.FindElement(By.Id("linkId"))); }); + Assert.That( + () => finder.Click(driver.FindElement(By.Id("linkId"))), + Throws.TypeOf()); } } } diff --git a/dotnet/test/support/UI/SelectBrowserTests.cs b/dotnet/test/support/UI/SelectBrowserTests.cs index fc835d96a4596d..3978627f370731 100644 --- a/dotnet/test/support/UI/SelectBrowserTests.cs +++ b/dotnet/test/support/UI/SelectBrowserTests.cs @@ -51,7 +51,9 @@ public void Setup() public void ShouldThrowAnExceptionIfTheElementIsNotASelectElement() { IWebElement element = driver.FindElement(By.Name("checky")); - Assert.Throws(() => { SelectElement elementWrapper = new SelectElement(element); }); + Assert.That( + () => new SelectElement(element), + Throws.TypeOf()); } [Test] @@ -59,7 +61,7 @@ public void ShouldIndicateThatASelectCanSupportMultipleOptions() { IWebElement element = driver.FindElement(By.Name("multi")); SelectElement elementWrapper = new SelectElement(element); - Assert.IsTrue(elementWrapper.IsMultiple); + Assert.That(elementWrapper.IsMultiple, Is.True); } [Test] @@ -67,7 +69,7 @@ public void ShouldIndicateThatASelectCanSupportMultipleOptionsWithEmptyMultipleA { IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.IsTrue(elementWrapper.IsMultiple); + Assert.That(elementWrapper.IsMultiple, Is.True); } [Test] @@ -75,7 +77,7 @@ public void ShouldIndicateThatASelectCanSupportMultipleOptionsWithTrueMultipleAt { IWebElement element = driver.FindElement(By.Name("multi_true")); SelectElement elementWrapper = new SelectElement(element); - Assert.IsTrue(elementWrapper.IsMultiple); + Assert.That(elementWrapper.IsMultiple, Is.True); } [Test] @@ -83,7 +85,7 @@ public void ShouldNotIndicateThatANormalSelectSupportsMulitpleOptions() { IWebElement element = driver.FindElement(By.Name("selectomatic")); SelectElement elementWrapper = new SelectElement(element); - Assert.IsFalse(elementWrapper.IsMultiple); + Assert.That(elementWrapper.IsMultiple, Is.False); } [Test] @@ -91,7 +93,7 @@ public void ShouldIndicateThatASelectCanSupportMultipleOptionsWithFalseMultipleA { IWebElement element = driver.FindElement(By.Name("multi_false")); SelectElement elementWrapper = new SelectElement(element); - Assert.IsTrue(elementWrapper.IsMultiple); + Assert.That(elementWrapper.IsMultiple, Is.True); } [Test] @@ -101,19 +103,19 @@ public void ShouldReturnAllOptionsWhenAsked() SelectElement elementWrapper = new SelectElement(element); IList returnedOptions = elementWrapper.Options; - Assert.AreEqual(4, returnedOptions.Count); + Assert.That(returnedOptions, Has.Exactly(4).Items); string one = returnedOptions[0].Text; - Assert.AreEqual("One", one); + Assert.That(one, Is.EqualTo("One")); string two = returnedOptions[1].Text; - Assert.AreEqual("Two", two); + Assert.That(two, Is.EqualTo("Two")); string three = returnedOptions[2].Text; - Assert.AreEqual("Four", three); + Assert.That(three, Is.EqualTo("Four")); string four = returnedOptions[3].Text; - Assert.AreEqual("Still learning how to count, apparently", four); + Assert.That(four, Is.EqualTo("Still learning how to count, apparently")); } @@ -125,10 +127,10 @@ public void ShouldReturnOptionWhichIsSelected() IList returnedOptions = elementWrapper.AllSelectedOptions; - Assert.AreEqual(1, returnedOptions.Count); + Assert.That(returnedOptions, Has.One.Items); string one = returnedOptions[0].Text; - Assert.AreEqual("One", one); + Assert.That(one, Is.EqualTo("One")); } [Test] @@ -139,13 +141,13 @@ public void ShouldReturnOptionsWhichAreSelected() IList returnedOptions = elementWrapper.AllSelectedOptions; - Assert.AreEqual(2, returnedOptions.Count); + Assert.That(returnedOptions, Has.Exactly(2).Items); string one = returnedOptions[0].Text; - Assert.AreEqual("Eggs", one); + Assert.That(one, Is.EqualTo("Eggs")); string two = returnedOptions[1].Text; - Assert.AreEqual("Sausages", two); + Assert.That(two, Is.EqualTo("Sausages")); } [Test] @@ -156,7 +158,7 @@ public void ShouldReturnFirstSelectedOption() IWebElement firstSelected = elementWrapper.AllSelectedOptions[0]; - Assert.AreEqual("Eggs", firstSelected.Text); + Assert.That(firstSelected.Text, Is.EqualTo("Eggs")); } // [Test] @@ -169,7 +171,7 @@ public void ShouldThrowANoSuchElementExceptionIfNothingIsSelected() IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.AreEqual(0, elementWrapper.AllSelectedOptions.Count); + Assert.That(elementWrapper.AllSelectedOptions.Count, Is.Zero); } [Test] @@ -179,7 +181,7 @@ public void ShouldAllowOptionsToBeSelectedByVisibleText() SelectElement elementWrapper = new SelectElement(element); elementWrapper.SelectByText("select_2"); IWebElement firstSelected = elementWrapper.AllSelectedOptions[0]; - Assert.AreEqual("select_2", firstSelected.Text); + Assert.That(firstSelected.Text, Is.EqualTo("select_2")); } [Test] @@ -189,7 +191,7 @@ public void ShouldAllowOptionsToBeSelectedByPartialText() SelectElement elementWrapper = new SelectElement(element); elementWrapper.SelectByText("4", true); IWebElement firstSelected = elementWrapper.AllSelectedOptions[0]; - Assert.AreEqual("select_4", firstSelected.Text); + Assert.That(firstSelected.Text, Is.EqualTo("select_4")); } [Test] @@ -197,7 +199,9 @@ public void ShouldThrowExceptionOnSelectByTextExactMatchIfOptionDoesNotExist() { IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.SelectByText("4")); + Assert.That( + () => elementWrapper.SelectByText("4"), + Throws.TypeOf()); } [Test] @@ -206,7 +210,9 @@ public void ShouldNotAllowInvisibleOptionsToBeSelectedByVisibleText() { IWebElement element = driver.FindElement(By.Name("invisi_select")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.SelectByText("Apples")); + Assert.That( + () => elementWrapper.SelectByText("Apples"), + Throws.TypeOf()); } [Test] @@ -214,7 +220,9 @@ public void ShouldThrowExceptionOnSelectByVisibleTextIfOptionDoesNotExist() { IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.SelectByText("not there")); + Assert.That( + () => elementWrapper.SelectByText("not there"), + Throws.TypeOf()); } [Test] @@ -222,7 +230,9 @@ public void ShouldThrowExceptionOnSelectByVisibleTextIfOptionDisabled() { IWebElement element = driver.FindElement(By.Name("single_disabled")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.SelectByText("Disabled")); + Assert.That( + () => elementWrapper.SelectByText("Disabled"), + Throws.TypeOf()); } [Test] @@ -232,7 +242,7 @@ public void ShouldAllowOptionsToBeSelectedByIndex() SelectElement elementWrapper = new SelectElement(element); elementWrapper.SelectByIndex(1); IWebElement firstSelected = elementWrapper.AllSelectedOptions[0]; - Assert.AreEqual("select_2", firstSelected.Text); + Assert.That(firstSelected.Text, Is.EqualTo("select_2")); } [Test] @@ -240,7 +250,9 @@ public void ShouldThrowExceptionOnSelectByIndexIfOptionDoesNotExist() { IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.SelectByIndex(10)); + Assert.That( + () => elementWrapper.SelectByIndex(10), + Throws.TypeOf()); } [Test] @@ -248,7 +260,9 @@ public void ShouldThrowExceptionOnSelectByIndexIfOptionDisabled() { IWebElement element = driver.FindElement(By.Name("single_disabled")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.SelectByIndex(1)); + Assert.That( + () => elementWrapper.SelectByIndex(1), + Throws.InvalidOperationException); } [Test] @@ -258,7 +272,7 @@ public void ShouldAllowOptionsToBeSelectedByReturnedValue() SelectElement elementWrapper = new SelectElement(element); elementWrapper.SelectByValue("select_2"); IWebElement firstSelected = elementWrapper.AllSelectedOptions[0]; - Assert.AreEqual("select_2", firstSelected.Text); + Assert.That(firstSelected.Text, Is.EqualTo("select_2")); } [Test] @@ -266,7 +280,9 @@ public void ShouldThrowExceptionOnSelectByReturnedValueIfOptionDoesNotExist() { IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.SelectByValue("not there")); + Assert.That( + () => elementWrapper.SelectByValue("not there"), + Throws.TypeOf()); } [Test] @@ -274,7 +290,9 @@ public void ShouldThrowExceptionOnSelectByReturnedValueIfOptionDisabled() { IWebElement element = driver.FindElement(By.Name("single_disabled")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.SelectByValue("disabled")); + Assert.That( + () => elementWrapper.SelectByValue("disabled"), + Throws.InvalidOperationException); } [Test] @@ -285,7 +303,7 @@ public void ShouldAllowUserToDeselectAllWhenSelectSupportsMultipleSelections() elementWrapper.DeselectAll(); IList returnedOptions = elementWrapper.AllSelectedOptions; - Assert.AreEqual(0, returnedOptions.Count); + Assert.That(returnedOptions, Is.Empty); } [Test] @@ -293,7 +311,9 @@ public void ShouldNotAllowUserToDeselectAllWhenSelectDoesNotSupportMultipleSelec { IWebElement element = driver.FindElement(By.Name("selectomatic")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.DeselectAll()); + Assert.That( + () => elementWrapper.DeselectAll(), + Throws.InvalidOperationException); } [Test] @@ -304,7 +324,7 @@ public void ShouldAllowUserToDeselectOptionsByVisibleText() elementWrapper.DeselectByText("Eggs"); IList returnedOptions = elementWrapper.AllSelectedOptions; - Assert.AreEqual(1, returnedOptions.Count); + Assert.That(returnedOptions.Count, Is.EqualTo(1)); } [Test] @@ -313,7 +333,9 @@ public void ShouldNotAllowUserToDeselectOptionsByInvisibleText() { IWebElement element = driver.FindElement(By.Name("invisi_select")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.DeselectByText("Apples")); + Assert.That( + () => elementWrapper.DeselectByText("Apples"), + Throws.TypeOf()); } [Test] @@ -324,7 +346,7 @@ public void ShouldAllowOptionsToBeDeselectedByIndex() elementWrapper.DeselectByIndex(0); IList returnedOptions = elementWrapper.AllSelectedOptions; - Assert.AreEqual(1, returnedOptions.Count); + Assert.That(returnedOptions.Count, Is.EqualTo(1)); } [Test] @@ -335,7 +357,7 @@ public void ShouldAllowOptionsToBeDeselectedByReturnedValue() elementWrapper.DeselectByValue("eggs"); IList returnedOptions = elementWrapper.AllSelectedOptions; - Assert.AreEqual(1, returnedOptions.Count); + Assert.That(returnedOptions.Count, Is.EqualTo(1)); } [Test] @@ -343,7 +365,9 @@ public void ShouldThrowExceptionOnDeselectByReturnedValueIfOptionDoesNotExist() { IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.DeselectByValue("not there")); + Assert.That( + () => elementWrapper.DeselectByValue("not there"), + Throws.TypeOf()); } [Test] @@ -351,7 +375,9 @@ public void ShouldThrowExceptionOnDeselectByTextIfOptionDoesNotExist() { IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.DeselectByText("not there")); + Assert.That( + () => elementWrapper.DeselectByText("not there"), + Throws.TypeOf()); } [Test] @@ -359,7 +385,9 @@ public void ShouldThrowExceptionOnDeselectByIndexIfOptionDoesNotExist() { IWebElement element = driver.FindElement(By.Name("select_empty_multiple")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.DeselectByIndex(10)); + Assert.That( + () => elementWrapper.DeselectByIndex(10), + Throws.TypeOf()); } [Test] @@ -367,7 +395,9 @@ public void ShouldNotAllowUserToDeselectByTextWhenSelectDoesNotSupportMultipleSe { IWebElement element = driver.FindElement(By.Name("selectomatic")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.DeselectByText("Four")); + Assert.That( + () => elementWrapper.DeselectByText("Four"), + Throws.InvalidOperationException); } [Test] @@ -375,7 +405,9 @@ public void ShouldNotAllowUserToDeselectByValueWhenSelectDoesNotSupportMultipleS { IWebElement element = driver.FindElement(By.Name("selectomatic")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.DeselectByValue("two")); + Assert.That( + () => elementWrapper.DeselectByValue("two"), + Throws.InvalidOperationException); } [Test] @@ -383,7 +415,9 @@ public void ShouldNotAllowUserToDeselectByIndexWhenSelectDoesNotSupportMultipleS { IWebElement element = driver.FindElement(By.Name("selectomatic")); SelectElement elementWrapper = new SelectElement(element); - Assert.Throws(() => elementWrapper.DeselectByIndex(0)); + Assert.That( + () => elementWrapper.DeselectByIndex(0), + Throws.InvalidOperationException); } } } diff --git a/dotnet/test/support/UI/SelectTests.cs b/dotnet/test/support/UI/SelectTests.cs index a6ccaf476b491b..d4966e29aea6cf 100644 --- a/dotnet/test/support/UI/SelectTests.cs +++ b/dotnet/test/support/UI/SelectTests.cs @@ -41,7 +41,9 @@ public void SetUp() public void ThrowUnexpectedTagNameExceptionWhenNotSelectTag() { webElement.SetupGet(_ => _.TagName).Returns("form"); - Assert.Throws(() => new SelectElement(webElement.Object)); + Assert.That( + () => new SelectElement(webElement.Object), + Throws.TypeOf()); } [Test] @@ -50,7 +52,7 @@ public void CanCreateNewInstanceOfSelectWithNormalSelectElement() webElement.SetupGet(_ => _.TagName).Returns("select"); webElement.Setup(_ => _.GetAttribute(It.Is(x => x == "multiple"))).Returns((string)null); - Assert.IsFalse(new SelectElement(webElement.Object).IsMultiple); + Assert.That(new SelectElement(webElement.Object).IsMultiple, Is.False); } [Test] @@ -59,7 +61,7 @@ public void CanCreateNewInstanceOfSelectWithMultipleSelectElement() webElement.SetupGet(_ => _.TagName).Returns("select"); webElement.Setup(_ => _.GetAttribute(It.Is(x => x == "multiple"))).Returns("true"); - Assert.IsTrue(new SelectElement(webElement.Object).IsMultiple); + Assert.That(new SelectElement(webElement.Object).IsMultiple, Is.True); } [Test] @@ -70,7 +72,7 @@ public void CanGetListOfOptions() webElement.Setup(_ => _.GetAttribute(It.Is(x => x == "multiple"))).Returns("true"); webElement.Setup(_ => _.FindElements(It.IsAny())).Returns(new ReadOnlyCollection(options)); - Assert.AreEqual(options, new SelectElement(webElement.Object).Options); + Assert.That(new SelectElement(webElement.Object).Options, Is.EqualTo(options)); } [Test] @@ -89,7 +91,7 @@ public void CanGetSingleSelectedOption() webElement.Setup(_ => _.FindElements(It.IsAny())).Returns(new ReadOnlyCollection(options)).Verifiable(); IWebElement option = new SelectElement(webElement.Object).SelectedOption; - Assert.AreEqual(selected.Object, option); + Assert.That(option, Is.EqualTo(selected.Object)); notSelected.Verify(_ => _.Selected, Times.Once); selected.Verify(_ => _.Selected, Times.Once); webElement.Verify(); @@ -111,8 +113,8 @@ public void CanGetAllSelectedOptions() webElement.Setup(_ => _.FindElements(It.IsAny())).Returns(new ReadOnlyCollection(options)).Verifiable(); IList returnedOption = new SelectElement(webElement.Object).AllSelectedOptions; - Assert.That(returnedOption.Count == 1); - Assert.AreEqual(selected.Object, returnedOption[0]); + Assert.That(returnedOption, Has.Count.EqualTo(1)); + Assert.That(returnedOption[0], Is.EqualTo(selected.Object)); notSelected.Verify(_ => _.Selected, Times.Once); selected.Verify(_ => _.Selected, Times.Once); webElement.Verify(); @@ -412,7 +414,10 @@ public void SelectedOptionPropertyShouldThrowExceptionWhenNoOptionSelected() webElement.Setup(_ => _.FindElements(It.IsAny())).Returns(new ReadOnlyCollection(options)).Verifiable(); SelectElement element = new SelectElement(webElement.Object); - Assert.Throws(() => { IWebElement selectedOption = element.SelectedOption; }); + Assert.That( + () => element.SelectedOption, + Throws.TypeOf()); + notSelected.Verify(_ => _.Selected, Times.Once); webElement.Verify(_ => _.FindElements(It.IsAny()), Times.Once); } @@ -422,7 +427,7 @@ public void ShouldConvertAnUnquotedStringIntoOneWithQuotes() { string result = EscapeQuotes("foo"); - Assert.AreEqual("\"foo\"", result); + Assert.That(result, Is.EqualTo("\"foo\"")); } [Test] @@ -430,7 +435,7 @@ public void ShouldConvertAStringWithATickIntoOneWithQuotes() { string result = EscapeQuotes("f'oo"); - Assert.AreEqual("\"f'oo\"", result); + Assert.That(result, Is.EqualTo("\"f'oo\"")); } [Test] @@ -438,7 +443,7 @@ public void ShouldConvertAStringWithAQuotIntoOneWithTicks() { string result = EscapeQuotes("f\"oo"); - Assert.AreEqual("'f\"oo'", result); + Assert.That(result, Is.EqualTo("'f\"oo'")); } [Test] @@ -446,7 +451,7 @@ public void ShouldProvideConcatenatedStringsWhenStringToEscapeContainsTicksAndQu { string result = EscapeQuotes("f\"o'o"); - Assert.AreEqual("concat(\"f\", '\"', \"o'o\")", result); + Assert.That(result, Is.EqualTo("concat(\"f\", '\"', \"o'o\")")); } /** @@ -458,7 +463,7 @@ public void ShouldProvideConcatenatedStringsWhenStringEndsWithQuote() { string result = EscapeQuotes("Bar \"Rock'n'Roll\""); - Assert.AreEqual("concat(\"Bar \", '\"', \"Rock'n'Roll\", '\"')", result); + Assert.That(result, Is.EqualTo("concat(\"Bar \", '\"', \"Rock'n'Roll\", '\"')")); } private string EscapeQuotes(string toEscape) diff --git a/dotnet/test/support/UI/SlowLoadableComponentTest.cs b/dotnet/test/support/UI/SlowLoadableComponentTest.cs index 61543e8dd1c435..bc198f7e8cccbb 100644 --- a/dotnet/test/support/UI/SlowLoadableComponentTest.cs +++ b/dotnet/test/support/UI/SlowLoadableComponentTest.cs @@ -45,7 +45,7 @@ public void TestShouldCauseTheLoadMethodToBeCalledIfTheComponentIsNotAlreadyLoad int numberOfTimesThroughLoop = 1; SlowLoading slowLoading = new SlowLoading(TimeSpan.FromSeconds(1), new SystemClock(), numberOfTimesThroughLoop).Load(); - Assert.AreEqual(numberOfTimesThroughLoop, slowLoading.GetLoopCount()); + Assert.That(slowLoading.GetLoopCount(), Is.EqualTo(numberOfTimesThroughLoop)); } [Test] @@ -65,15 +65,10 @@ public void TestTheLoadMethodShouldOnlyBeCalledOnceIfTheComponentTakesALongTimeT public void TestShouldThrowAnErrorIfCallingLoadDoesNotCauseTheComponentToLoadBeforeTimeout() { FakeClock clock = new FakeClock(); - try - { - new BasicSlowLoader(TimeSpan.FromSeconds(2), clock).Load(); - Assert.Fail(); - } - catch (WebDriverTimeoutException) - { - // We expect to time out - } + + Assert.That( + () => new BasicSlowLoader(TimeSpan.FromSeconds(2), clock).Load(), + Throws.InstanceOf()); } [Test] @@ -81,15 +76,9 @@ public void TestShouldCancelLoadingIfAnErrorIsDetected() { HasError error = new HasError(); - try - { - error.Load(); - Assert.Fail(); - } - catch (CustomException) - { - // This is expected - } + Assert.That( + () => error.Load(), + Throws.InstanceOf()); } diff --git a/dotnet/test/support/UI/WebDriverWaitTest.cs b/dotnet/test/support/UI/WebDriverWaitTest.cs index cd6995b48130c1..acacbbfd2ebd2c 100644 --- a/dotnet/test/support/UI/WebDriverWaitTest.cs +++ b/dotnet/test/support/UI/WebDriverWaitTest.cs @@ -47,7 +47,7 @@ public void CanGetListOfOptions() var condition = GetCondition(() => null, () => SOME_STRING); var wait = new WebDriverWait(new TickingClock(), mockDriver.Object, FIVE_SECONDS, ZERO_SECONDS); - Assert.AreEqual(SOME_STRING, wait.Until(condition)); + Assert.That(wait.Until(condition), Is.EqualTo(SOME_STRING)); } [Test] @@ -57,7 +57,7 @@ public void WaitsForBaseObjectType() var condition = GetCondition(() => null, () => new object()); var wait = new WebDriverWait(new TickingClock(), mockDriver.Object, FIVE_SECONDS, ZERO_SECONDS); - Assert.IsNotNull(wait.Until(condition)); + Assert.That(wait.Until(condition), Is.Not.Null); } [Test] @@ -67,7 +67,7 @@ public void WaitsUntilABooleanResultIsTrue() var condition = GetCondition(() => false, () => true); var wait = new WebDriverWait(new TickingClock(), mockDriver.Object, FIVE_SECONDS, ZERO_SECONDS); - Assert.True(wait.Until(condition)); + Assert.That(wait.Until(condition), Is.True); } [Test] @@ -79,8 +79,8 @@ public void ThrowsForInvalidTypes() var wait = new WebDriverWait(new TickingClock(), mockDriver.Object, FIVE_SECONDS, ZERO_SECONDS); - Assert.Throws(typeof(ArgumentException), () => wait.Until(nullableBooleanCondition)); - Assert.Throws(typeof(ArgumentException), () => wait.Until(intCondition)); + Assert.That(() => wait.Until(nullableBooleanCondition), Throws.ArgumentException); + Assert.That(() => wait.Until(intCondition), Throws.ArgumentException); } [Test] @@ -89,7 +89,9 @@ public void ThrowsAnExceptionIfTheTimerRunsOut() var mockDriver = new Mock(); var wait = new WebDriverWait(GetClock(), mockDriver.Object, ONE_SECONDS, ZERO_SECONDS); - Assert.Throws(typeof(WebDriverTimeoutException), () => wait.Until(driver => false)); + Assert.That( + () => wait.Until(driver => false), + Throws.TypeOf()); } [Test] @@ -101,7 +103,7 @@ public void SilentlyCapturesNoSuchElementExceptions() var wait = new WebDriverWait(new TickingClock(), mockDriver.Object, FIVE_SECONDS, ZERO_SECONDS); - Assert.AreEqual(element.Object, wait.Until(condition)); + Assert.That(wait.Until(condition), Is.EqualTo(element.Object)); } [Test] @@ -114,7 +116,7 @@ public void PassesWebDriverFromConstructorToExpectation() var wait = new WebDriverWait(new TickingClock(), mockDriver.Object, FIVE_SECONDS, ZERO_SECONDS); - Assert.AreEqual(SOME_STRING, wait.Until(condition)); + Assert.That(wait.Until(condition), Is.EqualTo(SOME_STRING)); mockDriver.Verify(_ => _.CurrentWindowHandle, Times.Once); } @@ -127,15 +129,9 @@ public void ChainsNoSuchElementExceptionWhenTimingOut() var wait = new WebDriverWait(GetClock(), mockDriver.Object, ONE_SECONDS, ZERO_SECONDS); - try - { - wait.Until(condition); - Assert.Fail("Expected WebDriverTimeoutException to be thrown"); - } - catch (WebDriverTimeoutException e) - { - Assert.IsInstanceOf(typeof(NoSuchElementException), e.InnerException); - } + Assert.That( + () => wait.Until(condition), + Throws.InstanceOf().With.InnerException.InstanceOf()); } private Func GetCondition(Func first, Func second) diff --git a/java/private/export.bzl b/java/private/export.bzl index 1d3e9b0498b464..41a41801a7385a 100644 --- a/java/private/export.bzl +++ b/java/private/export.bzl @@ -1,3 +1,4 @@ +load("@contrib_rules_jvm//java:defs.bzl", "java_library") load( "@rules_jvm_external//:defs.bzl", "javadoc", @@ -24,7 +25,7 @@ def java_export( lib_name = "%s-lib" % name # Construct the java_library we'll export from here. - native.java_library( + java_library( name = lib_name, tags = tags, exports = exports, diff --git a/java/spotbugs-excludes.xml b/java/spotbugs-excludes.xml index 2ae98dc7e6050b..a1104b7f597b6f 100644 --- a/java/spotbugs-excludes.xml +++ b/java/spotbugs-excludes.xml @@ -160,6 +160,11 @@ + + + + + @@ -237,7 +242,7 @@ - + diff --git a/java/src/org/openqa/selenium/chromium/ChromiumDriver.java b/java/src/org/openqa/selenium/chromium/ChromiumDriver.java index f5518714d436fd..b5f6dacb3a7bb4 100644 --- a/java/src/org/openqa/selenium/chromium/ChromiumDriver.java +++ b/java/src/org/openqa/selenium/chromium/ChromiumDriver.java @@ -147,7 +147,7 @@ protected ChromiumDriver( try { try { - cdpUri = client.flatMap(httpClient -> CdpEndpointFinder.getCdpEndPoint(httpClient)); + cdpUri = client.flatMap(CdpEndpointFinder::getCdpEndPoint); } catch (Exception e) { try { client.ifPresent(HttpClient::close); diff --git a/java/src/org/openqa/selenium/devtools/SeleniumCdpConnection.java b/java/src/org/openqa/selenium/devtools/SeleniumCdpConnection.java index 33a8245ab14dc0..12e26cdce10613 100644 --- a/java/src/org/openqa/selenium/devtools/SeleniumCdpConnection.java +++ b/java/src/org/openqa/selenium/devtools/SeleniumCdpConnection.java @@ -77,7 +77,7 @@ public static Optional create( client = reportedUri.map(uri -> CdpEndpointFinder.getHttpClient(clientFactory, uri)); try { - cdpUri = client.flatMap(httpClient -> CdpEndpointFinder.getCdpEndPoint(httpClient)); + cdpUri = client.flatMap(CdpEndpointFinder::getCdpEndPoint); } catch (Exception e) { try { client.ifPresent(HttpClient::close); @@ -87,7 +87,7 @@ public static Optional create( throw e; } - if (!cdpUri.isPresent()) { + if (cdpUri.isEmpty()) { try { client.ifPresent(HttpClient::close); } catch (Exception e) { diff --git a/java/src/org/openqa/selenium/firefox/FirefoxDriver.java b/java/src/org/openqa/selenium/firefox/FirefoxDriver.java index a6beac5461e855..01ec605d2fa08c 100644 --- a/java/src/org/openqa/selenium/firefox/FirefoxDriver.java +++ b/java/src/org/openqa/selenium/firefox/FirefoxDriver.java @@ -176,7 +176,7 @@ private FirefoxDriver( Optional cdpUri; try { - cdpUri = client.flatMap(httpClient -> CdpEndpointFinder.getCdpEndPoint(httpClient)); + cdpUri = client.flatMap(CdpEndpointFinder::getCdpEndPoint); } catch (Exception e) { try { client.ifPresent(HttpClient::close); diff --git a/java/src/org/openqa/selenium/internal/Require.java b/java/src/org/openqa/selenium/internal/Require.java index 476966a597bb42..4ec171e5a305e3 100644 --- a/java/src/org/openqa/selenium/internal/Require.java +++ b/java/src/org/openqa/selenium/internal/Require.java @@ -129,11 +129,8 @@ public static int positive(String argName, Integer number, String message) { throw new IllegalArgumentException(String.format(MUST_BE_SET, argName)); } if (number <= 0) { - if (message == null) { - throw new IllegalArgumentException(String.format(MUST_BE_POSITIVE, argName)); - } else { - throw new IllegalArgumentException(message); - } + throw new IllegalArgumentException( + Objects.requireNonNullElseGet(message, () -> String.format(MUST_BE_POSITIVE, argName))); } return number; } @@ -143,11 +140,8 @@ public static double positive(String argName, Double number, String message) { throw new IllegalArgumentException(String.format(MUST_BE_SET, argName)); } if (number <= 0) { - if (message == null) { - throw new IllegalArgumentException(String.format(MUST_BE_POSITIVE, argName)); - } else { - throw new IllegalArgumentException(message); - } + throw new IllegalArgumentException( + Objects.requireNonNullElseGet(message, () -> String.format(MUST_BE_POSITIVE, argName))); } return number; } diff --git a/java/src/org/openqa/selenium/remote/RemoteWebDriver.java b/java/src/org/openqa/selenium/remote/RemoteWebDriver.java index 737be829226d71..e0443aea24d89c 100644 --- a/java/src/org/openqa/selenium/remote/RemoteWebDriver.java +++ b/java/src/org/openqa/selenium/remote/RemoteWebDriver.java @@ -1247,7 +1247,7 @@ public void addCredential(Credential credential) { Stream.concat( credential.toMap().entrySet().stream(), Stream.of(Map.entry("authenticatorId", id))) - .collect(Collectors.toUnmodifiableMap((e) -> e.getKey(), (e) -> e.getValue()))); + .collect(Collectors.toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue))); } @Override diff --git a/java/src/org/openqa/selenium/remote/service/DriverService.java b/java/src/org/openqa/selenium/remote/service/DriverService.java index 0e0c04f693d9ca..87d7e7cb75d61b 100644 --- a/java/src/org/openqa/selenium/remote/service/DriverService.java +++ b/java/src/org/openqa/selenium/remote/service/DriverService.java @@ -242,8 +242,10 @@ public void start() throws IOException { processFinished.cancel(true); break; case PROCESS_DIED: + int exitValue = process.exitValue(); process = null; - throw new WebDriverException("Driver server process died prematurely."); + throw new WebDriverException( + "Driver server process died prematurely, exit value: " + exitValue); case PROCESS_IS_ACTIVE: process.shutdown(); throw new WebDriverException("Timed out waiting for driver server to bind the port."); diff --git a/java/test/org/openqa/selenium/NoSuchShadowRootTest.java b/java/test/org/openqa/selenium/NoSuchShadowRootTest.java index f945aa6d4561ec..78e776366d5120 100644 --- a/java/test/org/openqa/selenium/NoSuchShadowRootTest.java +++ b/java/test/org/openqa/selenium/NoSuchShadowRootTest.java @@ -34,6 +34,6 @@ public void getNoSuchShadowRoot() { driver.get(pages.shadowRootPage); WebElement nonExistentShadowRootElement = driver.findElement(By.id("noShadowRoot")); assertThatExceptionOfType(NoSuchShadowRootException.class) - .isThrownBy(() -> nonExistentShadowRootElement.getShadowRoot()); + .isThrownBy(nonExistentShadowRootElement::getShadowRoot); } } diff --git a/java/test/org/openqa/selenium/grid/node/relay/RelayOptionsTest.java b/java/test/org/openqa/selenium/grid/node/relay/RelayOptionsTest.java index 8b02b1e595f7c5..e376c13e41fc4f 100644 --- a/java/test/org/openqa/selenium/grid/node/relay/RelayOptionsTest.java +++ b/java/test/org/openqa/selenium/grid/node/relay/RelayOptionsTest.java @@ -137,10 +137,7 @@ void protocolVersionThrowsConfigException() { Config config = new TomlConfig(new StringReader(String.join("\n", rawConfig))); RelayOptions relayOptions = new RelayOptions(config); assertThatExceptionOfType(ConfigException.class) - .isThrownBy( - () -> { - relayOptions.getServiceProtocolVersion(); - }) + .isThrownBy(relayOptions::getServiceProtocolVersion) .withMessageContaining("Unsupported protocol version provided: HTTP/0.9"); } diff --git a/java/test/org/openqa/selenium/grid/server/BaseServerOptionsTest.java b/java/test/org/openqa/selenium/grid/server/BaseServerOptionsTest.java index 7aea4479e93000..c92225edfe7a11 100644 --- a/java/test/org/openqa/selenium/grid/server/BaseServerOptionsTest.java +++ b/java/test/org/openqa/selenium/grid/server/BaseServerOptionsTest.java @@ -52,12 +52,7 @@ void externalUriFailsForNonUriStrings() { BaseServerOptions options = new BaseServerOptions(new MapConfig(Map.of("server", Map.of("external-url", "not a URL")))); - Exception exception = - assertThrows( - RuntimeException.class, - () -> { - options.getExternalUri(); - }); + Exception exception = assertThrows(RuntimeException.class, options::getExternalUri); assertThat(exception.getMessage()) .as("External URI must be parseable as URI.") diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 47158c4ab59ed3..49fae4aecd61d6 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -231,7 +231,6 @@ pkg_files( "CHANGES", "README.rst", "pyproject.toml", - "setup.py", ":license", ":selenium-pkg", ":selenium-pkginfo", diff --git a/py/docs/source/index.rst b/py/docs/source/index.rst index 54123b5d600ca8..9f8c9ed892d56e 100755 --- a/py/docs/source/index.rst +++ b/py/docs/source/index.rst @@ -35,7 +35,7 @@ If you have `pip `_ on your system, you can simply install Alternately, you can download the source distribution from `PyPI `, unarchive it, and run:: - python setup.py install + python -m pip install . Note: You may want to consider using `virtualenv `_ to create isolated Python environments. diff --git a/py/generate.py b/py/generate.py index 026e80673b40f6..07630844231683 100644 --- a/py/generate.py +++ b/py/generate.py @@ -36,7 +36,7 @@ from pathlib import Path import re from textwrap import dedent, indent as tw_indent -import typing +from typing import Optional , cast, List, Union, Iterator import inflection # type: ignore @@ -206,11 +206,11 @@ def from_json(cls, type): class CdpProperty: ''' A property belonging to a non-primitive CDP type. ''' name: str - description: typing.Optional[str] - type: typing.Optional[str] - ref: typing.Optional[str] - enum: typing.List[str] - items: typing.Optional[CdpItems] + description: Optional[str] + type: Optional[str] + ref: Optional[str] + enum: List[str] + items: Optional[CdpItems] optional: bool experimental: bool deprecated: bool @@ -236,7 +236,7 @@ def py_annotation(self): ann = py_ref else: ann = CdpPrimitiveType.get_annotation( - typing.cast(str, self.type)) + cast(str, self.type)) if self.optional: ann = f'typing.Optional[{ann}]' return ann @@ -316,11 +316,11 @@ def generate_from_json(self, dict_): class CdpType: ''' A top-level CDP type. ''' id: str - description: typing.Optional[str] + description: Optional[str] type: str - items: typing.Optional[CdpItems] - enum: typing.List[str] - properties: typing.List[CdpProperty] + items: Optional[CdpItems] + enum: List[str] + properties: List[CdpProperty] @classmethod def from_json(cls, type_): @@ -500,7 +500,7 @@ def generate_code(self): py_type = f"{ref_to_python(self.ref)}" else: py_type = CdpPrimitiveType.get_annotation( - typing.cast(str, self.type)) + cast(str, self.type)) if self.optional: py_type = f'typing.Optional[{py_type}]' code = f"{self.py_name}: {py_type}" @@ -585,8 +585,8 @@ class CdpCommand: description: str experimental: bool deprecated: bool - parameters: typing.List[CdpParameter] - returns: typing.List[CdpReturn] + parameters: List[CdpParameter] + returns: List[CdpReturn] domain: str @property @@ -605,8 +605,8 @@ def from_json(cls, command, domain) -> 'CdpCommand': command.get('description'), command.get('experimental', False), command.get('deprecated', False), - [typing.cast(CdpParameter, CdpParameter.from_json(p)) for p in parameters], - [typing.cast(CdpReturn, CdpReturn.from_json(r)) for r in returns], + [cast(CdpParameter, CdpParameter.from_json(p)) for p in parameters], + [cast(CdpReturn, CdpReturn.from_json(r)) for r in returns], domain, ) @@ -712,10 +712,10 @@ def get_refs(self): class CdpEvent: ''' A CDP event object. ''' name: str - description: typing.Optional[str] + description: Optional[str] deprecated: bool experimental: bool - parameters: typing.List[CdpParameter] + parameters: List[CdpParameter] domain: str @property @@ -731,7 +731,7 @@ def from_json(cls, json: dict, domain: str): json.get('description'), json.get('deprecated', False), json.get('experimental', False), - [typing.cast(CdpParameter, CdpParameter.from_json(p)) + [cast(CdpParameter, CdpParameter.from_json(p)) for p in json.get('parameters', [])], domain ) @@ -786,12 +786,12 @@ def get_refs(self): class CdpDomain: ''' A CDP domain contains metadata, types, commands, and events. ''' domain: str - description: typing.Optional[str] + description: Optional[str] experimental: bool - dependencies: typing.List[str] - types: typing.List[CdpType] - commands: typing.List[CdpCommand] - events: typing.List[CdpEvent] + dependencies: List[str] + types: List[CdpType] + commands: List[CdpCommand] + events: List[CdpEvent] @property def module(self): @@ -826,8 +826,8 @@ def generate_code(self): code += import_code code += '\n\n' code += '\n' - item_iter_t = typing.Union[CdpEvent, CdpCommand, CdpType] - item_iter: typing.Iterator[item_iter_t] = itertools.chain( + item_iter_t = Union[CdpEvent, CdpCommand, CdpType] + item_iter: Iterator[item_iter_t] = itertools.chain( iter(self.types), iter(self.commands), iter(self.events), diff --git a/py/pyproject.toml b/py/pyproject.toml index e99a03cd5d7a25..a30b604e49be03 100644 --- a/py/pyproject.toml +++ b/py/pyproject.toml @@ -44,6 +44,9 @@ exclude = ["test*"] namespaces = false # include-package-data is `true` by default in pyproject.toml +[[tool.setuptools-rust.bins]] +target = "selenium.webdriver.common.selenium-manager" + [project.urls] Repository = "https://github.com/SeleniumHQ/selenium/" BugTracker = "https://github.com/SeleniumHQ/selenium/issues" diff --git a/py/selenium/types.py b/py/selenium/types.py index a776904b4a4bd0..f055ea1452fffc 100644 --- a/py/selenium/types.py +++ b/py/selenium/types.py @@ -16,10 +16,14 @@ # under the License. """Selenium type definitions.""" -import typing +from typing import IO +from typing import Any +from typing import Iterable +from typing import Type +from typing import Union -AnyKey = typing.Union[str, int, float] -WaitExcTypes = typing.Iterable[typing.Type[Exception]] +AnyKey = Union[str, int, float] +WaitExcTypes = Iterable[Type[Exception]] # Service Types -SubprocessStdAlias = typing.Union[int, str, typing.IO[typing.Any]] +SubprocessStdAlias = Union[int, str, IO[Any]] diff --git a/py/selenium/webdriver/chrome/service.py b/py/selenium/webdriver/chrome/service.py index e151f768d56186..40f94841b23049 100644 --- a/py/selenium/webdriver/chrome/service.py +++ b/py/selenium/webdriver/chrome/service.py @@ -14,7 +14,11 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing + + +from typing import List +from typing import Mapping +from typing import Optional from selenium.types import SubprocessStdAlias from selenium.webdriver.chromium import service @@ -35,9 +39,9 @@ def __init__( self, executable_path=None, port: int = 0, - service_args: typing.Optional[typing.List[str]] = None, + service_args: Optional[List[str]] = None, log_output: SubprocessStdAlias = None, - env: typing.Optional[typing.Mapping[str, str]] = None, + env: Optional[Mapping[str, str]] = None, **kwargs, ) -> None: super().__init__( diff --git a/py/selenium/webdriver/chromium/service.py b/py/selenium/webdriver/chromium/service.py index aebedec40f5092..f6c71e3ba719af 100644 --- a/py/selenium/webdriver/chromium/service.py +++ b/py/selenium/webdriver/chromium/service.py @@ -14,8 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing from io import IOBase +from typing import List +from typing import Mapping +from typing import Optional from selenium.types import SubprocessStdAlias from selenium.webdriver.common import service @@ -36,9 +38,9 @@ def __init__( self, executable_path: str = None, port: int = 0, - service_args: typing.Optional[typing.List[str]] = None, + service_args: Optional[List[str]] = None, log_output: SubprocessStdAlias = None, - env: typing.Optional[typing.Mapping[str, str]] = None, + env: Optional[Mapping[str, str]] = None, driver_path_env_key: str = None, **kwargs, ) -> None: @@ -47,7 +49,7 @@ def __init__( if isinstance(log_output, str): self.service_args.append(f"--log-path={log_output}") - self.log_output: typing.Optional[IOBase] = None + self.log_output: Optional[IOBase] = None elif isinstance(log_output, IOBase): self.log_output = log_output else: @@ -62,5 +64,5 @@ def __init__( **kwargs, ) - def command_line_args(self) -> typing.List[str]: + def command_line_args(self) -> List[str]: return [f"--port={self.port}"] + self.service_args diff --git a/py/selenium/webdriver/chromium/webdriver.py b/py/selenium/webdriver/chromium/webdriver.py index af563f41672a8f..93124c68a0d0cc 100644 --- a/py/selenium/webdriver/chromium/webdriver.py +++ b/py/selenium/webdriver/chromium/webdriver.py @@ -138,7 +138,7 @@ def execute_cdp_cmd(self, cmd: str, cmd_args: dict): For example to getResponseBody: {'base64Encoded': False, 'body': 'response body string'} """ - return self.execute("executeCdpCommand", {"cmd": cmd, "params": cmd_args})["value"] + return super().execute_cdp_cmd(cmd, cmd_args) def get_sinks(self) -> list: """:Returns: A list of sinks available for Cast.""" diff --git a/py/selenium/webdriver/common/actions/pointer_input.py b/py/selenium/webdriver/common/actions/pointer_input.py index ce5e1c53c91f9f..0d7e7a87188c1c 100644 --- a/py/selenium/webdriver/common/actions/pointer_input.py +++ b/py/selenium/webdriver/common/actions/pointer_input.py @@ -14,7 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing + +from typing import Any +from typing import Dict +from typing import Optional from typing import Union from selenium.common.exceptions import InvalidArgumentException @@ -41,7 +44,7 @@ def create_pointer_move( duration=DEFAULT_MOVE_DURATION, x: float = 0, y: float = 0, - origin: typing.Optional[WebElement] = None, + origin: Optional[WebElement] = None, **kwargs, ): action = {"type": "pointerMove", "duration": duration, "x": x, "y": y, **kwargs} @@ -67,7 +70,7 @@ def create_pause(self, pause_duration: Union[int, float] = 0) -> None: def encode(self): return {"type": self.type, "parameters": {"pointerType": self.kind}, "id": self.name, "actions": self.actions} - def _convert_keys(self, actions: typing.Dict[str, typing.Any]): + def _convert_keys(self, actions: Dict[str, Any]): out = {} for k, v in actions.items(): if v is None: diff --git a/py/selenium/webdriver/common/bidi/cdp.py b/py/selenium/webdriver/common/bidi/cdp.py index c9ed47825e4da4..2d40ed9ddc66e1 100644 --- a/py/selenium/webdriver/common/bidi/cdp.py +++ b/py/selenium/webdriver/common/bidi/cdp.py @@ -30,18 +30,23 @@ import json import logging import pathlib -import typing from collections import defaultdict from contextlib import asynccontextmanager from contextlib import contextmanager from dataclasses import dataclass +from typing import Any +from typing import AsyncGenerator +from typing import AsyncIterator +from typing import Generator +from typing import Type +from typing import TypeVar import trio from trio_websocket import ConnectionClosed as WsConnectionClosed from trio_websocket import connect_websocket_url logger = logging.getLogger("trio_cdp") -T = typing.TypeVar("T") +T = TypeVar("T") MAX_WS_MESSAGE_SIZE = 2**24 devtools = None @@ -184,7 +189,7 @@ class CmEventProxy: value set that contains the returned event. """ - value: typing.Any = None + value: Any = None class CdpBase: @@ -197,7 +202,7 @@ def __init__(self, ws, session_id, target_id): self.inflight_cmd = {} self.inflight_result = {} - async def execute(self, cmd: typing.Generator[dict, T, typing.Any]) -> T: + async def execute(self, cmd: Generator[dict, T, Any]) -> T: """Execute a command on the server and wait for the result. :param cmd: any CDP command @@ -236,7 +241,7 @@ def listen(self, *event_types, buffer_size=10): return receiver @asynccontextmanager - async def wait_for(self, event_type: typing.Type[T], buffer_size=10) -> typing.AsyncGenerator[CmEventProxy, None]: + async def wait_for(self, event_type: Type[T], buffer_size=10) -> AsyncGenerator[CmEventProxy, None]: """Wait for an event of the given type and return it. This is an async context manager, so you should open it inside @@ -406,7 +411,7 @@ async def aclose(self): await self.ws.aclose() @asynccontextmanager - async def open_session(self, target_id) -> typing.AsyncIterator[CdpSession]: + async def open_session(self, target_id) -> AsyncIterator[CdpSession]: """This context manager opens a session and enables the "simple" style of calling CDP APIs. @@ -468,7 +473,7 @@ async def _reader_task(self): @asynccontextmanager -async def open_cdp(url) -> typing.AsyncIterator[CdpConnection]: +async def open_cdp(url) -> AsyncIterator[CdpConnection]: """This async context manager opens a connection to the browser specified by ``url`` before entering the block, then closes the connection when the block exits. diff --git a/py/selenium/webdriver/common/bidi/script.py b/py/selenium/webdriver/common/bidi/script.py index 6819a5cf634363..1dc8d101d670e9 100644 --- a/py/selenium/webdriver/common/bidi/script.py +++ b/py/selenium/webdriver/common/bidi/script.py @@ -15,8 +15,8 @@ # specific language governing permissions and limitations # under the License. -import typing from dataclasses import dataclass +from typing import List from .session import session_subscribe from .session import session_unsubscribe @@ -76,7 +76,7 @@ class ConsoleLogEntry: text: str timestamp: str method: str - args: typing.List[dict] + args: List[dict] type_: str @classmethod diff --git a/py/selenium/webdriver/common/fedcm/account.py b/py/selenium/webdriver/common/fedcm/account.py index 6b8c20b12c7817..7258ea677426b3 100644 --- a/py/selenium/webdriver/common/fedcm/account.py +++ b/py/selenium/webdriver/common/fedcm/account.py @@ -24,6 +24,17 @@ class LoginState(Enum): SIGN_UP = "SignUp" +class _AccountDescriptor: + def __init__(self, name): + self.name = name + + def __get__(self, obj, cls) -> Optional[str]: + return obj._account_data.get(self.name) + + def __set__(self, obj, value) -> None: + raise AttributeError("Cannot set readonly attribute") + + class Account: """Represents an account displayed in a FedCM account list. @@ -31,41 +42,15 @@ class Account: https://w3c-fedid.github.io/FedCM/#webdriver-accountlist """ + account_id = _AccountDescriptor("accountId") + email = _AccountDescriptor("email") + name = _AccountDescriptor("name") + given_name = _AccountDescriptor("givenName") + picture_url = _AccountDescriptor("pictureUrl") + idp_config_url = _AccountDescriptor("idpConfigUrl") + terms_of_service_url = _AccountDescriptor("termsOfServiceUrl") + privacy_policy_url = _AccountDescriptor("privacyPolicyUrl") + login_state = _AccountDescriptor("loginState") + def __init__(self, account_data): self._account_data = account_data - - @property - def account_id(self) -> Optional[str]: - return self._account_data.get("accountId") - - @property - def email(self) -> Optional[str]: - return self._account_data.get("email") - - @property - def name(self) -> Optional[str]: - return self._account_data.get("name") - - @property - def given_name(self) -> Optional[str]: - return self._account_data.get("givenName") - - @property - def picture_url(self) -> Optional[str]: - return self._account_data.get("pictureUrl") - - @property - def idp_config_url(self) -> Optional[str]: - return self._account_data.get("idpConfigUrl") - - @property - def terms_of_service_url(self) -> Optional[str]: - return self._account_data.get("termsOfServiceUrl") - - @property - def privacy_policy_url(self) -> Optional[str]: - return self._account_data.get("privacyPolicyUrl") - - @property - def login_state(self) -> Optional[str]: - return self._account_data.get("loginState") diff --git a/py/selenium/webdriver/common/options.py b/py/selenium/webdriver/common/options.py index b31fcc348ce186..9d838a09c0fc20 100644 --- a/py/selenium/webdriver/common/options.py +++ b/py/selenium/webdriver/common/options.py @@ -14,11 +14,12 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing + import warnings from abc import ABCMeta from abc import abstractmethod from enum import Enum +from typing import Optional from selenium.common.exceptions import InvalidArgumentException from selenium.webdriver.common.proxy import Proxy @@ -457,9 +458,9 @@ def set_capability(self, name, value) -> None: def enable_mobile( self, - android_package: typing.Optional[str] = None, - android_activity: typing.Optional[str] = None, - device_serial: typing.Optional[str] = None, + android_package: Optional[str] = None, + android_activity: Optional[str] = None, + device_serial: Optional[str] = None, ) -> None: """Enables mobile browser use for browsers that support it. diff --git a/py/selenium/webdriver/common/service.py b/py/selenium/webdriver/common/service.py index 3afbced1a3e88b..7d64d1826bcd6e 100644 --- a/py/selenium/webdriver/common/service.py +++ b/py/selenium/webdriver/common/service.py @@ -18,14 +18,18 @@ import logging import os import subprocess -import typing from abc import ABC from abc import abstractmethod from io import IOBase from platform import system from subprocess import PIPE from time import sleep +from typing import IO +from typing import Any +from typing import List +from typing import Mapping from typing import Optional +from typing import Union from typing import cast from urllib import request from urllib.error import URLError @@ -53,16 +57,16 @@ def __init__( executable_path: str = None, port: int = 0, log_output: SubprocessStdAlias = None, - env: typing.Optional[typing.Mapping[typing.Any, typing.Any]] = None, + env: Optional[Mapping[Any, Any]] = None, driver_path_env_key: str = None, **kwargs, ) -> None: if isinstance(log_output, str): self.log_output = cast(IOBase, open(log_output, "a+", encoding="utf-8")) elif log_output == subprocess.STDOUT: - self.log_output = cast(typing.Optional[typing.Union[int, IOBase]], None) + self.log_output = cast(Optional[Union[int, IOBase]], None) elif log_output is None or log_output == subprocess.DEVNULL: - self.log_output = cast(typing.Optional[typing.Union[int, IOBase]], subprocess.DEVNULL) + self.log_output = cast(Optional[Union[int, IOBase]], subprocess.DEVNULL) else: self.log_output = log_output @@ -80,7 +84,7 @@ def service_url(self) -> str: return f"http://{utils.join_host_port('localhost', self.port)}" @abstractmethod - def command_line_args(self) -> typing.List[str]: + def command_line_args(self) -> List[str]: """A List of program arguments (excluding the executable).""" raise NotImplementedError("This method needs to be implemented in a sub class") @@ -215,8 +219,8 @@ def _start_process(self, path: str) -> None: cmd, env=self.env, close_fds=close_file_descriptors, - stdout=cast(typing.Optional[typing.Union[int, typing.IO[typing.Any]]], self.log_output), - stderr=cast(typing.Optional[typing.Union[int, typing.IO[typing.Any]]], self.log_output), + stdout=cast(Optional[Union[int, IO[Any]]], self.log_output), + stderr=cast(Optional[Union[int, IO[Any]]], self.log_output), stdin=PIPE, creationflags=self.creation_flags, startupinfo=start_info, diff --git a/py/selenium/webdriver/common/virtual_authenticator.py b/py/selenium/webdriver/common/virtual_authenticator.py index cfc467307f923b..6e1deb684c898b 100644 --- a/py/selenium/webdriver/common/virtual_authenticator.py +++ b/py/selenium/webdriver/common/virtual_authenticator.py @@ -16,10 +16,13 @@ # under the License. import functools -import typing from base64 import urlsafe_b64decode from base64 import urlsafe_b64encode from enum import Enum +from typing import Any +from typing import Dict +from typing import Optional +from typing import Union class Protocol(str, Enum): @@ -65,7 +68,7 @@ def __init__( self.is_user_consenting: bool = is_user_consenting self.is_user_verified: bool = is_user_verified - def to_dict(self) -> typing.Dict[str, typing.Union[str, bool]]: + def to_dict(self) -> Dict[str, Union[str, bool]]: return { "protocol": self.protocol, "transport": self.transport, @@ -82,7 +85,7 @@ def __init__( credential_id: bytes, is_resident_credential: bool, rp_id: str, - user_handle: typing.Optional[bytes], + user_handle: Optional[bytes], private_key: bytes, sign_count: int, ): @@ -117,7 +120,7 @@ def rp_id(self) -> str: return self._rp_id @property - def user_handle(self) -> typing.Optional[str]: + def user_handle(self) -> Optional[str]: if self._user_handle: return urlsafe_b64encode(self._user_handle).decode() return None @@ -147,7 +150,7 @@ def create_non_resident_credential(cls, id: bytes, rp_id: str, private_key: byte @classmethod def create_resident_credential( - cls, id: bytes, rp_id: str, user_handle: typing.Optional[bytes], private_key: bytes, sign_count: int + cls, id: bytes, rp_id: str, user_handle: Optional[bytes], private_key: bytes, sign_count: int ) -> "Credential": """Creates a resident (i.e. stateful) credential. @@ -163,7 +166,7 @@ def create_resident_credential( """ return cls(id, True, rp_id, user_handle, private_key, sign_count) - def to_dict(self) -> typing.Dict[str, typing.Any]: + def to_dict(self) -> Dict[str, Any]: credential_data = { "credentialId": self.id, "isResidentCredential": self._is_resident_credential, @@ -178,7 +181,7 @@ def to_dict(self) -> typing.Dict[str, typing.Any]: return credential_data @classmethod - def from_dict(cls, data: typing.Dict[str, typing.Any]) -> "Credential": + def from_dict(cls, data: Dict[str, Any]) -> "Credential": _id = urlsafe_b64decode(f"{data['credentialId']}==") is_resident_credential = bool(data["isResidentCredential"]) rp_id = data.get("rpId", None) diff --git a/py/selenium/webdriver/edge/service.py b/py/selenium/webdriver/edge/service.py index b2c7f02faf4f75..ea49d8c5ca3a07 100644 --- a/py/selenium/webdriver/edge/service.py +++ b/py/selenium/webdriver/edge/service.py @@ -14,7 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing + +from typing import List +from typing import Mapping +from typing import Optional from selenium.types import SubprocessStdAlias from selenium.webdriver.chromium import service @@ -36,8 +39,8 @@ def __init__( executable_path: str = None, port: int = 0, log_output: SubprocessStdAlias = None, - service_args: typing.Optional[typing.List[str]] = None, - env: typing.Optional[typing.Mapping[str, str]] = None, + service_args: Optional[List[str]] = None, + env: Optional[Mapping[str, str]] = None, driver_path_env_key: str = None, **kwargs, ) -> None: diff --git a/py/selenium/webdriver/firefox/service.py b/py/selenium/webdriver/firefox/service.py index e34431480547e5..59c8c18058b3b9 100644 --- a/py/selenium/webdriver/firefox/service.py +++ b/py/selenium/webdriver/firefox/service.py @@ -14,8 +14,9 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing from typing import List +from typing import Mapping +from typing import Optional from selenium.types import SubprocessStdAlias from selenium.webdriver.common import service @@ -37,9 +38,9 @@ def __init__( self, executable_path: str = None, port: int = 0, - service_args: typing.Optional[typing.List[str]] = None, + service_args: Optional[List[str]] = None, log_output: SubprocessStdAlias = None, - env: typing.Optional[typing.Mapping[str, str]] = None, + env: Optional[Mapping[str, str]] = None, driver_path_env_key: str = None, **kwargs, ) -> None: diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index b8fac381d9f352..bd9c116ced4592 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -14,8 +14,8 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing from typing import List +from typing import Optional from selenium.types import SubprocessStdAlias from selenium.webdriver.common import service @@ -28,9 +28,9 @@ def __init__( self, executable_path: str = None, port: int = 0, - host: typing.Optional[str] = None, - service_args: typing.Optional[typing.List[str]] = None, - log_level: typing.Optional[str] = None, + host: Optional[str] = None, + service_args: Optional[List[str]] = None, + log_level: Optional[str] = None, log_output: SubprocessStdAlias = None, driver_path_env_key: str = None, **kwargs, diff --git a/py/selenium/webdriver/remote/webdriver.py b/py/selenium/webdriver/remote/webdriver.py index eace710c20310f..564fb465369dfa 100644 --- a/py/selenium/webdriver/remote/webdriver.py +++ b/py/selenium/webdriver/remote/webdriver.py @@ -22,7 +22,6 @@ import pkgutil import tempfile import types -import typing import warnings import zipfile from abc import ABCMeta @@ -34,6 +33,7 @@ from typing import Dict from typing import List from typing import Optional +from typing import Type from typing import Union from selenium.common.exceptions import InvalidArgumentException @@ -252,9 +252,9 @@ def __enter__(self): def __exit__( self, - exc_type: typing.Optional[typing.Type[BaseException]], - exc: typing.Optional[BaseException], - traceback: typing.Optional[types.TracebackType], + exc_type: Optional[Type[BaseException]], + exc: Optional[BaseException], + traceback: Optional[types.TracebackType], ): self.quit() @@ -361,6 +361,26 @@ def _unwrap_value(self, value): return list(self._unwrap_value(item) for item in value) return value + def execute_cdp_cmd(self, cmd: str, cmd_args: dict): + """Execute Chrome Devtools Protocol command and get returned result The + command and command args should follow chrome devtools protocol + domains/commands, refer to link + https://chromedevtools.github.io/devtools-protocol/ + + :Args: + - cmd: A str, command name + - cmd_args: A dict, command args. empty dict {} if there is no command args + :Usage: + :: + + driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': requestId}) + :Returns: + A dict, empty dict {} if there is no result to return. + For example to getResponseBody: + {'base64Encoded': False, 'body': 'response body string'} + """ + return self.execute("executeCdpCommand", {"cmd": cmd, "params": cmd_args})["value"] + def execute(self, driver_command: str, params: dict = None) -> dict: """Sends a command to be executed by a command.CommandExecutor. @@ -618,7 +638,7 @@ def get_cookies(self) -> List[dict]: """ return self.execute(Command.GET_ALL_COOKIES)["value"] - def get_cookie(self, name) -> typing.Optional[typing.Dict]: + def get_cookie(self, name) -> Optional[Dict]: """Get a single cookie by name. Returns the cookie if found, None if not. diff --git a/py/selenium/webdriver/safari/options.py b/py/selenium/webdriver/safari/options.py index 4e7ef0b63b01d9..74b39609d6cda0 100644 --- a/py/selenium/webdriver/safari/options.py +++ b/py/selenium/webdriver/safari/options.py @@ -14,7 +14,7 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing +from typing import Dict from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.common.options import ArgOptions @@ -111,5 +111,5 @@ class Options(ArgOptions): """ @property - def default_capabilities(self) -> typing.Dict[str, str]: + def default_capabilities(self) -> Dict[str, str]: return DesiredCapabilities.SAFARI.copy() diff --git a/py/selenium/webdriver/safari/service.py b/py/selenium/webdriver/safari/service.py index bd04ab66ff4836..c20e2ec85df052 100644 --- a/py/selenium/webdriver/safari/service.py +++ b/py/selenium/webdriver/safari/service.py @@ -15,7 +15,10 @@ # specific language governing permissions and limitations # under the License. -import typing + +from typing import List +from typing import Mapping +from typing import Optional from selenium.webdriver.common import service @@ -35,8 +38,8 @@ def __init__( self, executable_path: str = None, port: int = 0, - service_args: typing.Optional[typing.List[str]] = None, - env: typing.Optional[typing.Mapping[str, str]] = None, + service_args: Optional[List[str]] = None, + env: Optional[Mapping[str, str]] = None, reuse_service=False, enable_logging: bool = False, driver_path_env_key: str = None, @@ -57,7 +60,7 @@ def __init__( **kwargs, ) - def command_line_args(self) -> typing.List[str]: + def command_line_args(self) -> List[str]: return ["-p", f"{self.port}"] + self.service_args @property diff --git a/py/selenium/webdriver/support/event_firing_webdriver.py b/py/selenium/webdriver/support/event_firing_webdriver.py index 544ffbb970b6e9..6cfdf7b9fb93be 100644 --- a/py/selenium/webdriver/support/event_firing_webdriver.py +++ b/py/selenium/webdriver/support/event_firing_webdriver.py @@ -14,7 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing + +from typing import Any +from typing import List +from typing import Tuple from selenium.common.exceptions import WebDriverException from selenium.webdriver.common.by import By @@ -103,12 +106,10 @@ def quit(self) -> None: def find_element(self, by=By.ID, value=None) -> WebElement: return self._dispatch("find", (by, value, self._driver), "find_element", (by, value)) - def find_elements(self, by=By.ID, value=None) -> typing.List[WebElement]: + def find_elements(self, by=By.ID, value=None) -> List[WebElement]: return self._dispatch("find", (by, value, self._driver), "find_elements", (by, value)) - def _dispatch( - self, l_call: str, l_args: typing.Tuple[typing.Any, ...], d_call: str, d_args: typing.Tuple[typing.Any, ...] - ): + def _dispatch(self, l_call: str, l_args: Tuple[Any, ...], d_call: str, d_args: Tuple[Any, ...]): getattr(self._listener, f"before_{l_call}")(*l_args) try: result = getattr(self._driver, d_call)(*d_args) @@ -187,7 +188,7 @@ def send_keys(self, *value) -> None: def find_element(self, by=By.ID, value=None) -> WebElement: return self._dispatch("find", (by, value, self._driver), "find_element", (by, value)) - def find_elements(self, by=By.ID, value=None) -> typing.List[WebElement]: + def find_elements(self, by=By.ID, value=None) -> List[WebElement]: return self._dispatch("find", (by, value, self._driver), "find_elements", (by, value)) def _dispatch(self, l_call, l_args, d_call, d_args): diff --git a/py/selenium/webdriver/support/wait.py b/py/selenium/webdriver/support/wait.py index 35bd74a695eb85..f9e3815b6022f8 100644 --- a/py/selenium/webdriver/support/wait.py +++ b/py/selenium/webdriver/support/wait.py @@ -16,10 +16,12 @@ # under the License. import time -import typing from typing import Callable from typing import Generic from typing import Literal +from typing import Optional +from typing import Tuple +from typing import Type from typing import TypeVar from typing import Union @@ -30,7 +32,7 @@ from selenium.webdriver.remote.webelement import WebElement POLL_FREQUENCY: float = 0.5 # How long to sleep in between calls to the method -IGNORED_EXCEPTIONS: typing.Tuple[typing.Type[Exception]] = (NoSuchElementException,) # default to be ignored. +IGNORED_EXCEPTIONS: Tuple[Type[Exception]] = (NoSuchElementException,) # default to be ignored. D = TypeVar("D", bound=Union[WebDriver, WebElement]) T = TypeVar("T") @@ -42,7 +44,7 @@ def __init__( driver: D, timeout: float, poll_frequency: float = POLL_FREQUENCY, - ignored_exceptions: typing.Optional[WaitExcTypes] = None, + ignored_exceptions: Optional[WaitExcTypes] = None, ): """Constructor, takes a WebDriver instance and timeout in seconds. diff --git a/py/selenium/webdriver/webkitgtk/service.py b/py/selenium/webdriver/webkitgtk/service.py index 5f42d314861434..7414556370bd0a 100644 --- a/py/selenium/webdriver/webkitgtk/service.py +++ b/py/selenium/webdriver/webkitgtk/service.py @@ -14,8 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing import warnings +from typing import List +from typing import Mapping +from typing import Optional from selenium.webdriver.common import service @@ -37,10 +39,10 @@ def __init__( self, executable_path: str = DEFAULT_EXECUTABLE_PATH, port: int = 0, - log_path: typing.Optional[str] = None, - log_output: typing.Optional[str] = None, - service_args: typing.Optional[typing.List[str]] = None, - env: typing.Optional[typing.Mapping[str, str]] = None, + log_path: Optional[str] = None, + log_output: Optional[str] = None, + service_args: Optional[List[str]] = None, + env: Optional[Mapping[str, str]] = None, **kwargs, ) -> None: self.service_args = service_args or [] @@ -56,5 +58,5 @@ def __init__( **kwargs, ) - def command_line_args(self) -> typing.List[str]: + def command_line_args(self) -> List[str]: return ["-p", f"{self.port}"] + self.service_args diff --git a/py/selenium/webdriver/wpewebkit/options.py b/py/selenium/webdriver/wpewebkit/options.py index e1bb66c162a392..5a9736c72d29e8 100644 --- a/py/selenium/webdriver/wpewebkit/options.py +++ b/py/selenium/webdriver/wpewebkit/options.py @@ -14,7 +14,8 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing + +from typing import Dict from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.common.options import ArgOptions @@ -60,5 +61,5 @@ def to_capabilities(self): return caps @property - def default_capabilities(self) -> typing.Dict[str, str]: + def default_capabilities(self) -> Dict[str, str]: return DesiredCapabilities.WPEWEBKIT.copy() diff --git a/py/selenium/webdriver/wpewebkit/service.py b/py/selenium/webdriver/wpewebkit/service.py index bd90f51daf61be..8f392cf5227068 100644 --- a/py/selenium/webdriver/wpewebkit/service.py +++ b/py/selenium/webdriver/wpewebkit/service.py @@ -15,7 +15,9 @@ # specific language governing permissions and limitations # under the License. import shutil -import typing +from typing import List +from typing import Mapping +from typing import Optional from selenium.webdriver.common import service @@ -37,9 +39,9 @@ def __init__( self, executable_path: str = DEFAULT_EXECUTABLE_PATH, port: int = 0, - log_output: typing.Optional[str] = None, - service_args: typing.Optional[typing.List[str]] = None, - env: typing.Optional[typing.Mapping[str, str]] = None, + log_output: Optional[str] = None, + service_args: Optional[List[str]] = None, + env: Optional[Mapping[str, str]] = None, **kwargs, ): self.service_args = service_args or [] @@ -51,5 +53,5 @@ def __init__( **kwargs, ) - def command_line_args(self) -> typing.List[str]: + def command_line_args(self) -> List[str]: return ["-p", f"{self.port}"] + self.service_args diff --git a/py/setup.py b/py/setup.py deleted file mode 100755 index 0f93e33f0ecae1..00000000000000 --- a/py/setup.py +++ /dev/null @@ -1,38 +0,0 @@ -# Licensed to the Software Freedom Conservancy (SFC) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The SFC licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -from distutils.command.install import INSTALL_SCHEMES -from os.path import dirname, join, abspath -from setuptools import setup -from setuptools.command.install import install -from setuptools_rust import Binding, RustExtension - - -for scheme in INSTALL_SCHEMES.values(): - scheme['data'] = scheme['purelib'] - -setup_args = { - 'cmdclass': {'install': install}, - 'rust_extensions': [ - RustExtension( - {"selenium-manager": "selenium.webdriver.common.selenium-manager"}, - binding=Binding.Exec - ) - ], -} - -setup(**setup_args) diff --git a/rb/Gemfile.lock b/rb/Gemfile.lock index 3c9f67c9bf9f87..b09123411d0c72 100644 --- a/rb/Gemfile.lock +++ b/rb/Gemfile.lock @@ -13,7 +13,7 @@ PATH GEM remote: https://rubygems.org/ specs: - activesupport (8.0.0) + activesupport (7.2.2) base64 benchmark (>= 0.3) bigdecimal @@ -25,7 +25,6 @@ GEM minitest (>= 5.1) securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) - uri (>= 0.13.1) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) ast (2.4.2) @@ -162,7 +161,6 @@ GEM tzinfo (2.0.6) concurrent-ruby (~> 1.0) unicode-display_width (2.6.0) - uri (1.0.2) webmock (3.24.0) addressable (>= 2.8.0) crack (>= 0.3.2) diff --git a/rb/lib/selenium/webdriver/common/manager.rb b/rb/lib/selenium/webdriver/common/manager.rb index 6ba94fca8d829a..99181d7700f678 100644 --- a/rb/lib/selenium/webdriver/common/manager.rb +++ b/rb/lib/selenium/webdriver/common/manager.rb @@ -65,7 +65,7 @@ def add_cookie(opts = {}) # Get the cookie with the given name # # @param [String] name the name of the cookie - # @return [Hash, nil] the cookie, or nil if it wasn't found. + # @return [Hash] the cookie, or throws a NoSuchCookieError if it wasn't found. # def cookie_named(name) diff --git a/rb/sig/lib/selenium/webdriver/common/manager.rbs b/rb/sig/lib/selenium/webdriver/common/manager.rbs index bf61f3e18c4b4a..bb214a709a84b2 100644 --- a/rb/sig/lib/selenium/webdriver/common/manager.rbs +++ b/rb/sig/lib/selenium/webdriver/common/manager.rbs @@ -11,7 +11,7 @@ module Selenium def add_cookie: (?Hash[Symbol, untyped] opts) -> void - def cookie_named: (String name) -> Hash[Symbol, untyped] + def cookie_named: (String name) -> (Hash[Symbol, untyped] | Error::NoSuchCookieError) def delete_cookie: (String name) -> String @@ -33,7 +33,7 @@ module Selenium def strip_port: (String str) -> String? - def convert_cookie: (Hash[String, untyped] cookie) -> Hash[Symbol, untyped] + def convert_cookie: (String) -> (Hash[Symbol, untyped] | Error::NoSuchCookieError) end end end diff --git a/rb/spec/integration/selenium/webdriver/manager_spec.rb b/rb/spec/integration/selenium/webdriver/manager_spec.rb index f06afd7302cc91..d8d9d791ddc740 100644 --- a/rb/spec/integration/selenium/webdriver/manager_spec.rb +++ b/rb/spec/integration/selenium/webdriver/manager_spec.rb @@ -248,6 +248,11 @@ module WebDriver driver.manage.delete_all_cookies expect(driver.manage.all_cookies).to be_empty end + + it 'throws error when fetching non-existent cookie' do + expect { driver.manage.cookie_named('non-existent') } + .to raise_exception(Error::NoSuchCookieError) + end end end # Options end # WebDriver diff --git a/rust/BUILD.bazel b/rust/BUILD.bazel index a73cab95f3726e..eadc61dc6d8638 100644 --- a/rust/BUILD.bazel +++ b/rust/BUILD.bazel @@ -77,7 +77,7 @@ rust_binary( name = "selenium-manager", srcs = ["src/main.rs"], edition = "2021", - version = "0.4.24", + version = "0.4.28-nightly", visibility = ["//visibility:public"], deps = [ ":selenium_manager", diff --git a/rust/Cargo.Bazel.lock b/rust/Cargo.Bazel.lock index aa489691c16ae2..57ff8b0722d1f7 100644 --- a/rust/Cargo.Bazel.lock +++ b/rust/Cargo.Bazel.lock @@ -1,5 +1,5 @@ { - "checksum": "94895b25f9b1d0a76ec78d588887353422bc623faf9ef986467b199d2a966765", + "checksum": "778a62d50d430548a64ececb679a81afba2ffa2ac1553d2e95807253aa723ac7", "crates": { "addr2line 0.21.0": { "name": "addr2line", @@ -255,7 +255,7 @@ "deps": { "common": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], @@ -572,14 +572,14 @@ ], "license_file": "LICENSE-APACHE" }, - "anyhow 1.0.91": { + "anyhow 1.0.94": { "name": "anyhow", - "version": "1.0.91", + "version": "1.0.94", "package_url": "https://github.com/dtolnay/anyhow", "repository": { "Http": { - "url": "https://static.crates.io/crates/anyhow/1.0.91/download", - "sha256": "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" + "url": "https://static.crates.io/crates/anyhow/1.0.94/download", + "sha256": "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" } }, "targets": [ @@ -623,7 +623,7 @@ "deps": { "common": [ { - "id": "anyhow 1.0.91", + "id": "anyhow 1.0.94", "target": "build_script_build" }, { @@ -634,7 +634,7 @@ "selects": {} }, "edition": "2018", - "version": "1.0.91" + "version": "1.0.94" }, "build_script_attrs": { "compile_data_glob": [ @@ -651,14 +651,14 @@ ], "license_file": "LICENSE-APACHE" }, - "apple-flat-package 0.18.0": { + "apple-flat-package 0.20.0": { "name": "apple-flat-package", - "version": "0.18.0", + "version": "0.20.0", "package_url": "https://github.com/indygreg/apple-platform-rs.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/apple-flat-package/0.18.0/download", - "sha256": "b6adc520e05304de5ec383487786fa20e9c636fe972e59719cdd93621a2db6f1" + "url": "https://static.crates.io/crates/apple-flat-package/0.20.0/download", + "sha256": "9c9d5a1fd8af4a376cc33d7e816a13f8ce127d52101f5dbc8061fb595397bea0" } }, "targets": [ @@ -683,15 +683,15 @@ "deps": { "common": [ { - "id": "apple-xar 0.18.0", + "id": "apple-xar 0.20.0", "target": "apple_xar" }, { - "id": "cpio-archive 0.9.0", + "id": "cpio-archive 0.10.0", "target": "cpio_archive" }, { - "id": "flate2 1.0.34", + "id": "flate2 1.0.35", "target": "flate2" }, { @@ -699,7 +699,7 @@ "target": "scroll" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" }, { @@ -707,14 +707,14 @@ "target": "serde_xml_rs" }, { - "id": "thiserror 1.0.64", + "id": "thiserror 2.0.6", "target": "thiserror" } ], "selects": {} }, "edition": "2021", - "version": "0.18.0" + "version": "0.20.0" }, "license": "MPL-2.0", "license_ids": [ @@ -722,14 +722,14 @@ ], "license_file": "LICENSE" }, - "apple-xar 0.18.0": { + "apple-xar 0.20.0": { "name": "apple-xar", - "version": "0.18.0", + "version": "0.20.0", "package_url": "https://github.com/indygreg/apple-platform-rs.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/apple-xar/0.18.0/download", - "sha256": "844e00dc1e665b3cf0bba745aa9c6464292ca512db0c11384511586701eb0335" + "url": "https://static.crates.io/crates/apple-xar/0.20.0/download", + "sha256": "9631e781df71ebd049d7b4988cdae88712324cb20eb127fd79026bc8f1335d93" } }, "targets": [ @@ -761,7 +761,7 @@ "deps": { "common": [ { - "id": "base64 0.21.7", + "id": "base64 0.22.1", "target": "base64" }, { @@ -777,7 +777,7 @@ "target": "chrono" }, { - "id": "cryptographic-message-syntax 0.26.0", + "id": "cryptographic-message-syntax 0.27.0", "target": "cryptographic_message_syntax" }, { @@ -785,7 +785,7 @@ "target": "digest" }, { - "id": "flate2 1.0.34", + "id": "flate2 1.0.35", "target": "flate2" }, { @@ -801,7 +801,7 @@ "target": "rand" }, { - "id": "reqwest 0.11.27", + "id": "reqwest 0.12.9", "target": "reqwest" }, { @@ -809,7 +809,7 @@ "target": "scroll" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" }, { @@ -829,19 +829,19 @@ "target": "signature" }, { - "id": "thiserror 1.0.64", + "id": "thiserror 2.0.6", "target": "thiserror" }, { - "id": "url 2.5.0", + "id": "url 2.5.4", "target": "url" }, { - "id": "x509-certificate 0.23.1", + "id": "x509-certificate 0.24.0", "target": "x509_certificate" }, { - "id": "xml-rs 0.8.20", + "id": "xml-rs 0.8.24", "target": "xml" }, { @@ -852,7 +852,7 @@ "selects": {} }, "edition": "2021", - "version": "0.18.0" + "version": "0.20.0" }, "license": "MPL-2.0", "license_ids": [ @@ -1062,7 +1062,7 @@ "selects": { "cfg(any())": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ] @@ -1195,7 +1195,7 @@ "target": "addr2line" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -1236,53 +1236,6 @@ ], "license_file": "LICENSE-APACHE" }, - "base64 0.21.7": { - "name": "base64", - "version": "0.21.7", - "package_url": "https://github.com/marshallpierce/rust-base64", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/base64/0.21.7/download", - "sha256": "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - } - }, - "targets": [ - { - "Library": { - "crate_name": "base64", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "base64", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "alloc", - "default", - "std" - ], - "selects": {} - }, - "edition": "2018", - "version": "0.21.7" - }, - "license": "MIT OR Apache-2.0", - "license_ids": [ - "Apache-2.0", - "MIT" - ], - "license_file": "LICENSE-APACHE" - }, "base64 0.22.1": { "name": "base64", "version": "0.22.1", @@ -1401,7 +1354,7 @@ "deps": { "common": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -1549,12 +1502,6 @@ "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default" - ], - "selects": {} - }, "edition": "2018", "version": "1.3.2" }, @@ -1810,14 +1757,14 @@ ], "license_file": "LICENSE-MIT" }, - "bytes 1.6.0": { + "bytes 1.9.0": { "name": "bytes", - "version": "1.6.0", + "version": "1.9.0", "package_url": "https://github.com/tokio-rs/bytes", "repository": { "Http": { - "url": "https://static.crates.io/crates/bytes/1.6.0/download", - "sha256": "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + "url": "https://static.crates.io/crates/bytes/1.9.0/download", + "sha256": "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" } }, "targets": [ @@ -1847,7 +1794,7 @@ "selects": {} }, "edition": "2018", - "version": "1.6.0" + "version": "1.9.0" }, "license": "MIT", "license_ids": [ @@ -1891,7 +1838,7 @@ "target": "bzip2_sys" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], @@ -1907,6 +1854,64 @@ ], "license_file": "LICENSE-APACHE" }, + "bzip2 0.5.0": { + "name": "bzip2", + "version": "0.5.0", + "package_url": "https://github.com/trifectatechfoundation/bzip2-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/bzip2/0.5.0/download", + "sha256": "bafdbf26611df8c14810e268ddceda071c297570a5fb360ceddf617fe417ef58" + } + }, + "targets": [ + { + "Library": { + "crate_name": "bzip2", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "bzip2", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "bzip2-sys 0.1.11+1.0.8", + "target": "bzip2_sys" + }, + { + "id": "libc 0.2.168", + "target": "libc" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.5.0" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, "bzip2-sys 0.1.11+1.0.8": { "name": "bzip2-sys", "version": "0.1.11+1.0.8", @@ -1955,7 +1960,7 @@ "target": "build_script_build" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], @@ -2034,79 +2039,16 @@ "id": "jobserver 0.1.31", "target": "jobserver" }, + { + "id": "libc 0.2.168", + "target": "libc" + }, { "id": "shlex 1.3.0", "target": "shlex" } ], - "selects": { - "aarch64-apple-darwin": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-unknown-nixos-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "arm-unknown-linux-gnueabi": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "i686-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "powerpc-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "s390x-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-apple-darwin": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-unknown-freebsd": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-unknown-nixos-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ] - } + "selects": {} }, "edition": "2018", "version": "1.1.30" @@ -2267,7 +2209,7 @@ "target": "num_traits" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" } ], @@ -2290,12 +2232,6 @@ "target": "iana_time_zone" } ], - "aarch64-fuchsia": [ - { - "id": "iana-time-zone 0.1.60", - "target": "iana_time_zone" - } - ], "aarch64-linux-android": [ { "id": "android-tzdata 0.1.1", @@ -2312,6 +2248,12 @@ "target": "windows_targets" } ], + "aarch64-unknown-fuchsia": [ + { + "id": "iana-time-zone 0.1.60", + "target": "iana_time_zone" + } + ], "aarch64-unknown-linux-gnu": [ { "id": "iana-time-zone 0.1.60", @@ -2420,12 +2362,6 @@ "target": "iana_time_zone" } ], - "x86_64-fuchsia": [ - { - "id": "iana-time-zone 0.1.60", - "target": "iana_time_zone" - } - ], "x86_64-linux-android": [ { "id": "android-tzdata 0.1.1", @@ -2448,6 +2384,12 @@ "target": "iana_time_zone" } ], + "x86_64-unknown-fuchsia": [ + { + "id": "iana-time-zone 0.1.60", + "target": "iana_time_zone" + } + ], "x86_64-unknown-linux-gnu": [ { "id": "iana-time-zone 0.1.60", @@ -2472,14 +2414,14 @@ ], "license_file": "LICENSE.txt" }, - "clap 4.5.20": { + "clap 4.5.23": { "name": "clap", - "version": "4.5.20", + "version": "4.5.23", "package_url": "https://github.com/clap-rs/clap", "repository": { "Http": { - "url": "https://static.crates.io/crates/clap/4.5.20/download", - "sha256": "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" + "url": "https://static.crates.io/crates/clap/4.5.23/download", + "sha256": "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" } }, "targets": [ @@ -2518,7 +2460,7 @@ "deps": { "common": [ { - "id": "clap_builder 4.5.20", + "id": "clap_builder 4.5.23", "target": "clap_builder" } ], @@ -2534,7 +2476,7 @@ ], "selects": {} }, - "version": "4.5.20" + "version": "4.5.23" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -2543,14 +2485,14 @@ ], "license_file": "LICENSE-APACHE" }, - "clap_builder 4.5.20": { + "clap_builder 4.5.23": { "name": "clap_builder", - "version": "4.5.20", + "version": "4.5.23", "package_url": "https://github.com/clap-rs/clap", "repository": { "Http": { - "url": "https://static.crates.io/crates/clap_builder/4.5.20/download", - "sha256": "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" + "url": "https://static.crates.io/crates/clap_builder/4.5.23/download", + "sha256": "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" } }, "targets": [ @@ -2595,7 +2537,7 @@ "target": "anstyle" }, { - "id": "clap_lex 0.7.0", + "id": "clap_lex 0.7.4", "target": "clap_lex" }, { @@ -2606,7 +2548,7 @@ "selects": {} }, "edition": "2021", - "version": "4.5.20" + "version": "4.5.23" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -2657,7 +2599,7 @@ "target": "heck" }, { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -2665,7 +2607,7 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" } ], @@ -2681,14 +2623,14 @@ ], "license_file": "LICENSE-APACHE" }, - "clap_lex 0.7.0": { + "clap_lex 0.7.4": { "name": "clap_lex", - "version": "0.7.0", - "package_url": "https://github.com/clap-rs/clap/tree/master/clap_lex", + "version": "0.7.4", + "package_url": "https://github.com/clap-rs/clap", "repository": { "Http": { - "url": "https://static.crates.io/crates/clap_lex/0.7.0/download", - "sha256": "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + "url": "https://static.crates.io/crates/clap_lex/0.7.4/download", + "sha256": "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" } }, "targets": [ @@ -2711,7 +2653,7 @@ "**" ], "edition": "2021", - "version": "0.7.0" + "version": "0.7.4" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -2798,65 +2740,6 @@ ], "license_file": "LICENSE-APACHE" }, - "core-foundation 0.9.4": { - "name": "core-foundation", - "version": "0.9.4", - "package_url": "https://github.com/servo/core-foundation-rs", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/core-foundation/0.9.4/download", - "sha256": "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" - } - }, - "targets": [ - { - "Library": { - "crate_name": "core_foundation", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "core_foundation", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "default", - "link" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "core-foundation-sys 0.8.6", - "target": "core_foundation_sys" - }, - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.9.4" - }, - "license": "MIT OR Apache-2.0", - "license_ids": [ - "Apache-2.0", - "MIT" - ], - "license_file": "LICENSE-APACHE" - }, "core-foundation-sys 0.8.6": { "name": "core-foundation-sys", "version": "0.8.6", @@ -2903,14 +2786,14 @@ ], "license_file": "LICENSE-APACHE" }, - "cpio-archive 0.9.0": { + "cpio-archive 0.10.0": { "name": "cpio-archive", - "version": "0.9.0", + "version": "0.10.0", "package_url": "https://github.com/indygreg/apple-platform-rs.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/cpio-archive/0.9.0/download", - "sha256": "63d5133d716d3d82da8c76367ddb0ab1733e2629f1462e4f39947e13b8b4b741" + "url": "https://static.crates.io/crates/cpio-archive/0.10.0/download", + "sha256": "f11d34b07689c21889fc89bd7cc885b3244b0157bbededf4a1c159832cd0df05" } }, "targets": [ @@ -2947,14 +2830,14 @@ "target": "simple_file_manifest" }, { - "id": "thiserror 1.0.64", + "id": "thiserror 1.0.69", "target": "thiserror" } ], "selects": {} }, "edition": "2021", - "version": "0.9.0" + "version": "0.10.0" }, "license": "MPL-2.0", "license_ids": [ @@ -2996,25 +2879,25 @@ "selects": { "aarch64-linux-android": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ] @@ -3305,14 +3188,14 @@ ], "license_file": "LICENSE-APACHE" }, - "cryptographic-message-syntax 0.26.0": { + "cryptographic-message-syntax 0.27.0": { "name": "cryptographic-message-syntax", - "version": "0.26.0", + "version": "0.27.0", "package_url": "https://github.com/indygreg/cryptography-rs.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/cryptographic-message-syntax/0.26.0/download", - "sha256": "43c324ba1028cef7e3a71a00cbf585637bb0215dec2f6a2b566d094190a1309b" + "url": "https://static.crates.io/crates/cryptographic-message-syntax/0.27.0/download", + "sha256": "97a99e58d7755c646cb3f2a138d99f90da4c495282e1700b82daff8a48759ce0" } }, "targets": [ @@ -3334,6 +3217,13 @@ "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "http" + ], + "selects": {} + }, "deps": { "common": [ { @@ -3341,7 +3231,7 @@ "target": "bcder" }, { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -3357,7 +3247,7 @@ "target": "pem" }, { - "id": "reqwest 0.11.27", + "id": "reqwest 0.12.9", "target": "reqwest" }, { @@ -3369,20 +3259,20 @@ "target": "signature" }, { - "id": "x509-certificate 0.23.1", + "id": "x509-certificate 0.24.0", "target": "x509_certificate" } ], "selects": {} }, "edition": "2021", - "version": "0.26.0" + "version": "0.27.0" }, "license": "MPL-2.0", "license_ids": [ "MPL-2.0" ], - "license_file": null + "license_file": "LICENSE" }, "debpkg 0.6.0": { "name": "debpkg", @@ -3428,7 +3318,7 @@ "target": "bzip2" }, { - "id": "flate2 1.0.34", + "id": "flate2 1.0.35", "target": "flate2" }, { @@ -3444,7 +3334,7 @@ "target": "log" }, { - "id": "tar 0.4.42", + "id": "tar 0.4.43", "target": "tar" }, { @@ -3511,7 +3401,7 @@ "target": "const_oid" }, { - "id": "zeroize 1.7.0", + "id": "zeroize 1.8.1", "target": "zeroize" } ], @@ -3615,7 +3505,7 @@ "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -3623,7 +3513,7 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" } ], @@ -3832,7 +3722,7 @@ ], "cfg(unix)": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], @@ -3886,7 +3776,7 @@ "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -3894,7 +3784,7 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" } ], @@ -4023,66 +3913,10 @@ ], "license_file": "LICENSE-APACHE" }, - "encoding_rs 0.8.34": { - "name": "encoding_rs", - "version": "0.8.34", - "package_url": "https://github.com/hsivonen/encoding_rs", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/encoding_rs/0.8.34/download", - "sha256": "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" - } - }, - "targets": [ - { - "Library": { - "crate_name": "encoding_rs", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "encoding_rs", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "alloc", - "default" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "cfg-if 1.0.0", - "target": "cfg_if" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.8.34" - }, - "license": "(Apache-2.0 OR MIT) AND BSD-3-Clause", - "license_ids": [ - "Apache-2.0", - "BSD-3-Clause", - "MIT" - ], - "license_file": "LICENSE-APACHE" - }, - "env_filter 0.1.0": { - "name": "env_filter", - "version": "0.1.0", - "package_url": "https://github.com/rust-cli/env_logger", + "env_filter 0.1.0": { + "name": "env_filter", + "version": "0.1.0", + "package_url": "https://github.com/rust-cli/env_logger", "repository": { "Http": { "url": "https://static.crates.io/crates/env_filter/0.1.0/download", @@ -4250,14 +4084,14 @@ ], "license_file": "LICENSE-APACHE" }, - "errno 0.3.9": { + "errno 0.3.10": { "name": "errno", - "version": "0.3.9", + "version": "0.3.10", "package_url": "https://github.com/lambda-fairy/rust-errno", "repository": { "Http": { - "url": "https://static.crates.io/crates/errno/0.3.9/download", - "sha256": "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" + "url": "https://static.crates.io/crates/errno/0.3.10/download", + "sha256": "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" } }, "targets": [ @@ -4290,32 +4124,32 @@ "selects": { "cfg(target_os = \"hermit\")": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "cfg(target_os = \"wasi\")": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "cfg(unix)": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "cfg(windows)": [ { - "id": "windows-sys 0.52.0", + "id": "windows-sys 0.59.0", "target": "windows_sys" } ] } }, "edition": "2018", - "version": "0.3.9" + "version": "0.3.10" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -4454,7 +4288,7 @@ ], "cfg(unix)": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], @@ -4535,14 +4369,14 @@ ], "license_file": "LICENSE-APACHE" }, - "flate2 1.0.34": { + "flate2 1.0.35": { "name": "flate2", - "version": "1.0.34", + "version": "1.0.35", "package_url": "https://github.com/rust-lang/flate2-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/flate2/1.0.34/download", - "sha256": "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" + "url": "https://static.crates.io/crates/flate2/1.0.35/download", + "sha256": "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" } }, "targets": [ @@ -4594,7 +4428,7 @@ "selects": {} }, "edition": "2018", - "version": "1.0.34" + "version": "1.0.35" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -4834,15 +4668,15 @@ "aarch64-apple-ios-sim": [ "default" ], - "aarch64-fuchsia": [ - "default" - ], "aarch64-linux-android": [ "default" ], "aarch64-pc-windows-msvc": [ "default" ], + "aarch64-unknown-fuchsia": [ + "default" + ], "aarch64-unknown-linux-gnu": [ "default" ], @@ -4900,9 +4734,6 @@ "x86_64-apple-ios": [ "default" ], - "x86_64-fuchsia": [ - "default" - ], "x86_64-linux-android": [ "default" ], @@ -4912,6 +4743,9 @@ "x86_64-unknown-freebsd": [ "default" ], + "x86_64-unknown-fuchsia": [ + "default" + ], "x86_64-unknown-linux-gnu": [ "default" ], @@ -4990,15 +4824,15 @@ "aarch64-apple-ios-sim": [ "default" ], - "aarch64-fuchsia": [ - "default" - ], "aarch64-linux-android": [ "default" ], "aarch64-pc-windows-msvc": [ "default" ], + "aarch64-unknown-fuchsia": [ + "default" + ], "aarch64-unknown-linux-gnu": [ "default" ], @@ -5056,9 +4890,6 @@ "x86_64-apple-ios": [ "default" ], - "x86_64-fuchsia": [ - "default" - ], "x86_64-linux-android": [ "default" ], @@ -5068,6 +4899,9 @@ "x86_64-unknown-freebsd": [ "default" ], + "x86_64-unknown-fuchsia": [ + "default" + ], "x86_64-unknown-linux-gnu": [ "default" ], @@ -5228,7 +5062,7 @@ "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -5236,7 +5070,7 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" } ], @@ -5286,104 +5120,7 @@ "alloc", "std" ], - "selects": { - "aarch64-apple-darwin": [ - "default" - ], - "aarch64-apple-ios": [ - "default" - ], - "aarch64-apple-ios-sim": [ - "default" - ], - "aarch64-fuchsia": [ - "default" - ], - "aarch64-linux-android": [ - "default" - ], - "aarch64-pc-windows-msvc": [ - "default" - ], - "aarch64-unknown-linux-gnu": [ - "default" - ], - "aarch64-unknown-nixos-gnu": [ - "default" - ], - "aarch64-unknown-nto-qnx710": [ - "default" - ], - "arm-unknown-linux-gnueabi": [ - "default" - ], - "armv7-linux-androideabi": [ - "default" - ], - "armv7-unknown-linux-gnueabi": [ - "default" - ], - "i686-apple-darwin": [ - "default" - ], - "i686-linux-android": [ - "default" - ], - "i686-pc-windows-msvc": [ - "default" - ], - "i686-unknown-freebsd": [ - "default" - ], - "i686-unknown-linux-gnu": [ - "default" - ], - "powerpc-unknown-linux-gnu": [ - "default" - ], - "riscv32imc-unknown-none-elf": [ - "default" - ], - "riscv64gc-unknown-none-elf": [ - "default" - ], - "s390x-unknown-linux-gnu": [ - "default" - ], - "thumbv7em-none-eabi": [ - "default" - ], - "thumbv8m.main-none-eabi": [ - "default" - ], - "x86_64-apple-darwin": [ - "default" - ], - "x86_64-apple-ios": [ - "default" - ], - "x86_64-fuchsia": [ - "default" - ], - "x86_64-linux-android": [ - "default" - ], - "x86_64-pc-windows-msvc": [ - "default" - ], - "x86_64-unknown-freebsd": [ - "default" - ], - "x86_64-unknown-linux-gnu": [ - "default" - ], - "x86_64-unknown-nixos-gnu": [ - "default" - ], - "x86_64-unknown-none": [ - "default" - ] - } + "selects": {} }, "edition": "2018", "version": "0.3.30" @@ -5724,7 +5461,7 @@ ], "cfg(unix)": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ] @@ -5825,93 +5562,6 @@ ], "license_file": "LICENSE-APACHE" }, - "h2 0.3.26": { - "name": "h2", - "version": "0.3.26", - "package_url": "https://github.com/hyperium/h2", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/h2/0.3.26/download", - "sha256": "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" - } - }, - "targets": [ - { - "Library": { - "crate_name": "h2", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "h2", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "bytes 1.6.0", - "target": "bytes" - }, - { - "id": "fnv 1.0.7", - "target": "fnv" - }, - { - "id": "futures-core 0.3.30", - "target": "futures_core" - }, - { - "id": "futures-sink 0.3.30", - "target": "futures_sink" - }, - { - "id": "futures-util 0.3.30", - "target": "futures_util" - }, - { - "id": "http 0.2.12", - "target": "http" - }, - { - "id": "indexmap 2.2.6", - "target": "indexmap" - }, - { - "id": "slab 0.4.9", - "target": "slab" - }, - { - "id": "tokio 1.40.0", - "target": "tokio" - }, - { - "id": "tokio-util 0.7.11", - "target": "tokio_util" - }, - { - "id": "tracing 0.1.40", - "target": "tracing" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.3.26" - }, - "license": "MIT", - "license_ids": [ - "MIT" - ], - "license_file": "LICENSE" - }, "hashbrown 0.12.3": { "name": "hashbrown", "version": "0.12.3", @@ -6177,14 +5827,14 @@ ], "license_file": "LICENSE-APACHE" }, - "http 0.2.12": { + "http 1.1.0": { "name": "http", - "version": "0.2.12", + "version": "1.1.0", "package_url": "https://github.com/hyperium/http", "repository": { "Http": { - "url": "https://static.crates.io/crates/http/0.2.12/download", - "sha256": "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" + "url": "https://static.crates.io/crates/http/1.1.0/download", + "sha256": "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" } }, "targets": [ @@ -6206,10 +5856,17 @@ "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -6224,7 +5881,7 @@ "selects": {} }, "edition": "2018", - "version": "0.2.12" + "version": "1.1.0" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -6233,124 +5890,6 @@ ], "license_file": "LICENSE-APACHE" }, - "http 1.1.0": { - "name": "http", - "version": "1.1.0", - "package_url": "https://github.com/hyperium/http", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/http/1.1.0/download", - "sha256": "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" - } - }, - "targets": [ - { - "Library": { - "crate_name": "http", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "http", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "bytes 1.6.0", - "target": "bytes" - }, - { - "id": "fnv 1.0.7", - "target": "fnv" - }, - { - "id": "itoa 1.0.11", - "target": "itoa" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "1.1.0" - }, - "license": "MIT OR Apache-2.0", - "license_ids": [ - "Apache-2.0", - "MIT" - ], - "license_file": "LICENSE-APACHE" - }, - "http-body 0.4.6": { - "name": "http-body", - "version": "0.4.6", - "package_url": "https://github.com/hyperium/http-body", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/http-body/0.4.6/download", - "sha256": "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" - } - }, - "targets": [ - { - "Library": { - "crate_name": "http_body", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "http_body", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "bytes 1.6.0", - "target": "bytes" - }, - { - "id": "http 0.2.12", - "target": "http" - }, - { - "id": "pin-project-lite 0.2.14", - "target": "pin_project_lite" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.4.6" - }, - "license": "MIT", - "license_ids": [ - "MIT" - ], - "license_file": "LICENSE" - }, "http-body 1.0.0": { "name": "http-body", "version": "1.0.0", @@ -6383,7 +5922,7 @@ "deps": { "common": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -6434,7 +5973,7 @@ "deps": { "common": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -6540,45 +6079,6 @@ ], "license_file": "LICENSE-APACHE" }, - "httpdate 1.0.3": { - "name": "httpdate", - "version": "1.0.3", - "package_url": "https://github.com/pyfisch/httpdate", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/httpdate/1.0.3/download", - "sha256": "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - } - }, - "targets": [ - { - "Library": { - "crate_name": "httpdate", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "httpdate", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "edition": "2021", - "version": "1.0.3" - }, - "license": "MIT OR Apache-2.0", - "license_ids": [ - "Apache-2.0", - "MIT" - ], - "license_file": "LICENSE-APACHE" - }, "humantime 2.1.0": { "name": "humantime", "version": "2.1.0", @@ -6618,14 +6118,14 @@ ], "license_file": "LICENSE-APACHE" }, - "hyper 0.14.28": { + "hyper 1.3.1": { "name": "hyper", - "version": "0.14.28", + "version": "1.3.1", "package_url": "https://github.com/hyperium/hyper", "repository": { "Http": { - "url": "https://static.crates.io/crates/hyper/0.14.28/download", - "sha256": "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" + "url": "https://static.crates.io/crates/hyper/1.3.1/download", + "sha256": "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" } }, "targets": [ @@ -6650,53 +6150,37 @@ "crate_features": { "common": [ "client", - "h2", - "http1", - "http2", - "runtime", - "socket2", - "tcp" + "default", + "http1" ], "selects": {} }, "deps": { "common": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { "id": "futures-channel 0.3.30", "target": "futures_channel" }, - { - "id": "futures-core 0.3.30", - "target": "futures_core" - }, { "id": "futures-util 0.3.30", "target": "futures_util" }, { - "id": "h2 0.3.26", - "target": "h2" - }, - { - "id": "http 0.2.12", + "id": "http 1.1.0", "target": "http" }, { - "id": "http-body 0.4.6", + "id": "http-body 1.0.0", "target": "http_body" }, { "id": "httparse 1.8.0", "target": "httparse" }, - { - "id": "httpdate 1.0.3", - "target": "httpdate" - }, { "id": "itoa 1.0.11", "target": "itoa" @@ -6706,21 +6190,13 @@ "target": "pin_project_lite" }, { - "id": "socket2 0.5.7", - "target": "socket2" + "id": "smallvec 1.13.2", + "target": "smallvec" }, { - "id": "tokio 1.40.0", + "id": "tokio 1.42.0", "target": "tokio" }, - { - "id": "tower-service 0.3.2", - "target": "tower_service" - }, - { - "id": "tracing 0.1.40", - "target": "tracing" - }, { "id": "want 0.3.1", "target": "want" @@ -6728,8 +6204,8 @@ ], "selects": {} }, - "edition": "2018", - "version": "0.14.28" + "edition": "2021", + "version": "1.3.1" }, "license": "MIT", "license_ids": [ @@ -6737,20 +6213,20 @@ ], "license_file": "LICENSE" }, - "hyper 1.3.1": { - "name": "hyper", - "version": "1.3.1", - "package_url": "https://github.com/hyperium/hyper", + "hyper-rustls 0.27.2": { + "name": "hyper-rustls", + "version": "0.27.2", + "package_url": "https://github.com/rustls/hyper-rustls", "repository": { "Http": { - "url": "https://static.crates.io/crates/hyper/1.3.1/download", - "sha256": "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" + "url": "https://static.crates.io/crates/hyper-rustls/0.27.2/download", + "sha256": "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" } }, "targets": [ { "Library": { - "crate_name": "hyper", + "crate_name": "hyper_rustls", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -6761,29 +6237,23 @@ } } ], - "library_target_name": "hyper", + "library_target_name": "hyper_rustls", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "client", - "default", - "http1" + "http1", + "ring", + "tls12", + "webpki-roots", + "webpki-tokio" ], "selects": {} }, "deps": { "common": [ - { - "id": "bytes 1.6.0", - "target": "bytes" - }, - { - "id": "futures-channel 0.3.30", - "target": "futures_channel" - }, { "id": "futures-util 0.3.30", "target": "futures_util" @@ -6793,59 +6263,66 @@ "target": "http" }, { - "id": "http-body 1.0.0", - "target": "http_body" + "id": "hyper 1.3.1", + "target": "hyper" }, { - "id": "httparse 1.8.0", - "target": "httparse" + "id": "hyper-util 0.1.3", + "target": "hyper_util" }, { - "id": "itoa 1.0.11", - "target": "itoa" + "id": "rustls 0.23.12", + "target": "rustls" }, { - "id": "pin-project-lite 0.2.14", - "target": "pin_project_lite" + "id": "rustls-pki-types 1.7.0", + "target": "rustls_pki_types", + "alias": "pki_types" }, { - "id": "smallvec 1.13.2", - "target": "smallvec" + "id": "tokio 1.42.0", + "target": "tokio" }, { - "id": "tokio 1.40.0", - "target": "tokio" + "id": "tokio-rustls 0.26.0", + "target": "tokio_rustls" }, { - "id": "want 0.3.1", - "target": "want" + "id": "tower-service 0.3.2", + "target": "tower_service" + }, + { + "id": "webpki-roots 0.26.1", + "target": "webpki_roots" } ], "selects": {} }, "edition": "2021", - "version": "1.3.1" + "version": "0.27.2" }, - "license": "MIT", + "license": "Apache-2.0 OR ISC OR MIT", "license_ids": [ + "Apache-2.0", + "ISC", "MIT" ], "license_file": "LICENSE" }, - "hyper-rustls 0.24.2": { - "name": "hyper-rustls", - "version": "0.24.2", - "package_url": "https://github.com/rustls/hyper-rustls", + "hyper-util 0.1.3": { + "name": "hyper-util", + "version": "0.1.3", + "package_url": "https://github.com/hyperium/hyper-util", "repository": { "Http": { - "url": "https://static.crates.io/crates/hyper-rustls/0.24.2/download", - "sha256": "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" + "url": "https://static.crates.io/crates/hyper-util/0.1.3/download", + "sha256": "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" } }, "targets": [ { "Library": { - "crate_name": "hyper_rustls", + "crate_name": "hyper_util", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -6856,177 +6333,12 @@ } } ], - "library_target_name": "hyper_rustls", + "library_target_name": "hyper_util", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { - "common": [ - { - "id": "futures-util 0.3.30", - "target": "futures_util" - }, - { - "id": "http 0.2.12", - "target": "http" - }, - { - "id": "hyper 0.14.28", - "target": "hyper" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "tokio 1.40.0", - "target": "tokio" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.24.2" - }, - "license": "Apache-2.0 OR ISC OR MIT", - "license_ids": [ - "Apache-2.0", - "ISC", - "MIT" - ], - "license_file": "LICENSE" - }, - "hyper-rustls 0.27.2": { - "name": "hyper-rustls", - "version": "0.27.2", - "package_url": "https://github.com/rustls/hyper-rustls", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/hyper-rustls/0.27.2/download", - "sha256": "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" - } - }, - "targets": [ - { - "Library": { - "crate_name": "hyper_rustls", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "hyper_rustls", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "http1", - "ring", - "tls12", - "webpki-roots", - "webpki-tokio" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "futures-util 0.3.30", - "target": "futures_util" - }, - { - "id": "http 1.1.0", - "target": "http" - }, - { - "id": "hyper 1.3.1", - "target": "hyper" - }, - { - "id": "hyper-util 0.1.3", - "target": "hyper_util" - }, - { - "id": "rustls 0.23.12", - "target": "rustls" - }, - { - "id": "rustls-pki-types 1.7.0", - "target": "rustls_pki_types", - "alias": "pki_types" - }, - { - "id": "tokio 1.40.0", - "target": "tokio" - }, - { - "id": "tokio-rustls 0.26.0", - "target": "tokio_rustls" - }, - { - "id": "tower-service 0.3.2", - "target": "tower_service" - }, - { - "id": "webpki-roots 0.26.1", - "target": "webpki_roots" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.27.2" - }, - "license": "Apache-2.0 OR ISC OR MIT", - "license_ids": [ - "Apache-2.0", - "ISC", - "MIT" - ], - "license_file": "LICENSE" - }, - "hyper-util 0.1.3": { - "name": "hyper-util", - "version": "0.1.3", - "package_url": "https://github.com/hyperium/hyper-util", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/hyper-util/0.1.3/download", - "sha256": "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" - } - }, - "targets": [ - { - "Library": { - "crate_name": "hyper_util", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "hyper_util", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { + "crate_features": { "common": [ "client", "client-legacy", @@ -7039,7 +6351,7 @@ "deps": { "common": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -7071,7 +6383,7 @@ "target": "socket2" }, { - "id": "tokio 1.40.0", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -7259,20 +6571,20 @@ ], "license_file": "LICENSE-APACHE" }, - "idna 0.5.0": { - "name": "idna", - "version": "0.5.0", - "package_url": "https://github.com/servo/rust-url/", + "icu_collections 1.5.0": { + "name": "icu_collections", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/idna/0.5.0/download", - "sha256": "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" + "url": "https://static.crates.io/crates/icu_collections/1.5.0/download", + "sha256": "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" } }, "targets": [ { "Library": { - "crate_name": "idna", + "crate_name": "icu_collections", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7283,56 +6595,60 @@ } } ], - "library_target_name": "idna", + "library_target_name": "icu_collections", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "alloc", - "default", - "std" + { + "id": "yoke 0.7.5", + "target": "yoke" + }, + { + "id": "zerofrom 0.1.5", + "target": "zerofrom" + }, + { + "id": "zerovec 0.10.4", + "target": "zerovec" + } ], "selects": {} }, - "deps": { + "edition": "2021", + "proc_macro_deps": { "common": [ { - "id": "unicode-bidi 0.3.15", - "target": "unicode_bidi" - }, - { - "id": "unicode-normalization 0.1.23", - "target": "unicode_normalization" + "id": "displaydoc 0.2.5", + "target": "displaydoc" } ], "selects": {} }, - "edition": "2018", - "version": "0.5.0" + "version": "1.5.0" }, - "license": "MIT OR Apache-2.0", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "indexmap 1.9.3": { - "name": "indexmap", - "version": "1.9.3", - "package_url": "https://github.com/bluss/indexmap", + "icu_locid 1.5.0": { + "name": "icu_locid", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/indexmap/1.9.3/download", - "sha256": "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" + "url": "https://static.crates.io/crates/icu_locid/1.5.0/download", + "sha256": "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" } }, "targets": [ { "Library": { - "crate_name": "indexmap", + "crate_name": "icu_locid", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7341,79 +6657,72 @@ ] } } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } } ], - "library_target_name": "indexmap", + "library_target_name": "icu_locid", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "zerovec" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "hashbrown 0.12.3", - "target": "hashbrown" + "id": "litemap 0.7.4", + "target": "litemap" }, { - "id": "indexmap 1.9.3", - "target": "build_script_build" + "id": "tinystr 0.7.6", + "target": "tinystr" + }, + { + "id": "writeable 0.5.5", + "target": "writeable" + }, + { + "id": "zerovec 0.10.4", + "target": "zerovec" } ], "selects": {} }, "edition": "2021", - "version": "1.9.3" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ], - "deps": { + "proc_macro_deps": { "common": [ { - "id": "autocfg 1.3.0", - "target": "autocfg" + "id": "displaydoc 0.2.5", + "target": "displaydoc" } ], "selects": {} - } + }, + "version": "1.5.0" }, - "license": "Apache-2.0 OR MIT", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "indexmap 2.2.6": { - "name": "indexmap", - "version": "2.2.6", - "package_url": "https://github.com/indexmap-rs/indexmap", + "icu_locid_transform 1.5.0": { + "name": "icu_locid_transform", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/indexmap/2.2.6/download", - "sha256": "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" + "url": "https://static.crates.io/crates/icu_locid_transform/1.5.0/download", + "sha256": "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" } }, "targets": [ { "Library": { - "crate_name": "indexmap", + "crate_name": "icu_locid_transform", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7424,55 +6733,74 @@ } } ], - "library_target_name": "indexmap", + "library_target_name": "icu_locid_transform", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default", - "std" + "compiled_data" ], "selects": {} }, "deps": { "common": [ { - "id": "equivalent 1.0.1", - "target": "equivalent" + "id": "icu_locid 1.5.0", + "target": "icu_locid" }, { - "id": "hashbrown 0.14.5", - "target": "hashbrown" + "id": "icu_locid_transform_data 1.5.0", + "target": "icu_locid_transform_data" + }, + { + "id": "icu_provider 1.5.0", + "target": "icu_provider" + }, + { + "id": "tinystr 0.7.6", + "target": "tinystr" + }, + { + "id": "zerovec 0.10.4", + "target": "zerovec" } ], "selects": {} }, "edition": "2021", - "version": "2.2.6" + "proc_macro_deps": { + "common": [ + { + "id": "displaydoc 0.2.5", + "target": "displaydoc" + } + ], + "selects": {} + }, + "version": "1.5.0" }, - "license": "Apache-2.0 OR MIT", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "infer 0.8.1": { - "name": "infer", - "version": "0.8.1", - "package_url": "https://github.com/bojand/infer", + "icu_locid_transform_data 1.5.0": { + "name": "icu_locid_transform_data", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/infer/0.8.1/download", - "sha256": "e035cede526e0b21d5adffc9fa0eb4ef5d6026fe9c5b0bfe8084b9472b587a55" + "url": "https://static.crates.io/crates/icu_locid_transform_data/1.5.0/download", + "sha256": "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" } }, "targets": [ { "Library": { - "crate_name": "infer", + "crate_name": "icu_locid_transform_data", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7483,52 +6811,34 @@ } } ], - "library_target_name": "infer", + "library_target_name": "icu_locid_transform_data", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "alloc", - "cfb", - "default", - "std" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "cfb 0.7.3", - "target": "cfb" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.8.1" + "edition": "2021", + "version": "1.5.0" }, - "license": "MIT", + "license": "Unicode-3.0", "license_ids": [ - "MIT" + "Unicode-3.0" ], "license_file": "LICENSE" }, - "infer 0.16.0": { - "name": "infer", - "version": "0.16.0", - "package_url": "https://github.com/bojand/infer", + "icu_normalizer 1.5.0": { + "name": "icu_normalizer", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/infer/0.16.0/download", - "sha256": "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" + "url": "https://static.crates.io/crates/icu_normalizer/1.5.0/download", + "sha256": "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" } }, "targets": [ { "Library": { - "crate_name": "infer", + "crate_name": "icu_normalizer", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7539,98 +6849,91 @@ } } ], - "library_target_name": "infer", + "library_target_name": "icu_normalizer", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", - "cfb", - "default", - "std" + "compiled_data", + "default" ], "selects": {} }, "deps": { "common": [ { - "id": "cfb 0.7.3", - "target": "cfb" + "id": "icu_collections 1.5.0", + "target": "icu_collections" + }, + { + "id": "icu_normalizer_data 1.5.0", + "target": "icu_normalizer_data" + }, + { + "id": "icu_properties 1.5.1", + "target": "icu_properties" + }, + { + "id": "icu_provider 1.5.0", + "target": "icu_provider" + }, + { + "id": "smallvec 1.13.2", + "target": "smallvec" + }, + { + "id": "utf16_iter 1.0.5", + "target": "utf16_iter" + }, + { + "id": "utf8_iter 1.0.4", + "target": "utf8_iter" + }, + { + "id": "write16 1.0.0", + "target": "write16" + }, + { + "id": "zerovec 0.10.4", + "target": "zerovec" } ], "selects": {} }, - "edition": "2018", - "version": "0.16.0" - }, - "license": "MIT", - "license_ids": [ - "MIT" - ], - "license_file": "LICENSE" - }, - "ipnet 2.9.0": { - "name": "ipnet", - "version": "2.9.0", - "package_url": "https://github.com/krisprice/ipnet", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/ipnet/2.9.0/download", - "sha256": "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - } - }, - "targets": [ - { - "Library": { - "crate_name": "ipnet", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "ipnet", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { + "edition": "2021", + "proc_macro_deps": { "common": [ - "default", - "std" + { + "id": "displaydoc 0.2.5", + "target": "displaydoc" + } ], "selects": {} }, - "edition": "2018", - "version": "2.9.0" + "version": "1.5.0" }, - "license": "MIT OR Apache-2.0", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "is_executable 1.0.4": { - "name": "is_executable", - "version": "1.0.4", - "package_url": "https://github.com/fitzgen/is_executable", + "icu_normalizer_data 1.5.0": { + "name": "icu_normalizer_data", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/is_executable/1.0.4/download", - "sha256": "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2" + "url": "https://static.crates.io/crates/icu_normalizer_data/1.5.0/download", + "sha256": "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" } }, "targets": [ { "Library": { - "crate_name": "is_executable", + "crate_name": "icu_normalizer_data", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7641,46 +6944,34 @@ } } ], - "library_target_name": "is_executable", + "library_target_name": "icu_normalizer_data", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { - "common": [], - "selects": { - "cfg(target_os = \"windows\")": [ - { - "id": "winapi 0.3.9", - "target": "winapi" - } - ] - } - }, "edition": "2021", - "version": "1.0.4" + "version": "1.5.0" }, - "license": "Apache-2.0/MIT", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "is_terminal_polyfill 1.70.0": { - "name": "is_terminal_polyfill", - "version": "1.70.0", - "package_url": "https://github.com/polyfill-rs/is_terminal_polyfill", + "icu_properties 1.5.1": { + "name": "icu_properties", + "version": "1.5.1", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/is_terminal_polyfill/1.70.0/download", - "sha256": "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + "url": "https://static.crates.io/crates/icu_properties/1.5.1/download", + "sha256": "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" } }, "targets": [ { "Library": { - "crate_name": "is_terminal_polyfill", + "crate_name": "icu_properties", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7691,41 +6982,79 @@ } } ], - "library_target_name": "is_terminal_polyfill", + "library_target_name": "icu_properties", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ + "compiled_data", "default" ], "selects": {} }, + "deps": { + "common": [ + { + "id": "icu_collections 1.5.0", + "target": "icu_collections" + }, + { + "id": "icu_locid_transform 1.5.0", + "target": "icu_locid_transform" + }, + { + "id": "icu_properties_data 1.5.0", + "target": "icu_properties_data" + }, + { + "id": "icu_provider 1.5.0", + "target": "icu_provider" + }, + { + "id": "tinystr 0.7.6", + "target": "tinystr" + }, + { + "id": "zerovec 0.10.4", + "target": "zerovec" + } + ], + "selects": {} + }, "edition": "2021", - "version": "1.70.0" + "proc_macro_deps": { + "common": [ + { + "id": "displaydoc 0.2.5", + "target": "displaydoc" + } + ], + "selects": {} + }, + "version": "1.5.1" }, - "license": "MIT OR Apache-2.0", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "itoa 1.0.11": { - "name": "itoa", - "version": "1.0.11", - "package_url": "https://github.com/dtolnay/itoa", + "icu_properties_data 1.5.0": { + "name": "icu_properties_data", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/itoa/1.0.11/download", - "sha256": "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + "url": "https://static.crates.io/crates/icu_properties_data/1.5.0/download", + "sha256": "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" } }, "targets": [ { "Library": { - "crate_name": "itoa", + "crate_name": "icu_properties_data", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7736,35 +7065,34 @@ } } ], - "library_target_name": "itoa", + "library_target_name": "icu_properties_data", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2018", - "version": "1.0.11" + "edition": "2021", + "version": "1.5.0" }, - "license": "MIT OR Apache-2.0", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "jobserver 0.1.31": { - "name": "jobserver", - "version": "0.1.31", - "package_url": "https://github.com/rust-lang/jobserver-rs", + "icu_provider 1.5.0": { + "name": "icu_provider", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/jobserver/0.1.31/download", - "sha256": "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" + "url": "https://static.crates.io/crates/icu_provider/1.5.0/download", + "sha256": "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" } }, "targets": [ { "Library": { - "crate_name": "jobserver", + "crate_name": "icu_provider", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7775,46 +7103,86 @@ } } ], - "library_target_name": "jobserver", + "library_target_name": "icu_provider", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { - "common": [], - "selects": { - "cfg(unix)": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ] - } + "crate_features": { + "common": [ + "macros" + ], + "selects": {} }, - "edition": "2021", - "version": "0.1.31" + "deps": { + "common": [ + { + "id": "icu_locid 1.5.0", + "target": "icu_locid" + }, + { + "id": "stable_deref_trait 1.2.0", + "target": "stable_deref_trait" + }, + { + "id": "tinystr 0.7.6", + "target": "tinystr" + }, + { + "id": "writeable 0.5.5", + "target": "writeable" + }, + { + "id": "yoke 0.7.5", + "target": "yoke" + }, + { + "id": "zerofrom 0.1.5", + "target": "zerofrom" + }, + { + "id": "zerovec 0.10.4", + "target": "zerovec" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "displaydoc 0.2.5", + "target": "displaydoc" + }, + { + "id": "icu_provider_macros 1.5.0", + "target": "icu_provider_macros" + } + ], + "selects": {} + }, + "version": "1.5.0" }, - "license": "MIT OR Apache-2.0", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "js-sys 0.3.69": { - "name": "js-sys", - "version": "0.3.69", - "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/js-sys", + "icu_provider_macros 1.5.0": { + "name": "icu_provider_macros", + "version": "1.5.0", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/js-sys/0.3.69/download", - "sha256": "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" + "url": "https://static.crates.io/crates/icu_provider_macros/1.5.0/download", + "sha256": "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" } }, "targets": [ { - "Library": { - "crate_name": "js_sys", + "ProcMacro": { + "crate_name": "icu_provider_macros", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7825,7 +7193,7 @@ } } ], - "library_target_name": "js_sys", + "library_target_name": "icu_provider_macros", "common_attrs": { "compile_data_glob": [ "**" @@ -7833,36 +7201,43 @@ "deps": { "common": [ { - "id": "wasm-bindgen 0.2.92", - "target": "wasm_bindgen" + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.37", + "target": "quote" + }, + { + "id": "syn 2.0.90", + "target": "syn" } ], "selects": {} }, - "edition": "2018", - "version": "0.3.69" + "edition": "2021", + "version": "1.5.0" }, - "license": "MIT OR Apache-2.0", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "libc 0.2.160": { - "name": "libc", - "version": "0.2.160", - "package_url": "https://github.com/rust-lang/libc", + "idna 1.0.3": { + "name": "idna", + "version": "1.0.3", + "package_url": "https://github.com/servo/rust-url/", "repository": { "Http": { - "url": "https://static.crates.io/crates/libc/0.2.160/download", - "sha256": "f0b21006cd1874ae9e650973c565615676dc4a274c965bb0a73796dac838ce4f" + "url": "https://static.crates.io/crates/idna/1.0.3/download", + "sha256": "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" } }, "targets": [ { "Library": { - "crate_name": "libc", + "crate_name": "idna", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -7871,106 +7246,40 @@ ] } } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } } ], - "library_target_name": "libc", + "library_target_name": "idna", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default", + "alloc", + "compiled_data", "std" ], - "selects": { - "aarch64-apple-darwin": [ - "extra_traits" - ], - "aarch64-apple-ios": [ - "extra_traits" - ], - "aarch64-apple-ios-sim": [ - "extra_traits" - ], - "aarch64-fuchsia": [ - "extra_traits" - ], - "aarch64-linux-android": [ - "extra_traits" - ], - "aarch64-unknown-nto-qnx710": [ - "extra_traits" - ], - "armv7-linux-androideabi": [ - "extra_traits" - ], - "i686-apple-darwin": [ - "extra_traits" - ], - "i686-linux-android": [ - "extra_traits" - ], - "i686-unknown-freebsd": [ - "extra_traits" - ], - "powerpc-unknown-linux-gnu": [ - "extra_traits" - ], - "s390x-unknown-linux-gnu": [ - "extra_traits" - ], - "wasm32-wasi": [ - "extra_traits" - ], - "x86_64-apple-darwin": [ - "extra_traits" - ], - "x86_64-apple-ios": [ - "extra_traits" - ], - "x86_64-fuchsia": [ - "extra_traits" - ], - "x86_64-linux-android": [ - "extra_traits" - ], - "x86_64-unknown-freebsd": [ - "extra_traits" - ] - } + "selects": {} }, "deps": { "common": [ { - "id": "libc 0.2.160", - "target": "build_script_build" + "id": "idna_adapter 1.2.0", + "target": "idna_adapter" + }, + { + "id": "smallvec 1.13.2", + "target": "smallvec" + }, + { + "id": "utf8_iter 1.0.4", + "target": "utf8_iter" } ], "selects": {} }, - "edition": "2015", - "version": "0.2.160" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ] + "edition": "2018", + "version": "1.0.3" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -7979,20 +7288,20 @@ ], "license_file": "LICENSE-APACHE" }, - "libredox 0.1.3": { - "name": "libredox", - "version": "0.1.3", - "package_url": "https://gitlab.redox-os.org/redox-os/libredox.git", + "idna_adapter 1.2.0": { + "name": "idna_adapter", + "version": "1.2.0", + "package_url": "https://github.com/hsivonen/idna_adapter", "repository": { "Http": { - "url": "https://static.crates.io/crates/libredox/0.1.3/download", - "sha256": "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" + "url": "https://static.crates.io/crates/idna_adapter/1.2.0/download", + "sha256": "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" } }, "targets": [ { "Library": { - "crate_name": "libredox", + "crate_name": "idna_adapter", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8003,47 +7312,54 @@ } } ], - "library_target_name": "libredox", + "library_target_name": "idna_adapter", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "compiled_data" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "bitflags 2.5.0", - "target": "bitflags" + "id": "icu_normalizer 1.5.0", + "target": "icu_normalizer" }, { - "id": "libc 0.2.160", - "target": "libc" + "id": "icu_properties 1.5.1", + "target": "icu_properties" } ], "selects": {} }, "edition": "2021", - "version": "0.1.3" + "version": "1.2.0" }, - "license": "MIT", + "license": "Apache-2.0 OR MIT", "license_ids": [ + "Apache-2.0", "MIT" ], - "license_file": "LICENSE" + "license_file": "LICENSE-APACHE" }, - "libz-sys 1.1.20": { - "name": "libz-sys", - "version": "1.1.20", - "package_url": "https://github.com/rust-lang/libz-sys", + "indexmap 1.9.3": { + "name": "indexmap", + "version": "1.9.3", + "package_url": "https://github.com/bluss/indexmap", "repository": { "Http": { - "url": "https://static.crates.io/crates/libz-sys/1.1.20/download", - "sha256": "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" + "url": "https://static.crates.io/crates/indexmap/1.9.3/download", + "sha256": "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" } }, "targets": [ { "Library": { - "crate_name": "libz_sys", + "crate_name": "indexmap", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8066,7 +7382,7 @@ } } ], - "library_target_name": "libz_sys", + "library_target_name": "indexmap", "common_attrs": { "compile_data_glob": [ "**" @@ -8074,14 +7390,18 @@ "deps": { "common": [ { - "id": "libz-sys 1.1.20", + "id": "hashbrown 0.12.3", + "target": "hashbrown" + }, + { + "id": "indexmap 1.9.3", "target": "build_script_build" } ], "selects": {} }, - "edition": "2018", - "version": "1.1.20" + "edition": "2021", + "version": "1.9.3" }, "build_script_attrs": { "compile_data_glob": [ @@ -8093,43 +7413,34 @@ "deps": { "common": [ { - "id": "cc 1.1.30", - "target": "cc" - }, - { - "id": "pkg-config 0.3.30", - "target": "pkg_config" - }, - { - "id": "vcpkg 0.2.15", - "target": "vcpkg" + "id": "autocfg 1.3.0", + "target": "autocfg" } ], "selects": {} - }, - "links": "z" + } }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "linux-raw-sys 0.4.14": { - "name": "linux-raw-sys", - "version": "0.4.14", - "package_url": "https://github.com/sunfishcode/linux-raw-sys", + "indexmap 2.2.6": { + "name": "indexmap", + "version": "2.2.6", + "package_url": "https://github.com/indexmap-rs/indexmap", "repository": { "Http": { - "url": "https://static.crates.io/crates/linux-raw-sys/0.4.14/download", - "sha256": "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + "url": "https://static.crates.io/crates/indexmap/2.2.6/download", + "sha256": "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" } }, "targets": [ { "Library": { - "crate_name": "linux_raw_sys", + "crate_name": "indexmap", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8140,85 +7451,55 @@ } } ], - "library_target_name": "linux_raw_sys", + "library_target_name": "indexmap", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "general", - "ioctl", - "no_std" + "default", + "std" ], - "selects": { - "aarch64-unknown-linux-gnu": [ - "elf", - "errno", - "std" - ], - "aarch64-unknown-nixos-gnu": [ - "elf", - "errno", - "std" - ], - "arm-unknown-linux-gnueabi": [ - "elf", - "errno", - "std" - ], - "armv7-unknown-linux-gnueabi": [ - "elf", - "errno", - "std" - ], - "i686-unknown-linux-gnu": [ - "elf", - "errno", - "std" - ], - "powerpc-unknown-linux-gnu": [ - "std" - ], - "s390x-unknown-linux-gnu": [ - "std" - ], - "x86_64-unknown-linux-gnu": [ - "elf", - "errno", - "std" - ], - "x86_64-unknown-nixos-gnu": [ - "elf", - "errno", - "std" - ] - } + "selects": {} + }, + "deps": { + "common": [ + { + "id": "equivalent 1.0.1", + "target": "equivalent" + }, + { + "id": "hashbrown 0.14.5", + "target": "hashbrown" + } + ], + "selects": {} }, "edition": "2021", - "version": "0.4.14" + "version": "2.2.6" }, - "license": "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "log 0.4.22": { - "name": "log", - "version": "0.4.22", - "package_url": "https://github.com/rust-lang/log", + "infer 0.8.1": { + "name": "infer", + "version": "0.8.1", + "package_url": "https://github.com/bojand/infer", "repository": { "Http": { - "url": "https://static.crates.io/crates/log/0.4.22/download", - "sha256": "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + "url": "https://static.crates.io/crates/infer/0.8.1/download", + "sha256": "e035cede526e0b21d5adffc9fa0eb4ef5d6026fe9c5b0bfe8084b9472b587a55" } }, "targets": [ { "Library": { - "crate_name": "log", + "crate_name": "infer", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8229,41 +7510,52 @@ } } ], - "library_target_name": "log", + "library_target_name": "infer", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ + "alloc", + "cfb", + "default", "std" ], "selects": {} }, - "edition": "2021", - "version": "0.4.22" + "deps": { + "common": [ + { + "id": "cfb 0.7.3", + "target": "cfb" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.8.1" }, - "license": "MIT OR Apache-2.0", + "license": "MIT", "license_ids": [ - "Apache-2.0", "MIT" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "lzma-rust 0.1.7": { - "name": "lzma-rust", - "version": "0.1.7", - "package_url": "https://github.com/dyz1990/sevenz-rust/tree/main/lzma-rust", + "infer 0.16.0": { + "name": "infer", + "version": "0.16.0", + "package_url": "https://github.com/bojand/infer", "repository": { "Http": { - "url": "https://static.crates.io/crates/lzma-rust/0.1.7/download", - "sha256": "5baab2bbbd7d75a144d671e9ff79270e903957d92fb7386fd39034c709bd2661" + "url": "https://static.crates.io/crates/infer/0.16.0/download", + "sha256": "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" } }, "targets": [ { "Library": { - "crate_name": "lzma_rust", + "crate_name": "infer", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8274,49 +7566,52 @@ } } ], - "library_target_name": "lzma_rust", + "library_target_name": "infer", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "encoder" + "alloc", + "cfb", + "default", + "std" ], "selects": {} }, "deps": { "common": [ { - "id": "byteorder 1.5.0", - "target": "byteorder" + "id": "cfb 0.7.3", + "target": "cfb" } ], "selects": {} }, - "edition": "2021", - "version": "0.1.7" + "edition": "2018", + "version": "0.16.0" }, - "license": "Apache-2.0", + "license": "MIT", "license_ids": [ - "Apache-2.0" + "MIT" ], - "license_file": null + "license_file": "LICENSE" }, - "lzma-sys 0.1.20": { - "name": "lzma-sys", - "version": "0.1.20", - "package_url": "https://github.com/alexcrichton/xz2-rs", + "ipnet 2.9.0": { + "name": "ipnet", + "version": "2.9.0", + "package_url": "https://github.com/krisprice/ipnet", "repository": { "Http": { - "url": "https://static.crates.io/crates/lzma-sys/0.1.20/download", - "sha256": "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" + "url": "https://static.crates.io/crates/ipnet/2.9.0/download", + "sha256": "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" } }, "targets": [ { "Library": { - "crate_name": "lzma_sys", + "crate_name": "ipnet", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8325,90 +7620,44 @@ ] } } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } } ], - "library_target_name": "lzma_sys", + "library_target_name": "ipnet", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "static" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "libc 0.2.160", - "target": "libc" - }, - { - "id": "lzma-sys 0.1.20", - "target": "build_script_build" - } + "default", + "std" ], "selects": {} }, "edition": "2018", - "version": "0.1.20" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "cc 1.1.30", - "target": "cc" - }, - { - "id": "pkg-config 0.3.30", - "target": "pkg_config" - } - ], - "selects": {} - }, - "links": "lzma" + "version": "2.9.0" }, - "license": "MIT/Apache-2.0", + "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "md-5 0.10.6": { - "name": "md-5", - "version": "0.10.6", - "package_url": "https://github.com/RustCrypto/hashes", + "is_executable 1.0.4": { + "name": "is_executable", + "version": "1.0.4", + "package_url": "https://github.com/fitzgen/is_executable", "repository": { "Http": { - "url": "https://static.crates.io/crates/md-5/0.10.6/download", - "sha256": "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" + "url": "https://static.crates.io/crates/is_executable/1.0.4/download", + "sha256": "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2" } }, "targets": [ { "Library": { - "crate_name": "md5", + "crate_name": "is_executable", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8419,55 +7668,46 @@ } } ], - "library_target_name": "md5", + "library_target_name": "is_executable", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, "deps": { - "common": [ - { - "id": "cfg-if 1.0.0", - "target": "cfg_if" - }, - { - "id": "digest 0.10.7", - "target": "digest" - } - ], - "selects": {} + "common": [], + "selects": { + "cfg(target_os = \"windows\")": [ + { + "id": "winapi 0.3.9", + "target": "winapi" + } + ] + } }, - "edition": "2018", - "version": "0.10.6" + "edition": "2021", + "version": "1.0.4" }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0/MIT", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "memchr 2.7.4": { - "name": "memchr", - "version": "2.7.4", - "package_url": "https://github.com/BurntSushi/memchr", + "is_terminal_polyfill 1.70.0": { + "name": "is_terminal_polyfill", + "version": "1.70.0", + "package_url": "https://github.com/polyfill-rs/is_terminal_polyfill", "repository": { "Http": { - "url": "https://static.crates.io/crates/memchr/2.7.4/download", - "sha256": "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + "url": "https://static.crates.io/crates/is_terminal_polyfill/1.70.0/download", + "sha256": "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" } }, "targets": [ { "Library": { - "crate_name": "memchr", + "crate_name": "is_terminal_polyfill", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8478,43 +7718,41 @@ } } ], - "library_target_name": "memchr", + "library_target_name": "is_terminal_polyfill", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", - "default", - "std" + "default" ], "selects": {} }, "edition": "2021", - "version": "2.7.4" + "version": "1.70.0" }, - "license": "Unlicense OR MIT", + "license": "MIT OR Apache-2.0", "license_ids": [ - "MIT", - "Unlicense" + "Apache-2.0", + "MIT" ], - "license_file": "LICENSE-MIT" + "license_file": "LICENSE-APACHE" }, - "mime 0.3.17": { - "name": "mime", - "version": "0.3.17", - "package_url": "https://github.com/hyperium/mime", + "itoa 1.0.11": { + "name": "itoa", + "version": "1.0.11", + "package_url": "https://github.com/dtolnay/itoa", "repository": { "Http": { - "url": "https://static.crates.io/crates/mime/0.3.17/download", - "sha256": "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + "url": "https://static.crates.io/crates/itoa/1.0.11/download", + "sha256": "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" } }, "targets": [ { "Library": { - "crate_name": "mime", + "crate_name": "itoa", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8525,13 +7763,13 @@ } } ], - "library_target_name": "mime", + "library_target_name": "itoa", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2015", - "version": "0.3.17" + "edition": "2018", + "version": "1.0.11" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -8540,20 +7778,20 @@ ], "license_file": "LICENSE-APACHE" }, - "miniz_oxide 0.7.2": { - "name": "miniz_oxide", - "version": "0.7.2", - "package_url": "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide", + "jobserver 0.1.31": { + "name": "jobserver", + "version": "0.1.31", + "package_url": "https://github.com/rust-lang/jobserver-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/miniz_oxide/0.7.2/download", - "sha256": "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" + "url": "https://static.crates.io/crates/jobserver/0.1.31/download", + "sha256": "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" } }, "targets": [ { "Library": { - "crate_name": "miniz_oxide", + "crate_name": "jobserver", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8564,45 +7802,46 @@ } } ], - "library_target_name": "miniz_oxide", + "library_target_name": "jobserver", "common_attrs": { "compile_data_glob": [ "**" ], "deps": { - "common": [ - { - "id": "adler 1.0.2", - "target": "adler" - } - ], - "selects": {} + "common": [], + "selects": { + "cfg(unix)": [ + { + "id": "libc 0.2.168", + "target": "libc" + } + ] + } }, - "edition": "2018", - "version": "0.7.2" + "edition": "2021", + "version": "0.1.31" }, - "license": "MIT OR Zlib OR Apache-2.0", + "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", - "MIT", - "Zlib" + "MIT" ], - "license_file": "LICENSE" + "license_file": "LICENSE-APACHE" }, - "miniz_oxide 0.8.0": { - "name": "miniz_oxide", - "version": "0.8.0", - "package_url": "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide", + "js-sys 0.3.69": { + "name": "js-sys", + "version": "0.3.69", + "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/js-sys", "repository": { "Http": { - "url": "https://static.crates.io/crates/miniz_oxide/0.8.0/download", - "sha256": "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" + "url": "https://static.crates.io/crates/js-sys/0.3.69/download", + "sha256": "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" } }, "targets": [ { "Library": { - "crate_name": "miniz_oxide", + "crate_name": "js_sys", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8613,51 +7852,44 @@ } } ], - "library_target_name": "miniz_oxide", + "library_target_name": "js_sys", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "with-alloc" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "adler2 2.0.0", - "target": "adler2" + "id": "wasm-bindgen 0.2.92", + "target": "wasm_bindgen" } ], "selects": {} }, - "edition": "2021", - "version": "0.8.0" + "edition": "2018", + "version": "0.3.69" }, - "license": "MIT OR Zlib OR Apache-2.0", + "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", - "MIT", - "Zlib" + "MIT" ], - "license_file": "LICENSE" + "license_file": "LICENSE-APACHE" }, - "mio 1.0.2": { - "name": "mio", - "version": "1.0.2", - "package_url": "https://github.com/tokio-rs/mio", + "libc 0.2.168": { + "name": "libc", + "version": "0.2.168", + "package_url": "https://github.com/rust-lang/libc", "repository": { "Http": { - "url": "https://static.crates.io/crates/mio/1.0.2/download", - "sha256": "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" + "url": "https://static.crates.io/crates/libc/0.2.168/download", + "sha256": "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" } }, "targets": [ { "Library": { - "crate_name": "mio", + "crate_name": "libc", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8666,78 +7898,128 @@ ] } } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } } ], - "library_target_name": "mio", + "library_target_name": "libc", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "net", - "os-ext", - "os-poll" + "default", + "std" ], - "selects": {} - }, - "deps": { - "common": [], "selects": { - "cfg(target_os = \"hermit\")": [ - { - "id": "hermit-abi 0.3.9", - "target": "hermit_abi", - "alias": "libc" - } + "aarch64-apple-darwin": [ + "extra_traits" ], - "cfg(target_os = \"wasi\")": [ - { - "id": "libc 0.2.160", - "target": "libc" - }, - { - "id": "wasi 0.11.0+wasi-snapshot-preview1", - "target": "wasi" - } + "aarch64-apple-ios": [ + "extra_traits" ], - "cfg(unix)": [ - { - "id": "libc 0.2.160", - "target": "libc" - } + "aarch64-apple-ios-sim": [ + "extra_traits" ], - "cfg(windows)": [ - { - "id": "windows-sys 0.52.0", - "target": "windows_sys" - } + "aarch64-linux-android": [ + "extra_traits" + ], + "aarch64-unknown-fuchsia": [ + "extra_traits" + ], + "aarch64-unknown-nto-qnx710": [ + "extra_traits" + ], + "armv7-linux-androideabi": [ + "extra_traits" + ], + "i686-apple-darwin": [ + "extra_traits" + ], + "i686-linux-android": [ + "extra_traits" + ], + "i686-unknown-freebsd": [ + "extra_traits" + ], + "powerpc-unknown-linux-gnu": [ + "extra_traits" + ], + "s390x-unknown-linux-gnu": [ + "extra_traits" + ], + "wasm32-wasip1": [ + "extra_traits" + ], + "x86_64-apple-darwin": [ + "extra_traits" + ], + "x86_64-apple-ios": [ + "extra_traits" + ], + "x86_64-linux-android": [ + "extra_traits" + ], + "x86_64-unknown-freebsd": [ + "extra_traits" + ], + "x86_64-unknown-fuchsia": [ + "extra_traits" ] } }, + "deps": { + "common": [ + { + "id": "libc 0.2.168", + "target": "build_script_build" + } + ], + "selects": {} + }, "edition": "2021", - "version": "1.0.2" + "version": "0.2.168" }, - "license": "MIT", + "build_script_attrs": { + "compile_data_glob": [ + "**" + ], + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0", "license_ids": [ + "Apache-2.0", "MIT" ], - "license_file": "LICENSE" + "license_file": "LICENSE-APACHE" }, - "nt-time 0.8.1": { - "name": "nt-time", - "version": "0.8.1", - "package_url": "https://github.com/sorairolake/nt-time", + "libredox 0.1.3": { + "name": "libredox", + "version": "0.1.3", + "package_url": "https://gitlab.redox-os.org/redox-os/libredox.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/nt-time/0.8.1/download", - "sha256": "2de419e64947cd8830e66beb584acc3fb42ed411d103e3c794dda355d1b374b5" + "url": "https://static.crates.io/crates/libredox/0.1.3/download", + "sha256": "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" } }, "targets": [ { "Library": { - "crate_name": "nt_time", + "crate_name": "libredox", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8748,90 +8030,47 @@ } } ], - "library_target_name": "nt_time", + "library_target_name": "libredox", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "time 0.3.36", - "target": "time" + "id": "bitflags 2.5.0", + "target": "bitflags" + }, + { + "id": "libc 0.2.168", + "target": "libc" } ], "selects": {} }, "edition": "2021", - "version": "0.8.1" - }, - "license": "Apache-2.0 OR MIT", - "license_ids": [ - "Apache-2.0", - "MIT" - ], - "license_file": "LICENSES" - }, - "num-conv 0.1.0": { - "name": "num-conv", - "version": "0.1.0", - "package_url": "https://github.com/jhpratt/num-conv", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/num-conv/0.1.0/download", - "sha256": "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - } - }, - "targets": [ - { - "Library": { - "crate_name": "num_conv", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "num_conv", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "edition": "2021", - "version": "0.1.0" + "version": "0.1.3" }, - "license": "MIT OR Apache-2.0", + "license": "MIT", "license_ids": [ - "Apache-2.0", "MIT" ], - "license_file": "LICENSE-Apache" + "license_file": "LICENSE" }, - "num-traits 0.2.19": { - "name": "num-traits", - "version": "0.2.19", - "package_url": "https://github.com/rust-num/num-traits", + "libz-sys 1.1.20": { + "name": "libz-sys", + "version": "1.1.20", + "package_url": "https://github.com/rust-lang/libz-sys", "repository": { "Http": { - "url": "https://static.crates.io/crates/num-traits/0.2.19/download", - "sha256": "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" + "url": "https://static.crates.io/crates/libz-sys/1.1.20/download", + "sha256": "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" } }, "targets": [ { "Library": { - "crate_name": "num_traits", + "crate_name": "libz_sys", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8854,7 +8093,7 @@ } } ], - "library_target_name": "num_traits", + "library_target_name": "libz_sys", "common_attrs": { "compile_data_glob": [ "**" @@ -8862,14 +8101,14 @@ "deps": { "common": [ { - "id": "num-traits 0.2.19", + "id": "libz-sys 1.1.20", "target": "build_script_build" } ], "selects": {} }, - "edition": "2021", - "version": "0.2.19" + "edition": "2018", + "version": "1.1.20" }, "build_script_attrs": { "compile_data_glob": [ @@ -8881,12 +8120,21 @@ "deps": { "common": [ { - "id": "autocfg 1.3.0", - "target": "autocfg" + "id": "cc 1.1.30", + "target": "cc" + }, + { + "id": "pkg-config 0.3.30", + "target": "pkg_config" + }, + { + "id": "vcpkg 0.2.15", + "target": "vcpkg" } ], "selects": {} - } + }, + "links": "z" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -8895,20 +8143,20 @@ ], "license_file": "LICENSE-APACHE" }, - "object 0.32.2": { - "name": "object", - "version": "0.32.2", - "package_url": "https://github.com/gimli-rs/object", + "linux-raw-sys 0.4.14": { + "name": "linux-raw-sys", + "version": "0.4.14", + "package_url": "https://github.com/sunfishcode/linux-raw-sys", "repository": { "Http": { - "url": "https://static.crates.io/crates/object/0.32.2/download", - "sha256": "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" + "url": "https://static.crates.io/crates/linux-raw-sys/0.4.14/download", + "sha256": "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" } }, "targets": [ { "Library": { - "crate_name": "object", + "crate_name": "linux_raw_sys", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8919,57 +8167,129 @@ } } ], - "library_target_name": "object", + "library_target_name": "linux_raw_sys", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "archive", - "coff", - "elf", - "macho", - "pe", - "read_core", - "unaligned", - "xcoff" + "general", + "ioctl", + "no_std" ], - "selects": {} + "selects": { + "aarch64-unknown-linux-gnu": [ + "elf", + "errno", + "std" + ], + "aarch64-unknown-nixos-gnu": [ + "elf", + "errno", + "std" + ], + "arm-unknown-linux-gnueabi": [ + "elf", + "errno", + "std" + ], + "armv7-unknown-linux-gnueabi": [ + "elf", + "errno", + "std" + ], + "i686-unknown-linux-gnu": [ + "elf", + "errno", + "std" + ], + "powerpc-unknown-linux-gnu": [ + "std" + ], + "s390x-unknown-linux-gnu": [ + "std" + ], + "x86_64-unknown-linux-gnu": [ + "elf", + "errno", + "std" + ], + "x86_64-unknown-nixos-gnu": [ + "elf", + "errno", + "std" + ] + } }, - "deps": { - "common": [ - { - "id": "memchr 2.7.4", - "target": "memchr" + "edition": "2021", + "version": "0.4.14" + }, + "license": "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "litemap 0.7.4": { + "name": "litemap", + "version": "0.7.4", + "package_url": "https://github.com/unicode-org/icu4x", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/litemap/0.7.4/download", + "sha256": "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + } + }, + "targets": [ + { + "Library": { + "crate_name": "litemap", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] } + } + } + ], + "library_target_name": "litemap", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc" ], "selects": {} }, - "edition": "2018", - "version": "0.32.2" + "edition": "2021", + "version": "0.7.4" }, - "license": "Apache-2.0 OR MIT", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "once_cell 1.19.0": { - "name": "once_cell", - "version": "1.19.0", - "package_url": "https://github.com/matklad/once_cell", + "log 0.4.22": { + "name": "log", + "version": "0.4.22", + "package_url": "https://github.com/rust-lang/log", "repository": { "Http": { - "url": "https://static.crates.io/crates/once_cell/1.19.0/download", - "sha256": "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + "url": "https://static.crates.io/crates/log/0.4.22/download", + "sha256": "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" } }, "targets": [ { "Library": { - "crate_name": "once_cell", + "crate_name": "log", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -8980,118 +8300,19 @@ } } ], - "library_target_name": "once_cell", + "library_target_name": "log", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", - "race", "std" ], - "selects": { - "aarch64-apple-darwin": [ - "default" - ], - "aarch64-apple-ios": [ - "default" - ], - "aarch64-apple-ios-sim": [ - "default" - ], - "aarch64-fuchsia": [ - "default" - ], - "aarch64-linux-android": [ - "default" - ], - "aarch64-pc-windows-msvc": [ - "default" - ], - "aarch64-unknown-linux-gnu": [ - "default" - ], - "aarch64-unknown-nixos-gnu": [ - "default" - ], - "aarch64-unknown-nto-qnx710": [ - "default" - ], - "arm-unknown-linux-gnueabi": [ - "default" - ], - "armv7-linux-androideabi": [ - "default" - ], - "armv7-unknown-linux-gnueabi": [ - "default" - ], - "i686-apple-darwin": [ - "default" - ], - "i686-linux-android": [ - "default" - ], - "i686-pc-windows-msvc": [ - "default" - ], - "i686-unknown-freebsd": [ - "default" - ], - "i686-unknown-linux-gnu": [ - "default" - ], - "powerpc-unknown-linux-gnu": [ - "default" - ], - "riscv32imc-unknown-none-elf": [ - "default" - ], - "riscv64gc-unknown-none-elf": [ - "default" - ], - "s390x-unknown-linux-gnu": [ - "default" - ], - "thumbv7em-none-eabi": [ - "default" - ], - "thumbv8m.main-none-eabi": [ - "default" - ], - "x86_64-apple-darwin": [ - "default" - ], - "x86_64-apple-ios": [ - "default" - ], - "x86_64-fuchsia": [ - "default" - ], - "x86_64-linux-android": [ - "default" - ], - "x86_64-pc-windows-msvc": [ - "default" - ], - "x86_64-unknown-freebsd": [ - "default" - ], - "x86_64-unknown-linux-gnu": [ - "default" - ], - "x86_64-unknown-nixos-gnu": [ - "default" - ], - "x86_64-unknown-none": [ - "default" - ] - } + "selects": {} }, "edition": "2021", - "version": "1.19.0" + "version": "0.4.22" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -9100,20 +8321,20 @@ ], "license_file": "LICENSE-APACHE" }, - "option-ext 0.2.0": { - "name": "option-ext", - "version": "0.2.0", - "package_url": "https://github.com/soc/option-ext.git", + "lzma-rust 0.1.7": { + "name": "lzma-rust", + "version": "0.1.7", + "package_url": "https://github.com/dyz1990/sevenz-rust/tree/main/lzma-rust", "repository": { "Http": { - "url": "https://static.crates.io/crates/option-ext/0.2.0/download", - "sha256": "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + "url": "https://static.crates.io/crates/lzma-rust/0.1.7/download", + "sha256": "5baab2bbbd7d75a144d671e9ff79270e903957d92fb7386fd39034c709bd2661" } }, "targets": [ { "Library": { - "crate_name": "option_ext", + "crate_name": "lzma_rust", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9124,34 +8345,49 @@ } } ], - "library_target_name": "option_ext", + "library_target_name": "lzma_rust", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2015", - "version": "0.2.0" + "crate_features": { + "common": [ + "encoder" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "byteorder 1.5.0", + "target": "byteorder" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.1.7" }, - "license": "MPL-2.0", + "license": "Apache-2.0", "license_ids": [ - "MPL-2.0" + "Apache-2.0" ], - "license_file": "LICENSE.txt" + "license_file": null }, - "pem 3.0.4": { - "name": "pem", - "version": "3.0.4", - "package_url": "https://github.com/jcreekmore/pem-rs.git", + "lzma-sys 0.1.20": { + "name": "lzma-sys", + "version": "0.1.20", + "package_url": "https://github.com/alexcrichton/xz2-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/pem/3.0.4/download", - "sha256": "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" + "url": "https://static.crates.io/crates/lzma-sys/0.1.20/download", + "sha256": "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" } }, "targets": [ { "Library": { - "crate_name": "pem", + "crate_name": "lzma_sys", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9160,52 +8396,90 @@ ] } } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } } ], - "library_target_name": "pem", + "library_target_name": "lzma_sys", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default", - "std" + "static" ], "selects": {} }, "deps": { "common": [ { - "id": "base64 0.22.1", - "target": "base64" + "id": "libc 0.2.168", + "target": "libc" + }, + { + "id": "lzma-sys 0.1.20", + "target": "build_script_build" } ], "selects": {} }, - "edition": "2021", - "version": "3.0.4" + "edition": "2018", + "version": "0.1.20" }, - "license": "MIT", + "build_script_attrs": { + "compile_data_glob": [ + "**" + ], + "data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "cc 1.1.30", + "target": "cc" + }, + { + "id": "pkg-config 0.3.30", + "target": "pkg_config" + } + ], + "selects": {} + }, + "links": "lzma" + }, + "license": "MIT/Apache-2.0", "license_ids": [ + "Apache-2.0", "MIT" ], - "license_file": "LICENSE.md" + "license_file": "LICENSE-APACHE" }, - "percent-encoding 2.3.1": { - "name": "percent-encoding", - "version": "2.3.1", - "package_url": "https://github.com/servo/rust-url/", + "md-5 0.10.6": { + "name": "md-5", + "version": "0.10.6", + "package_url": "https://github.com/RustCrypto/hashes", "repository": { "Http": { - "url": "https://static.crates.io/crates/percent-encoding/2.3.1/download", - "sha256": "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + "url": "https://static.crates.io/crates/md-5/0.10.6/download", + "sha256": "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" } }, "targets": [ { "Library": { - "crate_name": "percent_encoding", + "crate_name": "md5", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9216,21 +8490,33 @@ } } ], - "library_target_name": "percent_encoding", + "library_target_name": "md5", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", "default", "std" ], "selects": {} }, + "deps": { + "common": [ + { + "id": "cfg-if 1.0.0", + "target": "cfg_if" + }, + { + "id": "digest 0.10.7", + "target": "digest" + } + ], + "selects": {} + }, "edition": "2018", - "version": "2.3.1" + "version": "0.10.6" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -9239,20 +8525,20 @@ ], "license_file": "LICENSE-APACHE" }, - "pin-project 1.1.5": { - "name": "pin-project", - "version": "1.1.5", - "package_url": "https://github.com/taiki-e/pin-project", + "memchr 2.7.4": { + "name": "memchr", + "version": "2.7.4", + "package_url": "https://github.com/BurntSushi/memchr", "repository": { "Http": { - "url": "https://static.crates.io/crates/pin-project/1.1.5/download", - "sha256": "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" + "url": "https://static.crates.io/crates/memchr/2.7.4/download", + "sha256": "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" } }, "targets": [ { "Library": { - "crate_name": "pin_project", + "crate_name": "memchr", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9263,44 +8549,43 @@ } } ], - "library_target_name": "pin_project", + "library_target_name": "memchr", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2021", - "proc_macro_deps": { + "crate_features": { "common": [ - { - "id": "pin-project-internal 1.1.5", - "target": "pin_project_internal" - } + "alloc", + "default", + "std" ], "selects": {} }, - "version": "1.1.5" + "edition": "2021", + "version": "2.7.4" }, - "license": "Apache-2.0 OR MIT", + "license": "Unlicense OR MIT", "license_ids": [ - "Apache-2.0", - "MIT" + "MIT", + "Unlicense" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE-MIT" }, - "pin-project-internal 1.1.5": { - "name": "pin-project-internal", - "version": "1.1.5", - "package_url": "https://github.com/taiki-e/pin-project", + "mime 0.3.17": { + "name": "mime", + "version": "0.3.17", + "package_url": "https://github.com/hyperium/mime", "repository": { "Http": { - "url": "https://static.crates.io/crates/pin-project-internal/1.1.5/download", - "sha256": "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" + "url": "https://static.crates.io/crates/mime/0.3.17/download", + "sha256": "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" } }, "targets": [ { - "ProcMacro": { - "crate_name": "pin_project_internal", + "Library": { + "crate_name": "mime", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9311,52 +8596,35 @@ } } ], - "library_target_name": "pin_project_internal", + "library_target_name": "mime", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { - "common": [ - { - "id": "proc-macro2 1.0.88", - "target": "proc_macro2" - }, - { - "id": "quote 1.0.37", - "target": "quote" - }, - { - "id": "syn 2.0.79", - "target": "syn" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "1.1.5" + "edition": "2015", + "version": "0.3.17" }, - "license": "Apache-2.0 OR MIT", + "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "pin-project-lite 0.2.14": { - "name": "pin-project-lite", - "version": "0.2.14", - "package_url": "https://github.com/taiki-e/pin-project-lite", + "miniz_oxide 0.7.2": { + "name": "miniz_oxide", + "version": "0.7.2", + "package_url": "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide", "repository": { "Http": { - "url": "https://static.crates.io/crates/pin-project-lite/0.2.14/download", - "sha256": "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + "url": "https://static.crates.io/crates/miniz_oxide/0.7.2/download", + "sha256": "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" } }, "targets": [ { "Library": { - "crate_name": "pin_project_lite", + "crate_name": "miniz_oxide", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9367,35 +8635,45 @@ } } ], - "library_target_name": "pin_project_lite", + "library_target_name": "miniz_oxide", "common_attrs": { "compile_data_glob": [ "**" ], + "deps": { + "common": [ + { + "id": "adler 1.0.2", + "target": "adler" + } + ], + "selects": {} + }, "edition": "2018", - "version": "0.2.14" + "version": "0.7.2" }, - "license": "Apache-2.0 OR MIT", + "license": "MIT OR Zlib OR Apache-2.0", "license_ids": [ "Apache-2.0", - "MIT" + "MIT", + "Zlib" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "pin-utils 0.1.0": { - "name": "pin-utils", - "version": "0.1.0", - "package_url": "https://github.com/rust-lang-nursery/pin-utils", + "miniz_oxide 0.8.0": { + "name": "miniz_oxide", + "version": "0.8.0", + "package_url": "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide", "repository": { "Http": { - "url": "https://static.crates.io/crates/pin-utils/0.1.0/download", - "sha256": "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + "url": "https://static.crates.io/crates/miniz_oxide/0.8.0/download", + "sha256": "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" } }, "targets": [ { "Library": { - "crate_name": "pin_utils", + "crate_name": "miniz_oxide", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9406,35 +8684,51 @@ } } ], - "library_target_name": "pin_utils", + "library_target_name": "miniz_oxide", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2018", - "version": "0.1.0" + "crate_features": { + "common": [ + "with-alloc" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "adler2 2.0.0", + "target": "adler2" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.8.0" }, - "license": "MIT OR Apache-2.0", + "license": "MIT OR Zlib OR Apache-2.0", "license_ids": [ "Apache-2.0", - "MIT" + "MIT", + "Zlib" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "pkg-config 0.3.30": { - "name": "pkg-config", - "version": "0.3.30", - "package_url": "https://github.com/rust-lang/pkg-config-rs", + "mio 1.0.2": { + "name": "mio", + "version": "1.0.2", + "package_url": "https://github.com/tokio-rs/mio", "repository": { "Http": { - "url": "https://static.crates.io/crates/pkg-config/0.3.30/download", - "sha256": "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + "url": "https://static.crates.io/crates/mio/1.0.2/download", + "sha256": "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" } }, "targets": [ { "Library": { - "crate_name": "pkg_config", + "crate_name": "mio", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9445,35 +8739,76 @@ } } ], - "library_target_name": "pkg_config", + "library_target_name": "mio", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2015", - "version": "0.3.30" + "crate_features": { + "common": [ + "net", + "os-ext", + "os-poll" + ], + "selects": {} + }, + "deps": { + "common": [], + "selects": { + "cfg(target_os = \"hermit\")": [ + { + "id": "hermit-abi 0.3.9", + "target": "hermit_abi", + "alias": "libc" + } + ], + "cfg(target_os = \"wasi\")": [ + { + "id": "libc 0.2.168", + "target": "libc" + }, + { + "id": "wasi 0.11.0+wasi-snapshot-preview1", + "target": "wasi" + } + ], + "cfg(unix)": [ + { + "id": "libc 0.2.168", + "target": "libc" + } + ], + "cfg(windows)": [ + { + "id": "windows-sys 0.52.0", + "target": "windows_sys" + } + ] + } + }, + "edition": "2021", + "version": "1.0.2" }, - "license": "MIT OR Apache-2.0", + "license": "MIT", "license_ids": [ - "Apache-2.0", "MIT" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "powerfmt 0.2.0": { - "name": "powerfmt", - "version": "0.2.0", - "package_url": "https://github.com/jhpratt/powerfmt", + "nt-time 0.8.1": { + "name": "nt-time", + "version": "0.8.1", + "package_url": "https://github.com/sorairolake/nt-time", "repository": { "Http": { - "url": "https://static.crates.io/crates/powerfmt/0.2.0/download", - "sha256": "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + "url": "https://static.crates.io/crates/nt-time/0.8.1/download", + "sha256": "2de419e64947cd8830e66beb584acc3fb42ed411d103e3c794dda355d1b374b5" } }, "targets": [ { "Library": { - "crate_name": "powerfmt", + "crate_name": "nt_time", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9484,35 +8819,51 @@ } } ], - "library_target_name": "powerfmt", + "library_target_name": "nt_time", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "time 0.3.36", + "target": "time" + } + ], + "selects": {} + }, "edition": "2021", - "version": "0.2.0" + "version": "0.8.1" }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], - "license_file": "LICENSE-Apache" + "license_file": "LICENSES" }, - "ppv-lite86 0.2.17": { - "name": "ppv-lite86", - "version": "0.2.17", - "package_url": "https://github.com/cryptocorrosion/cryptocorrosion", + "num-conv 0.1.0": { + "name": "num-conv", + "version": "0.1.0", + "package_url": "https://github.com/jhpratt/num-conv", "repository": { "Http": { - "url": "https://static.crates.io/crates/ppv-lite86/0.2.17/download", - "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + "url": "https://static.crates.io/crates/num-conv/0.1.0/download", + "sha256": "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" } }, "targets": [ { "Library": { - "crate_name": "ppv_lite86", + "crate_name": "num_conv", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9523,42 +8874,35 @@ } } ], - "library_target_name": "ppv_lite86", + "library_target_name": "num_conv", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "simd", - "std" - ], - "selects": {} - }, - "edition": "2018", - "version": "0.2.17" + "edition": "2021", + "version": "0.1.0" }, - "license": "MIT/Apache-2.0", + "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", "MIT" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE-Apache" }, - "predicates 3.1.0": { - "name": "predicates", - "version": "3.1.0", - "package_url": "https://github.com/assert-rs/predicates-rs", - "repository": { + "num-traits 0.2.19": { + "name": "num-traits", + "version": "0.2.19", + "package_url": "https://github.com/rust-num/num-traits", + "repository": { "Http": { - "url": "https://static.crates.io/crates/predicates/3.1.0/download", - "sha256": "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" + "url": "https://static.crates.io/crates/num-traits/0.2.19/download", + "sha256": "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" } }, "targets": [ { "Library": { - "crate_name": "predicates", + "crate_name": "num_traits", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9567,38 +8911,53 @@ ] } } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } } ], - "library_target_name": "predicates", + "library_target_name": "num_traits", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "diff" + { + "id": "num-traits 0.2.19", + "target": "build_script_build" + } ], "selects": {} }, + "edition": "2021", + "version": "0.2.19" + }, + "build_script_attrs": { + "compile_data_glob": [ + "**" + ], + "data_glob": [ + "**" + ], "deps": { "common": [ { - "id": "anstyle 1.0.8", - "target": "anstyle" - }, - { - "id": "difflib 0.4.0", - "target": "difflib" - }, - { - "id": "predicates-core 1.0.6", - "target": "predicates_core" + "id": "autocfg 1.3.0", + "target": "autocfg" } ], "selects": {} - }, - "edition": "2021", - "version": "3.1.0" + } }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -9607,20 +8966,20 @@ ], "license_file": "LICENSE-APACHE" }, - "predicates-core 1.0.6": { - "name": "predicates-core", - "version": "1.0.6", - "package_url": "https://github.com/assert-rs/predicates-rs/tree/master/crates/core", + "object 0.32.2": { + "name": "object", + "version": "0.32.2", + "package_url": "https://github.com/gimli-rs/object", "repository": { "Http": { - "url": "https://static.crates.io/crates/predicates-core/1.0.6/download", - "sha256": "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" + "url": "https://static.crates.io/crates/object/0.32.2/download", + "sha256": "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" } }, "targets": [ { "Library": { - "crate_name": "predicates_core", + "crate_name": "object", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9631,35 +8990,57 @@ } } ], - "library_target_name": "predicates_core", + "library_target_name": "object", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2021", - "version": "1.0.6" + "crate_features": { + "common": [ + "archive", + "coff", + "elf", + "macho", + "pe", + "read_core", + "unaligned", + "xcoff" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "memchr 2.7.4", + "target": "memchr" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.32.2" }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "predicates-tree 1.0.9": { - "name": "predicates-tree", - "version": "1.0.9", - "package_url": "https://github.com/assert-rs/predicates-rs/tree/master/crates/tree", + "once_cell 1.19.0": { + "name": "once_cell", + "version": "1.19.0", + "package_url": "https://github.com/matklad/once_cell", "repository": { "Http": { - "url": "https://static.crates.io/crates/predicates-tree/1.0.9/download", - "sha256": "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" + "url": "https://static.crates.io/crates/once_cell/1.19.0/download", + "sha256": "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" } }, "targets": [ { "Library": { - "crate_name": "predicates_tree", + "crate_name": "once_cell", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9670,26 +9051,118 @@ } } ], - "library_target_name": "predicates_tree", + "library_target_name": "once_cell", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "predicates-core 1.0.6", - "target": "predicates_core" - }, - { - "id": "termtree 0.4.1", - "target": "termtree" - } + "alloc", + "race", + "std" ], - "selects": {} + "selects": { + "aarch64-apple-darwin": [ + "default" + ], + "aarch64-apple-ios": [ + "default" + ], + "aarch64-apple-ios-sim": [ + "default" + ], + "aarch64-linux-android": [ + "default" + ], + "aarch64-pc-windows-msvc": [ + "default" + ], + "aarch64-unknown-fuchsia": [ + "default" + ], + "aarch64-unknown-linux-gnu": [ + "default" + ], + "aarch64-unknown-nixos-gnu": [ + "default" + ], + "aarch64-unknown-nto-qnx710": [ + "default" + ], + "arm-unknown-linux-gnueabi": [ + "default" + ], + "armv7-linux-androideabi": [ + "default" + ], + "armv7-unknown-linux-gnueabi": [ + "default" + ], + "i686-apple-darwin": [ + "default" + ], + "i686-linux-android": [ + "default" + ], + "i686-pc-windows-msvc": [ + "default" + ], + "i686-unknown-freebsd": [ + "default" + ], + "i686-unknown-linux-gnu": [ + "default" + ], + "powerpc-unknown-linux-gnu": [ + "default" + ], + "riscv32imc-unknown-none-elf": [ + "default" + ], + "riscv64gc-unknown-none-elf": [ + "default" + ], + "s390x-unknown-linux-gnu": [ + "default" + ], + "thumbv7em-none-eabi": [ + "default" + ], + "thumbv8m.main-none-eabi": [ + "default" + ], + "x86_64-apple-darwin": [ + "default" + ], + "x86_64-apple-ios": [ + "default" + ], + "x86_64-linux-android": [ + "default" + ], + "x86_64-pc-windows-msvc": [ + "default" + ], + "x86_64-unknown-freebsd": [ + "default" + ], + "x86_64-unknown-fuchsia": [ + "default" + ], + "x86_64-unknown-linux-gnu": [ + "default" + ], + "x86_64-unknown-nixos-gnu": [ + "default" + ], + "x86_64-unknown-none": [ + "default" + ] + } }, "edition": "2021", - "version": "1.0.9" + "version": "1.19.0" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -9698,20 +9171,20 @@ ], "license_file": "LICENSE-APACHE" }, - "proc-macro2 1.0.88": { - "name": "proc-macro2", - "version": "1.0.88", - "package_url": "https://github.com/dtolnay/proc-macro2", + "option-ext 0.2.0": { + "name": "option-ext", + "version": "0.2.0", + "package_url": "https://github.com/soc/option-ext.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/proc-macro2/1.0.88/download", - "sha256": "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" + "url": "https://static.crates.io/crates/option-ext/0.2.0/download", + "sha256": "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" } }, "targets": [ { "Library": { - "crate_name": "proc_macro2", + "crate_name": "option_ext", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9720,77 +9193,36 @@ ] } } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } } ], - "library_target_name": "proc_macro2", + "library_target_name": "option_ext", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "proc-macro" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "proc-macro2 1.0.88", - "target": "build_script_build" - }, - { - "id": "unicode-ident 1.0.13", - "target": "unicode_ident" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "1.0.88" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ] + "edition": "2015", + "version": "0.2.0" }, - "license": "MIT OR Apache-2.0", + "license": "MPL-2.0", "license_ids": [ - "Apache-2.0", - "MIT" + "MPL-2.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE.txt" }, - "quinn 0.11.3": { - "name": "quinn", - "version": "0.11.3", - "package_url": "https://github.com/quinn-rs/quinn", + "pem 3.0.4": { + "name": "pem", + "version": "3.0.4", + "package_url": "https://github.com/jcreekmore/pem-rs.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/quinn/0.11.3/download", - "sha256": "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" + "url": "https://static.crates.io/crates/pem/3.0.4/download", + "sha256": "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" } }, "targets": [ { "Library": { - "crate_name": "quinn", + "crate_name": "pem", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9801,78 +9233,50 @@ } } ], - "library_target_name": "quinn", + "library_target_name": "pem", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "bytes 1.6.0", - "target": "bytes" - }, - { - "id": "pin-project-lite 0.2.14", - "target": "pin_project_lite" - }, - { - "id": "quinn-proto 0.11.6", - "target": "quinn_proto", - "alias": "proto" - }, - { - "id": "quinn-udp 0.5.4", - "target": "quinn_udp", - "alias": "udp" - }, - { - "id": "rustc-hash 2.0.0", - "target": "rustc_hash" - }, - { - "id": "socket2 0.5.7", - "target": "socket2" - }, - { - "id": "thiserror 1.0.64", - "target": "thiserror" - }, - { - "id": "tokio 1.40.0", - "target": "tokio" - }, - { - "id": "tracing 0.1.40", - "target": "tracing" + "id": "base64 0.22.1", + "target": "base64" } ], "selects": {} }, "edition": "2021", - "version": "0.11.3" + "version": "3.0.4" }, - "license": "MIT OR Apache-2.0", + "license": "MIT", "license_ids": [ - "Apache-2.0", "MIT" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE.md" }, - "quinn-proto 0.11.6": { - "name": "quinn-proto", - "version": "0.11.6", - "package_url": "https://github.com/quinn-rs/quinn", + "percent-encoding 2.3.1": { + "name": "percent-encoding", + "version": "2.3.1", + "package_url": "https://github.com/servo/rust-url/", "repository": { "Http": { - "url": "https://static.crates.io/crates/quinn-proto/0.11.6/download", - "sha256": "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" + "url": "https://static.crates.io/crates/percent-encoding/2.3.1/download", + "sha256": "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" } }, "targets": [ { "Library": { - "crate_name": "quinn_proto", + "crate_name": "percent_encoding", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9883,46 +9287,117 @@ } } ], - "library_target_name": "quinn_proto", + "library_target_name": "percent_encoding", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "bytes 1.6.0", - "target": "bytes" - }, - { - "id": "rand 0.8.5", - "target": "rand" - }, - { - "id": "rustc-hash 2.0.0", - "target": "rustc_hash" - }, - { - "id": "slab 0.4.9", - "target": "slab" - }, - { - "id": "thiserror 1.0.64", - "target": "thiserror" - }, - { - "id": "tinyvec 1.6.0", - "target": "tinyvec" - }, - { - "id": "tracing 0.1.40", - "target": "tracing" - } + "alloc", + "std" ], - "selects": {} + "selects": { + "aarch64-apple-darwin": [ + "default" + ], + "aarch64-apple-ios": [ + "default" + ], + "aarch64-apple-ios-sim": [ + "default" + ], + "aarch64-linux-android": [ + "default" + ], + "aarch64-pc-windows-msvc": [ + "default" + ], + "aarch64-unknown-fuchsia": [ + "default" + ], + "aarch64-unknown-linux-gnu": [ + "default" + ], + "aarch64-unknown-nixos-gnu": [ + "default" + ], + "aarch64-unknown-nto-qnx710": [ + "default" + ], + "arm-unknown-linux-gnueabi": [ + "default" + ], + "armv7-linux-androideabi": [ + "default" + ], + "armv7-unknown-linux-gnueabi": [ + "default" + ], + "i686-apple-darwin": [ + "default" + ], + "i686-linux-android": [ + "default" + ], + "i686-pc-windows-msvc": [ + "default" + ], + "i686-unknown-freebsd": [ + "default" + ], + "i686-unknown-linux-gnu": [ + "default" + ], + "powerpc-unknown-linux-gnu": [ + "default" + ], + "riscv32imc-unknown-none-elf": [ + "default" + ], + "riscv64gc-unknown-none-elf": [ + "default" + ], + "s390x-unknown-linux-gnu": [ + "default" + ], + "thumbv7em-none-eabi": [ + "default" + ], + "thumbv8m.main-none-eabi": [ + "default" + ], + "x86_64-apple-darwin": [ + "default" + ], + "x86_64-apple-ios": [ + "default" + ], + "x86_64-linux-android": [ + "default" + ], + "x86_64-pc-windows-msvc": [ + "default" + ], + "x86_64-unknown-freebsd": [ + "default" + ], + "x86_64-unknown-fuchsia": [ + "default" + ], + "x86_64-unknown-linux-gnu": [ + "default" + ], + "x86_64-unknown-nixos-gnu": [ + "default" + ], + "x86_64-unknown-none": [ + "default" + ] + } }, - "edition": "2021", - "version": "0.11.6" + "edition": "2018", + "version": "2.3.1" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -9931,20 +9406,20 @@ ], "license_file": "LICENSE-APACHE" }, - "quinn-udp 0.5.4": { - "name": "quinn-udp", - "version": "0.5.4", - "package_url": "https://github.com/quinn-rs/quinn", + "pin-project 1.1.5": { + "name": "pin-project", + "version": "1.1.5", + "package_url": "https://github.com/taiki-e/pin-project", "repository": { "Http": { - "url": "https://static.crates.io/crates/quinn-udp/0.5.4/download", - "sha256": "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" + "url": "https://static.crates.io/crates/pin-project/1.1.5/download", + "sha256": "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" } }, "targets": [ { "Library": { - "crate_name": "quinn_udp", + "crate_name": "pin_project", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -9955,59 +9430,44 @@ } } ], - "library_target_name": "quinn_udp", + "library_target_name": "pin_project", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "edition": "2021", + "proc_macro_deps": { "common": [ { - "id": "libc 0.2.160", - "target": "libc" - }, - { - "id": "socket2 0.5.7", - "target": "socket2" + "id": "pin-project-internal 1.1.5", + "target": "pin_project_internal" } ], - "selects": { - "cfg(windows)": [ - { - "id": "once_cell 1.19.0", - "target": "once_cell" - }, - { - "id": "windows-sys 0.52.0", - "target": "windows_sys" - } - ] - } + "selects": {} }, - "edition": "2021", - "version": "0.5.4" + "version": "1.1.5" }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "quote 1.0.37": { - "name": "quote", - "version": "1.0.37", - "package_url": "https://github.com/dtolnay/quote", + "pin-project-internal 1.1.5": { + "name": "pin-project-internal", + "version": "1.1.5", + "package_url": "https://github.com/taiki-e/pin-project", "repository": { "Http": { - "url": "https://static.crates.io/crates/quote/1.0.37/download", - "sha256": "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" + "url": "https://static.crates.io/crates/pin-project-internal/1.1.5/download", + "sha256": "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" } }, "targets": [ { - "Library": { - "crate_name": "quote", + "ProcMacro": { + "crate_name": "pin_project_internal", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10018,51 +9478,52 @@ } } ], - "library_target_name": "quote", + "library_target_name": "pin_project_internal", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "proc-macro" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" + }, + { + "id": "quote 1.0.37", + "target": "quote" + }, + { + "id": "syn 2.0.90", + "target": "syn" } ], "selects": {} }, - "edition": "2018", - "version": "1.0.37" + "edition": "2021", + "version": "1.1.5" }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "rand 0.8.5": { - "name": "rand", - "version": "0.8.5", - "package_url": "https://github.com/rust-random/rand", + "pin-project-lite 0.2.14": { + "name": "pin-project-lite", + "version": "0.2.14", + "package_url": "https://github.com/taiki-e/pin-project-lite", "repository": { "Http": { - "url": "https://static.crates.io/crates/rand/0.8.5/download", - "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" + "url": "https://static.crates.io/crates/pin-project-lite/0.2.14/download", + "sha256": "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" } }, "targets": [ { "Library": { - "crate_name": "rand", + "crate_name": "pin_project_lite", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10073,205 +9534,35 @@ } } ], - "library_target_name": "rand", + "library_target_name": "pin_project_lite", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "alloc", - "default", - "getrandom", - "libc", - "rand_chacha", - "std", - "std_rng" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "rand_chacha 0.3.1", - "target": "rand_chacha" - }, - { - "id": "rand_core 0.6.4", - "target": "rand_core" - } - ], - "selects": { - "aarch64-apple-darwin": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-apple-ios": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-apple-ios-sim": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-fuchsia": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-linux-android": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-unknown-nixos-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "aarch64-unknown-nto-qnx710": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "arm-unknown-linux-gnueabi": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "armv7-linux-androideabi": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "armv7-unknown-linux-gnueabi": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "i686-apple-darwin": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "i686-linux-android": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "i686-unknown-freebsd": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "i686-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "powerpc-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "s390x-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-apple-darwin": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-apple-ios": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-fuchsia": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-linux-android": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-unknown-freebsd": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-unknown-linux-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "x86_64-unknown-nixos-gnu": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ] - } - }, "edition": "2018", - "version": "0.8.5" + "version": "0.2.14" }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "rand_chacha 0.3.1": { - "name": "rand_chacha", - "version": "0.3.1", - "package_url": "https://github.com/rust-random/rand", + "pin-utils 0.1.0": { + "name": "pin-utils", + "version": "0.1.0", + "package_url": "https://github.com/rust-lang-nursery/pin-utils", "repository": { "Http": { - "url": "https://static.crates.io/crates/rand_chacha/0.3.1/download", - "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" + "url": "https://static.crates.io/crates/pin-utils/0.1.0/download", + "sha256": "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" } }, "targets": [ { "Library": { - "crate_name": "rand_chacha", + "crate_name": "pin_utils", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10282,32 +9573,13 @@ } } ], - "library_target_name": "rand_chacha", + "library_target_name": "pin_utils", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "std" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "ppv-lite86 0.2.17", - "target": "ppv_lite86" - }, - { - "id": "rand_core 0.6.4", - "target": "rand_core" - } - ], - "selects": {} - }, "edition": "2018", - "version": "0.3.1" + "version": "0.1.0" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -10316,20 +9588,20 @@ ], "license_file": "LICENSE-APACHE" }, - "rand_core 0.6.4": { - "name": "rand_core", - "version": "0.6.4", - "package_url": "https://github.com/rust-random/rand", + "pkg-config 0.3.30": { + "name": "pkg-config", + "version": "0.3.30", + "package_url": "https://github.com/rust-lang/pkg-config-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/rand_core/0.6.4/download", - "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + "url": "https://static.crates.io/crates/pkg-config/0.3.30/download", + "sha256": "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" } }, "targets": [ { "Library": { - "crate_name": "rand_core", + "crate_name": "pkg_config", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10340,30 +9612,13 @@ } } ], - "library_target_name": "rand_core", + "library_target_name": "pkg_config", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "alloc", - "getrandom", - "std" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "getrandom 0.2.15", - "target": "getrandom" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.6.4" + "edition": "2015", + "version": "0.3.30" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -10372,20 +9627,20 @@ ], "license_file": "LICENSE-APACHE" }, - "redox_syscall 0.4.1": { - "name": "redox_syscall", - "version": "0.4.1", - "package_url": "https://gitlab.redox-os.org/redox-os/syscall", + "powerfmt 0.2.0": { + "name": "powerfmt", + "version": "0.2.0", + "package_url": "https://github.com/jhpratt/powerfmt", "repository": { "Http": { - "url": "https://static.crates.io/crates/redox_syscall/0.4.1/download", - "sha256": "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" + "url": "https://static.crates.io/crates/powerfmt/0.2.0/download", + "sha256": "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" } }, "targets": [ { "Library": { - "crate_name": "syscall", + "crate_name": "powerfmt", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10396,43 +9651,35 @@ } } ], - "library_target_name": "syscall", + "library_target_name": "powerfmt", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { - "common": [ - { - "id": "bitflags 1.3.2", - "target": "bitflags" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.4.1" + "edition": "2021", + "version": "0.2.0" }, - "license": "MIT", + "license": "MIT OR Apache-2.0", "license_ids": [ + "Apache-2.0", "MIT" ], - "license_file": "LICENSE" + "license_file": "LICENSE-Apache" }, - "redox_users 0.4.5": { - "name": "redox_users", - "version": "0.4.5", - "package_url": "https://gitlab.redox-os.org/redox-os/users", + "ppv-lite86 0.2.17": { + "name": "ppv-lite86", + "version": "0.2.17", + "package_url": "https://github.com/cryptocorrosion/cryptocorrosion", "repository": { "Http": { - "url": "https://static.crates.io/crates/redox_users/0.4.5/download", - "sha256": "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" + "url": "https://static.crates.io/crates/ppv-lite86/0.2.17/download", + "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" } }, "targets": [ { "Library": { - "crate_name": "redox_users", + "crate_name": "ppv_lite86", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10443,51 +9690,42 @@ } } ], - "library_target_name": "redox_users", + "library_target_name": "ppv_lite86", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "getrandom 0.2.15", - "target": "getrandom" - }, - { - "id": "libredox 0.1.3", - "target": "libredox" - }, - { - "id": "thiserror 1.0.64", - "target": "thiserror" - } + "simd", + "std" ], "selects": {} }, - "edition": "2021", - "version": "0.4.5" + "edition": "2018", + "version": "0.2.17" }, - "license": "MIT", + "license": "MIT/Apache-2.0", "license_ids": [ + "Apache-2.0", "MIT" ], - "license_file": "LICENSE" + "license_file": "LICENSE-APACHE" }, - "regex 1.11.1": { - "name": "regex", - "version": "1.11.1", - "package_url": "https://github.com/rust-lang/regex", + "predicates 3.1.0": { + "name": "predicates", + "version": "3.1.0", + "package_url": "https://github.com/assert-rs/predicates-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/regex/1.11.1/download", - "sha256": "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" + "url": "https://static.crates.io/crates/predicates/3.1.0/download", + "sha256": "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" } }, "targets": [ { "Library": { - "crate_name": "regex", + "crate_name": "predicates", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10498,56 +9736,36 @@ } } ], - "library_target_name": "regex", + "library_target_name": "predicates", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default", - "perf", - "perf-backtrack", - "perf-cache", - "perf-dfa", - "perf-inline", - "perf-literal", - "perf-onepass", - "std", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment" + "diff" ], "selects": {} }, "deps": { "common": [ { - "id": "aho-corasick 1.1.3", - "target": "aho_corasick" - }, - { - "id": "memchr 2.7.4", - "target": "memchr" + "id": "anstyle 1.0.8", + "target": "anstyle" }, { - "id": "regex-automata 0.4.8", - "target": "regex_automata" + "id": "difflib 0.4.0", + "target": "difflib" }, { - "id": "regex-syntax 0.8.5", - "target": "regex_syntax" + "id": "predicates-core 1.0.6", + "target": "predicates_core" } ], "selects": {} }, "edition": "2021", - "version": "1.11.1" + "version": "3.1.0" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -10556,20 +9774,20 @@ ], "license_file": "LICENSE-APACHE" }, - "regex-automata 0.4.8": { - "name": "regex-automata", - "version": "0.4.8", - "package_url": "https://github.com/rust-lang/regex/tree/master/regex-automata", + "predicates-core 1.0.6": { + "name": "predicates-core", + "version": "1.0.6", + "package_url": "https://github.com/assert-rs/predicates-rs/tree/master/crates/core", "repository": { "Http": { - "url": "https://static.crates.io/crates/regex-automata/0.4.8/download", - "sha256": "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" + "url": "https://static.crates.io/crates/predicates-core/1.0.6/download", + "sha256": "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" } }, "targets": [ { "Library": { - "crate_name": "regex_automata", + "crate_name": "predicates_core", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10580,58 +9798,13 @@ } } ], - "library_target_name": "regex_automata", + "library_target_name": "predicates_core", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "alloc", - "dfa-onepass", - "dfa-search", - "hybrid", - "meta", - "nfa-backtrack", - "nfa-pikevm", - "nfa-thompson", - "perf-inline", - "perf-literal", - "perf-literal-multisubstring", - "perf-literal-substring", - "std", - "syntax", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment", - "unicode-word-boundary" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "aho-corasick 1.1.3", - "target": "aho_corasick" - }, - { - "id": "memchr 2.7.4", - "target": "memchr" - }, - { - "id": "regex-syntax 0.8.5", - "target": "regex_syntax" - } - ], - "selects": {} - }, "edition": "2021", - "version": "0.4.8" + "version": "1.0.6" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -10640,20 +9813,20 @@ ], "license_file": "LICENSE-APACHE" }, - "regex-syntax 0.8.5": { - "name": "regex-syntax", - "version": "0.8.5", - "package_url": "https://github.com/rust-lang/regex/tree/master/regex-syntax", + "predicates-tree 1.0.9": { + "name": "predicates-tree", + "version": "1.0.9", + "package_url": "https://github.com/assert-rs/predicates-rs/tree/master/crates/tree", "repository": { "Http": { - "url": "https://static.crates.io/crates/regex-syntax/0.8.5/download", - "sha256": "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + "url": "https://static.crates.io/crates/predicates-tree/1.0.9/download", + "sha256": "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" } }, "targets": [ { "Library": { - "crate_name": "regex_syntax", + "crate_name": "predicates_tree", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10664,28 +9837,26 @@ } } ], - "library_target_name": "regex_syntax", + "library_target_name": "predicates_tree", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "default", - "std", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment" + { + "id": "predicates-core 1.0.6", + "target": "predicates_core" + }, + { + "id": "termtree 0.4.1", + "target": "termtree" + } ], "selects": {} }, "edition": "2021", - "version": "0.8.5" + "version": "1.0.9" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -10694,20 +9865,20 @@ ], "license_file": "LICENSE-APACHE" }, - "relative-path 1.9.3": { - "name": "relative-path", - "version": "1.9.3", - "package_url": "https://github.com/udoprog/relative-path", + "proc-macro2 1.0.92": { + "name": "proc-macro2", + "version": "1.0.92", + "package_url": "https://github.com/dtolnay/proc-macro2", "repository": { "Http": { - "url": "https://static.crates.io/crates/relative-path/1.9.3/download", - "sha256": "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" + "url": "https://static.crates.io/crates/proc-macro2/1.0.92/download", + "sha256": "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" } }, "targets": [ { "Library": { - "crate_name": "relative_path", + "crate_name": "proc_macro2", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10716,43 +9887,77 @@ ] } } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } } ], - "library_target_name": "relative_path", + "library_target_name": "proc_macro2", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default" + "default", + "proc-macro" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "proc-macro2 1.0.92", + "target": "build_script_build" + }, + { + "id": "unicode-ident 1.0.13", + "target": "unicode_ident" + } ], "selects": {} }, "edition": "2021", - "version": "1.9.3" + "version": "1.0.92" + }, + "build_script_attrs": { + "compile_data_glob": [ + "**" + ], + "data_glob": [ + "**" + ] }, "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", "MIT" ], - "license_file": null + "license_file": "LICENSE-APACHE" }, - "reqwest 0.11.27": { - "name": "reqwest", - "version": "0.11.27", - "package_url": "https://github.com/seanmonstar/reqwest", + "quinn 0.11.3": { + "name": "quinn", + "version": "0.11.3", + "package_url": "https://github.com/quinn-rs/quinn", "repository": { "Http": { - "url": "https://static.crates.io/crates/reqwest/0.11.27/download", - "sha256": "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" + "url": "https://static.crates.io/crates/quinn/0.11.3/download", + "sha256": "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" } }, "targets": [ { "Library": { - "crate_name": "reqwest", + "crate_name": "quinn", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -10763,857 +9968,891 @@ } } ], - "library_target_name": "reqwest", + "library_target_name": "quinn", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "__rustls", - "__tls", - "blocking", - "hyper-rustls", - "rustls", - "rustls-tls", - "rustls-tls-webpki-roots", - "tokio-rustls", - "webpki-roots" + { + "id": "bytes 1.9.0", + "target": "bytes" + }, + { + "id": "pin-project-lite 0.2.14", + "target": "pin_project_lite" + }, + { + "id": "quinn-proto 0.11.6", + "target": "quinn_proto", + "alias": "proto" + }, + { + "id": "quinn-udp 0.5.4", + "target": "quinn_udp", + "alias": "udp" + }, + { + "id": "rustc-hash 2.0.0", + "target": "rustc_hash" + }, + { + "id": "socket2 0.5.7", + "target": "socket2" + }, + { + "id": "thiserror 1.0.69", + "target": "thiserror" + }, + { + "id": "tokio 1.42.0", + "target": "tokio" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + } ], "selects": {} }, + "edition": "2021", + "version": "0.11.3" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "quinn-proto 0.11.6": { + "name": "quinn-proto", + "version": "0.11.6", + "package_url": "https://github.com/quinn-rs/quinn", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/quinn-proto/0.11.6/download", + "sha256": "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" + } + }, + "targets": [ + { + "Library": { + "crate_name": "quinn_proto", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "quinn_proto", + "common_attrs": { + "compile_data_glob": [ + "**" + ], "deps": { "common": [ { - "id": "base64 0.21.7", - "target": "base64" - }, - { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "futures-core 0.3.30", - "target": "futures_core" + "id": "rand 0.8.5", + "target": "rand" }, { - "id": "futures-util 0.3.30", - "target": "futures_util" + "id": "rustc-hash 2.0.0", + "target": "rustc_hash" }, { - "id": "http 0.2.12", - "target": "http" + "id": "slab 0.4.9", + "target": "slab" }, { - "id": "serde 1.0.210", - "target": "serde" + "id": "thiserror 1.0.69", + "target": "thiserror" }, { - "id": "serde_urlencoded 0.7.1", - "target": "serde_urlencoded" + "id": "tinyvec 1.6.0", + "target": "tinyvec" }, { - "id": "sync_wrapper 0.1.2", - "target": "sync_wrapper" - }, + "id": "tracing 0.1.40", + "target": "tracing" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.11.6" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "quinn-udp 0.5.4": { + "name": "quinn-udp", + "version": "0.5.4", + "package_url": "https://github.com/quinn-rs/quinn", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/quinn-udp/0.5.4/download", + "sha256": "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" + } + }, + "targets": [ + { + "Library": { + "crate_name": "quinn_udp", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "quinn_udp", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ { - "id": "tower-service 0.3.2", - "target": "tower_service" + "id": "libc 0.2.168", + "target": "libc" }, { - "id": "url 2.5.0", - "target": "url" + "id": "socket2 0.5.7", + "target": "socket2" } ], "selects": { - "aarch64-apple-darwin": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, + "cfg(windows)": [ { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" + "id": "once_cell 1.19.0", + "target": "once_cell" }, { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, + "id": "windows-sys 0.52.0", + "target": "windows_sys" + } + ] + } + }, + "edition": "2021", + "version": "0.5.4" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "quote 1.0.37": { + "name": "quote", + "version": "1.0.37", + "package_url": "https://github.com/dtolnay/quote", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/quote/1.0.37/download", + "sha256": "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" + } + }, + "targets": [ + { + "Library": { + "crate_name": "quote", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "quote", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "proc-macro" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "1.0.37" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "rand 0.8.5": { + "name": "rand", + "version": "0.8.5", + "package_url": "https://github.com/rust-random/rand", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/rand/0.8.5/download", + "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" + } + }, + "targets": [ + { + "Library": { + "crate_name": "rand", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "rand", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "default", + "getrandom", + "libc", + "rand_chacha", + "std", + "std_rng" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "rand_chacha 0.3.1", + "target": "rand_chacha" + }, + { + "id": "rand_core 0.6.4", + "target": "rand_core" + } + ], + "selects": { + "aarch64-apple-darwin": [ { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" + "id": "libc 0.2.168", + "target": "libc" } ], "aarch64-apple-ios": [ { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" + "id": "libc 0.2.168", + "target": "libc" } ], "aarch64-apple-ios-sim": [ { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "aarch64-linux-android": [ { - "id": "rustls 0.21.12", - "target": "rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "aarch64-unknown-fuchsia": [ { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "aarch64-unknown-linux-gnu": [ { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "aarch64-unknown-nixos-gnu": [ { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" + "id": "libc 0.2.168", + "target": "libc" } ], - "aarch64-fuchsia": [ + "aarch64-unknown-nto-qnx710": [ { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "arm-unknown-linux-gnueabi": [ { - "id": "rustls 0.21.12", - "target": "rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "armv7-linux-androideabi": [ { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "armv7-unknown-linux-gnueabi": [ { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "i686-apple-darwin": [ { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" + "id": "libc 0.2.168", + "target": "libc" } ], - "aarch64-linux-android": [ + "i686-linux-android": [ { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "i686-unknown-freebsd": [ { - "id": "rustls 0.21.12", - "target": "rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "i686-unknown-linux-gnu": [ { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "powerpc-unknown-linux-gnu": [ { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "s390x-unknown-linux-gnu": [ { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" + "id": "libc 0.2.168", + "target": "libc" } ], - "aarch64-pc-windows-msvc": [ + "x86_64-apple-darwin": [ { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "x86_64-apple-ios": [ { - "id": "rustls 0.21.12", - "target": "rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "x86_64-linux-android": [ { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "x86_64-unknown-freebsd": [ { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "x86_64-unknown-fuchsia": [ { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" + "id": "libc 0.2.168", + "target": "libc" } ], - "aarch64-unknown-linux-gnu": [ + "x86_64-unknown-linux-gnu": [ { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, + "id": "libc 0.2.168", + "target": "libc" + } + ], + "x86_64-unknown-nixos-gnu": [ { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "aarch64-unknown-nixos-gnu": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "aarch64-unknown-nto-qnx710": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "arm-unknown-linux-gnueabi": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "armv7-linux-androideabi": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "armv7-unknown-linux-gnueabi": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "cfg(not(target_arch = \"wasm32\"))": [ - { - "id": "encoding_rs 0.8.34", - "target": "encoding_rs" - }, - { - "id": "h2 0.3.26", - "target": "h2" - }, - { - "id": "http-body 0.4.6", - "target": "http_body" - }, - { - "id": "hyper 0.14.28", - "target": "hyper" - }, - { - "id": "ipnet 2.9.0", - "target": "ipnet" - }, - { - "id": "log 0.4.22", - "target": "log" - }, - { - "id": "mime 0.3.17", - "target": "mime" - }, - { - "id": "once_cell 1.19.0", - "target": "once_cell" - }, - { - "id": "percent-encoding 2.3.1", - "target": "percent_encoding" - }, - { - "id": "pin-project-lite 0.2.14", - "target": "pin_project_lite" - }, - { - "id": "tokio 1.40.0", - "target": "tokio" - } - ], - "cfg(target_arch = \"wasm32\")": [ - { - "id": "js-sys 0.3.69", - "target": "js_sys" - }, - { - "id": "serde_json 1.0.128", - "target": "serde_json" - }, - { - "id": "wasm-bindgen 0.2.92", - "target": "wasm_bindgen" - }, - { - "id": "wasm-bindgen-futures 0.4.42", - "target": "wasm_bindgen_futures" - }, - { - "id": "web-sys 0.3.69", - "target": "web_sys" - } - ], - "cfg(target_os = \"macos\")": [ - { - "id": "system-configuration 0.5.1", - "target": "system_configuration" - } - ], - "cfg(windows)": [ - { - "id": "winreg 0.50.0", - "target": "winreg" - } - ], - "i686-apple-darwin": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "i686-linux-android": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "i686-pc-windows-msvc": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "i686-unknown-freebsd": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "i686-unknown-linux-gnu": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "powerpc-unknown-linux-gnu": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "riscv32imc-unknown-none-elf": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "riscv64gc-unknown-none-elf": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "s390x-unknown-linux-gnu": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "thumbv7em-none-eabi": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "thumbv8m.main-none-eabi": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-apple-darwin": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-apple-ios": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-fuchsia": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-linux-android": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-pc-windows-msvc": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-unknown-freebsd": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-unknown-linux-gnu": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-unknown-nixos-gnu": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" - } - ], - "x86_64-unknown-none": [ - { - "id": "hyper-rustls 0.24.2", - "target": "hyper_rustls" - }, - { - "id": "rustls 0.21.12", - "target": "rustls" - }, - { - "id": "rustls-pemfile 1.0.4", - "target": "rustls_pemfile" - }, - { - "id": "tokio-rustls 0.24.1", - "target": "tokio_rustls" - }, - { - "id": "webpki-roots 0.25.4", - "target": "webpki_roots" + "id": "libc 0.2.168", + "target": "libc" } ] } }, + "edition": "2018", + "version": "0.8.5" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "rand_chacha 0.3.1": { + "name": "rand_chacha", + "version": "0.3.1", + "package_url": "https://github.com/rust-random/rand", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/rand_chacha/0.3.1/download", + "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" + } + }, + "targets": [ + { + "Library": { + "crate_name": "rand_chacha", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "rand_chacha", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "ppv-lite86 0.2.17", + "target": "ppv_lite86" + }, + { + "id": "rand_core 0.6.4", + "target": "rand_core" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.3.1" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "rand_core 0.6.4": { + "name": "rand_core", + "version": "0.6.4", + "package_url": "https://github.com/rust-random/rand", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/rand_core/0.6.4/download", + "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + } + }, + "targets": [ + { + "Library": { + "crate_name": "rand_core", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "rand_core", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "getrandom", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "getrandom 0.2.15", + "target": "getrandom" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.6.4" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "redox_syscall 0.4.1": { + "name": "redox_syscall", + "version": "0.4.1", + "package_url": "https://gitlab.redox-os.org/redox-os/syscall", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/redox_syscall/0.4.1/download", + "sha256": "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" + } + }, + "targets": [ + { + "Library": { + "crate_name": "syscall", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "syscall", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "bitflags 1.3.2", + "target": "bitflags" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.4.1" + }, + "license": "MIT", + "license_ids": [ + "MIT" + ], + "license_file": "LICENSE" + }, + "redox_users 0.4.5": { + "name": "redox_users", + "version": "0.4.5", + "package_url": "https://gitlab.redox-os.org/redox-os/users", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/redox_users/0.4.5/download", + "sha256": "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" + } + }, + "targets": [ + { + "Library": { + "crate_name": "redox_users", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "redox_users", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "getrandom 0.2.15", + "target": "getrandom" + }, + { + "id": "libredox 0.1.3", + "target": "libredox" + }, + { + "id": "thiserror 1.0.69", + "target": "thiserror" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.4.5" + }, + "license": "MIT", + "license_ids": [ + "MIT" + ], + "license_file": "LICENSE" + }, + "regex 1.11.1": { + "name": "regex", + "version": "1.11.1", + "package_url": "https://github.com/rust-lang/regex", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/regex/1.11.1/download", + "sha256": "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" + } + }, + "targets": [ + { + "Library": { + "crate_name": "regex", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "regex", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "perf", + "perf-backtrack", + "perf-cache", + "perf-dfa", + "perf-inline", + "perf-literal", + "perf-onepass", + "std", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "aho-corasick 1.1.3", + "target": "aho_corasick" + }, + { + "id": "memchr 2.7.4", + "target": "memchr" + }, + { + "id": "regex-automata 0.4.8", + "target": "regex_automata" + }, + { + "id": "regex-syntax 0.8.5", + "target": "regex_syntax" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "1.11.1" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "regex-automata 0.4.8": { + "name": "regex-automata", + "version": "0.4.8", + "package_url": "https://github.com/rust-lang/regex/tree/master/regex-automata", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/regex-automata/0.4.8/download", + "sha256": "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" + } + }, + "targets": [ + { + "Library": { + "crate_name": "regex_automata", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "regex_automata", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "dfa-onepass", + "dfa-search", + "hybrid", + "meta", + "nfa-backtrack", + "nfa-pikevm", + "nfa-thompson", + "perf-inline", + "perf-literal", + "perf-literal-multisubstring", + "perf-literal-substring", + "std", + "syntax", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + "unicode-word-boundary" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "aho-corasick 1.1.3", + "target": "aho_corasick" + }, + { + "id": "memchr 2.7.4", + "target": "memchr" + }, + { + "id": "regex-syntax 0.8.5", + "target": "regex_syntax" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.4.8" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "regex-syntax 0.8.5": { + "name": "regex-syntax", + "version": "0.8.5", + "package_url": "https://github.com/rust-lang/regex/tree/master/regex-syntax", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/regex-syntax/0.8.5/download", + "sha256": "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + } + }, + "targets": [ + { + "Library": { + "crate_name": "regex_syntax", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "regex_syntax", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "std", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment" + ], + "selects": {} + }, "edition": "2021", - "version": "0.11.27" + "version": "0.8.5" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -11622,14 +10861,59 @@ ], "license_file": "LICENSE-APACHE" }, - "reqwest 0.12.8": { + "relative-path 1.9.3": { + "name": "relative-path", + "version": "1.9.3", + "package_url": "https://github.com/udoprog/relative-path", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/relative-path/1.9.3/download", + "sha256": "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" + } + }, + "targets": [ + { + "Library": { + "crate_name": "relative_path", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "relative_path", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "edition": "2021", + "version": "1.9.3" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": null + }, + "reqwest 0.12.9": { "name": "reqwest", - "version": "0.12.8", + "version": "0.12.9", "package_url": "https://github.com/seanmonstar/reqwest", "repository": { "Http": { - "url": "https://static.crates.io/crates/reqwest/0.12.8/download", - "sha256": "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" + "url": "https://static.crates.io/crates/reqwest/0.12.9/download", + "sha256": "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" } }, "targets": [ @@ -11656,8 +10940,10 @@ "__rustls", "__rustls-ring", "__tls", + "blocking", "rustls-tls", - "rustls-tls-webpki-roots" + "rustls-tls-webpki-roots", + "rustls-tls-webpki-roots-no-provider" ], "selects": {} }, @@ -11668,7 +10954,7 @@ "target": "base64" }, { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -11684,7 +10970,7 @@ "target": "http" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" }, { @@ -11700,12 +10986,16 @@ "target": "tower_service" }, { - "id": "url 2.5.0", + "id": "url 2.5.4", "target": "url" } ], "selects": { "aarch64-apple-darwin": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11732,6 +11022,10 @@ } ], "aarch64-apple-ios": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11758,6 +11052,10 @@ } ], "aarch64-apple-ios-sim": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11783,7 +11081,11 @@ "target": "webpki_roots" } ], - "aarch64-fuchsia": [ + "aarch64-linux-android": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11809,7 +11111,11 @@ "target": "webpki_roots" } ], - "aarch64-linux-android": [ + "aarch64-pc-windows-msvc": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11835,7 +11141,11 @@ "target": "webpki_roots" } ], - "aarch64-pc-windows-msvc": [ + "aarch64-unknown-fuchsia": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11862,6 +11172,10 @@ } ], "aarch64-unknown-linux-gnu": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11888,6 +11202,10 @@ } ], "aarch64-unknown-nixos-gnu": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11914,6 +11232,10 @@ } ], "aarch64-unknown-nto-qnx710": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11940,6 +11262,10 @@ } ], "arm-unknown-linux-gnueabi": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11966,6 +11292,10 @@ } ], "armv7-linux-androideabi": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -11992,6 +11322,10 @@ } ], "armv7-unknown-linux-gnueabi": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12059,7 +11393,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.40.0", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -12069,7 +11403,7 @@ "target": "js_sys" }, { - "id": "serde_json 1.0.128", + "id": "serde_json 1.0.133", "target": "serde_json" }, { @@ -12092,6 +11426,10 @@ } ], "i686-apple-darwin": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12118,6 +11456,10 @@ } ], "i686-linux-android": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12144,6 +11486,10 @@ } ], "i686-pc-windows-msvc": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12170,6 +11516,10 @@ } ], "i686-unknown-freebsd": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12196,6 +11546,10 @@ } ], "i686-unknown-linux-gnu": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12222,6 +11576,10 @@ } ], "powerpc-unknown-linux-gnu": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12248,6 +11606,10 @@ } ], "riscv32imc-unknown-none-elf": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12274,6 +11636,10 @@ } ], "riscv64gc-unknown-none-elf": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12300,6 +11666,10 @@ } ], "s390x-unknown-linux-gnu": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12326,6 +11696,10 @@ } ], "thumbv7em-none-eabi": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12352,6 +11726,10 @@ } ], "thumbv8m.main-none-eabi": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12378,6 +11756,10 @@ } ], "x86_64-apple-darwin": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12404,6 +11786,10 @@ } ], "x86_64-apple-ios": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12429,7 +11815,11 @@ "target": "webpki_roots" } ], - "x86_64-fuchsia": [ + "x86_64-linux-android": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12455,7 +11845,11 @@ "target": "webpki_roots" } ], - "x86_64-linux-android": [ + "x86_64-pc-windows-msvc": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12481,7 +11875,11 @@ "target": "webpki_roots" } ], - "x86_64-pc-windows-msvc": [ + "x86_64-unknown-freebsd": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12507,7 +11905,11 @@ "target": "webpki_roots" } ], - "x86_64-unknown-freebsd": [ + "x86_64-unknown-fuchsia": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12534,6 +11936,10 @@ } ], "x86_64-unknown-linux-gnu": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12560,6 +11966,10 @@ } ], "x86_64-unknown-nixos-gnu": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12586,6 +11996,10 @@ } ], "x86_64-unknown-none": [ + { + "id": "futures-channel 0.3.30", + "target": "futures_channel" + }, { "id": "hyper-rustls 0.27.2", "target": "hyper_rustls" @@ -12614,7 +12028,7 @@ } }, "edition": "2021", - "version": "0.12.8" + "version": "0.12.9" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -12694,7 +12108,7 @@ "selects": { "cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(target_arch = \"aarch64\", target_arch = \"arm\")))": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], @@ -12863,7 +12277,7 @@ "target": "glob" }, { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -12883,7 +12297,7 @@ "target": "build_script_build" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" }, { @@ -13046,14 +12460,14 @@ ], "license_file": "LICENSE-APACHE" }, - "rustix 0.38.37": { + "rustix 0.38.42": { "name": "rustix", - "version": "0.38.37", + "version": "0.38.42", "package_url": "https://github.com/bytecodealliance/rustix", "repository": { "Http": { - "url": "https://static.crates.io/crates/rustix/0.38.37/download", - "sha256": "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" + "url": "https://static.crates.io/crates/rustix/0.38.42/download", + "sha256": "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" } }, "targets": [ @@ -13105,247 +12519,247 @@ "target": "bitflags" }, { - "id": "rustix 0.38.37", + "id": "rustix 0.38.42", "target": "build_script_build" } ], "selects": { "aarch64-apple-darwin": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "aarch64-apple-ios": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "aarch64-apple-ios-sim": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], - "aarch64-fuchsia": [ + "aarch64-linux-android": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], - "aarch64-linux-android": [ + "aarch64-unknown-fuchsia": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "aarch64-unknown-nto-qnx710": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "armv7-linux-androideabi": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], - "cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))": [ + "cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))": [ { "id": "linux-raw-sys 0.4.14", "target": "linux_raw_sys" } ], - "cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))": [ + "cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))": [ { "id": "linux-raw-sys 0.4.14", "target": "linux_raw_sys" } ], - "cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))": [ + "cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "cfg(windows)": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "windows-sys 0.52.0", + "id": "windows-sys 0.59.0", "target": "windows_sys" } ], "i686-apple-darwin": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "i686-linux-android": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "i686-unknown-freebsd": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "powerpc-unknown-linux-gnu": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "s390x-unknown-linux-gnu": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], - "wasm32-wasi": [ + "wasm32-wasip1": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "x86_64-apple-darwin": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], "x86_64-apple-ios": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], - "x86_64-fuchsia": [ + "x86_64-linux-android": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], - "x86_64-linux-android": [ + "x86_64-unknown-freebsd": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], - "x86_64-unknown-freebsd": [ + "x86_64-unknown-fuchsia": [ { - "id": "errno 0.3.9", + "id": "errno 0.3.10", "target": "errno", "alias": "libc_errno" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ] } }, "edition": "2021", - "version": "0.38.37" + "version": "0.38.42" }, "build_script_attrs": { "compile_data_glob": [ @@ -13362,110 +12776,6 @@ ], "license_file": "LICENSE-APACHE" }, - "rustls 0.21.12": { - "name": "rustls", - "version": "0.21.12", - "package_url": "https://github.com/rustls/rustls", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/rustls/0.21.12/download", - "sha256": "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" - } - }, - "targets": [ - { - "Library": { - "crate_name": "rustls", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "rustls", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "dangerous_configuration", - "default", - "log", - "logging", - "tls12" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "log 0.4.22", - "target": "log" - }, - { - "id": "ring 0.17.8", - "target": "ring" - }, - { - "id": "rustls 0.21.12", - "target": "build_script_build" - }, - { - "id": "rustls-webpki 0.101.7", - "target": "webpki" - }, - { - "id": "sct 0.7.1", - "target": "sct" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.21.12" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ], - "link_deps": { - "common": [ - { - "id": "ring 0.17.8", - "target": "ring" - } - ], - "selects": {} - } - }, - "license": "Apache-2.0 OR ISC OR MIT", - "license_ids": [ - "Apache-2.0", - "ISC", - "MIT" - ], - "license_file": "LICENSE-APACHE" - }, "rustls 0.23.12": { "name": "rustls", "version": "0.23.12", @@ -13543,7 +12853,7 @@ "target": "subtle" }, { - "id": "zeroize 1.7.0", + "id": "zeroize 1.8.1", "target": "zeroize" } ], @@ -13577,55 +12887,6 @@ ], "license_file": "LICENSE-APACHE" }, - "rustls-pemfile 1.0.4": { - "name": "rustls-pemfile", - "version": "1.0.4", - "package_url": "https://github.com/rustls/pemfile", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/rustls-pemfile/1.0.4/download", - "sha256": "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" - } - }, - "targets": [ - { - "Library": { - "crate_name": "rustls_pemfile", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "rustls_pemfile", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "base64 0.21.7", - "target": "base64" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "1.0.4" - }, - "license": "Apache-2.0 OR ISC OR MIT", - "license_ids": [ - "Apache-2.0", - "ISC", - "MIT" - ], - "license_file": "LICENSE" - }, "rustls-pemfile 2.1.2": { "name": "rustls-pemfile", "version": "2.1.2", @@ -13734,65 +12995,6 @@ ], "license_file": "LICENSE-APACHE" }, - "rustls-webpki 0.101.7": { - "name": "rustls-webpki", - "version": "0.101.7", - "package_url": "https://github.com/rustls/webpki", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/rustls-webpki/0.101.7/download", - "sha256": "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" - } - }, - "targets": [ - { - "Library": { - "crate_name": "webpki", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "webpki", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "alloc", - "default", - "std" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "ring 0.17.8", - "target": "ring" - }, - { - "id": "untrusted 0.9.0", - "target": "untrusted" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.101.7" - }, - "license": "ISC", - "license_ids": [ - "ISC" - ], - "license_file": "LICENSE" - }, "rustls-webpki 0.102.6": { "name": "rustls-webpki", "version": "0.102.6", @@ -14003,73 +13205,18 @@ }, "scroll_derive 0.12.0": { "name": "scroll_derive", - "version": "0.12.0", - "package_url": "https://github.com/m4b/scroll", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/scroll_derive/0.12.0/download", - "sha256": "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" - } - }, - "targets": [ - { - "ProcMacro": { - "crate_name": "scroll_derive", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "scroll_derive", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "proc-macro2 1.0.88", - "target": "proc_macro2" - }, - { - "id": "quote 1.0.37", - "target": "quote" - }, - { - "id": "syn 2.0.79", - "target": "syn" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.12.0" - }, - "license": "MIT", - "license_ids": [ - "MIT" - ], - "license_file": "LICENSE" - }, - "sct 0.7.1": { - "name": "sct", - "version": "0.7.1", - "package_url": "https://github.com/rustls/sct.rs", + "version": "0.12.0", + "package_url": "https://github.com/m4b/scroll", "repository": { "Http": { - "url": "https://static.crates.io/crates/sct/0.7.1/download", - "sha256": "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" + "url": "https://static.crates.io/crates/scroll_derive/0.12.0/download", + "sha256": "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" } }, "targets": [ { - "Library": { - "crate_name": "sct", + "ProcMacro": { + "crate_name": "scroll_derive", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -14080,7 +13227,7 @@ } } ], - "library_target_name": "sct", + "library_target_name": "scroll_derive", "common_attrs": { "compile_data_glob": [ "**" @@ -14088,30 +13235,32 @@ "deps": { "common": [ { - "id": "ring 0.17.8", - "target": "ring" + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" }, { - "id": "untrusted 0.9.0", - "target": "untrusted" + "id": "quote 1.0.37", + "target": "quote" + }, + { + "id": "syn 2.0.90", + "target": "syn" } ], "selects": {} }, - "edition": "2021", - "version": "0.7.1" + "edition": "2018", + "version": "0.12.0" }, - "license": "Apache-2.0 OR ISC OR MIT", + "license": "MIT", "license_ids": [ - "Apache-2.0", - "ISC", "MIT" ], "license_file": "LICENSE" }, - "selenium-manager 0.4.24": { + "selenium-manager 0.4.28-nightly": { "name": "selenium-manager", - "version": "0.4.24", + "version": "0.4.28-nightly", "package_url": "https://github.com/SeleniumHQ/selenium", "repository": null, "targets": [ @@ -14136,19 +13285,19 @@ "deps": { "common": [ { - "id": "anyhow 1.0.91", + "id": "anyhow 1.0.94", "target": "anyhow" }, { - "id": "apple-flat-package 0.18.0", + "id": "apple-flat-package 0.20.0", "target": "apple_flat_package" }, { - "id": "bzip2 0.4.4", + "id": "bzip2 0.5.0", "target": "bzip2" }, { - "id": "clap 4.5.20", + "id": "clap 4.5.23", "target": "clap" }, { @@ -14168,7 +13317,7 @@ "target": "exitcode" }, { - "id": "flate2 1.0.34", + "id": "flate2 1.0.35", "target": "flate2" }, { @@ -14184,15 +13333,15 @@ "target": "regex" }, { - "id": "reqwest 0.12.8", + "id": "reqwest 0.12.9", "target": "reqwest" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" }, { - "id": "serde_json 1.0.128", + "id": "serde_json 1.0.133", "target": "serde_json" }, { @@ -14200,15 +13349,15 @@ "target": "sevenz_rust" }, { - "id": "tar 0.4.42", + "id": "tar 0.4.43", "target": "tar" }, { - "id": "tempfile 3.13.0", + "id": "tempfile 3.14.0", "target": "tempfile" }, { - "id": "tokio 1.40.0", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -14220,11 +13369,15 @@ "target": "walkdir" }, { - "id": "which 6.0.3", + "id": "which 7.0.0", "target": "which" }, { - "id": "zip 2.2.0", + "id": "xz2 0.1.7", + "target": "xz2" + }, + { + "id": "zip 2.2.1", "target": "zip" } ], @@ -14248,7 +13401,7 @@ "selects": {} }, "edition": "2021", - "version": "0.4.24" + "version": "0.4.28-nightly" }, "license": "Apache-2.0", "license_ids": [ @@ -14331,14 +13484,14 @@ ], "license_file": "LICENSE-APACHE" }, - "serde 1.0.210": { + "serde 1.0.216": { "name": "serde", - "version": "1.0.210", + "version": "1.0.216", "package_url": "https://github.com/serde-rs/serde", "repository": { "Http": { - "url": "https://static.crates.io/crates/serde/1.0.210/download", - "sha256": "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" + "url": "https://static.crates.io/crates/serde/1.0.216/download", + "sha256": "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" } }, "targets": [ @@ -14384,7 +13537,7 @@ "deps": { "common": [ { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "build_script_build" } ], @@ -14394,13 +13547,13 @@ "proc_macro_deps": { "common": [ { - "id": "serde_derive 1.0.210", + "id": "serde_derive 1.0.216", "target": "serde_derive" } ], "selects": {} }, - "version": "1.0.210" + "version": "1.0.216" }, "build_script_attrs": { "compile_data_glob": [ @@ -14453,15 +13606,15 @@ "target": "log" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" }, { - "id": "thiserror 1.0.64", + "id": "thiserror 1.0.69", "target": "thiserror" }, { - "id": "xml-rs 0.8.20", + "id": "xml-rs 0.8.24", "target": "xml" } ], @@ -14476,14 +13629,14 @@ ], "license_file": "LICENSE" }, - "serde_derive 1.0.210": { + "serde_derive 1.0.216": { "name": "serde_derive", - "version": "1.0.210", + "version": "1.0.216", "package_url": "https://github.com/serde-rs/serde", "repository": { "Http": { - "url": "https://static.crates.io/crates/serde_derive/1.0.210/download", - "sha256": "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" + "url": "https://static.crates.io/crates/serde_derive/1.0.216/download", + "sha256": "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" } }, "targets": [ @@ -14514,7 +13667,7 @@ "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -14522,14 +13675,14 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" } ], "selects": {} }, "edition": "2015", - "version": "1.0.210" + "version": "1.0.216" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -14538,14 +13691,14 @@ ], "license_file": "LICENSE-APACHE" }, - "serde_json 1.0.128": { + "serde_json 1.0.133": { "name": "serde_json", - "version": "1.0.128", + "version": "1.0.133", "package_url": "https://github.com/serde-rs/json", "repository": { "Http": { - "url": "https://static.crates.io/crates/serde_json/1.0.128/download", - "sha256": "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" + "url": "https://static.crates.io/crates/serde_json/1.0.133/download", + "sha256": "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" } }, "targets": [ @@ -14601,18 +13754,18 @@ "target": "ryu" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" }, { - "id": "serde_json 1.0.128", + "id": "serde_json 1.0.133", "target": "build_script_build" } ], "selects": {} }, "edition": "2021", - "version": "1.0.128" + "version": "1.0.133" }, "build_script_attrs": { "compile_data_glob": [ @@ -14667,7 +13820,7 @@ "deps": { "common": [ { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" } ], @@ -14727,7 +13880,7 @@ "target": "ryu" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" } ], @@ -15208,134 +14361,104 @@ "**" ], "crate_features": { - "common": [], + "common": [ + "const_generics" + ], "selects": { "aarch64-apple-darwin": [ - "const_generics", "const_new" ], "aarch64-apple-ios": [ - "const_generics", "const_new" ], "aarch64-apple-ios-sim": [ - "const_generics", - "const_new" - ], - "aarch64-fuchsia": [ - "const_generics", "const_new" ], "aarch64-linux-android": [ - "const_generics", "const_new" ], "aarch64-pc-windows-msvc": [ - "const_generics", + "const_new" + ], + "aarch64-unknown-fuchsia": [ "const_new" ], "aarch64-unknown-linux-gnu": [ - "const_generics", "const_new" ], "aarch64-unknown-nixos-gnu": [ - "const_generics", "const_new" ], "aarch64-unknown-nto-qnx710": [ - "const_generics", "const_new" ], "arm-unknown-linux-gnueabi": [ - "const_generics", "const_new" ], "armv7-linux-androideabi": [ - "const_generics", "const_new" ], "armv7-unknown-linux-gnueabi": [ - "const_generics", "const_new" ], "i686-apple-darwin": [ - "const_generics", "const_new" ], "i686-linux-android": [ - "const_generics", "const_new" ], "i686-pc-windows-msvc": [ - "const_generics", "const_new" ], "i686-unknown-freebsd": [ - "const_generics", "const_new" ], "i686-unknown-linux-gnu": [ - "const_generics", "const_new" ], "powerpc-unknown-linux-gnu": [ - "const_generics", "const_new" ], "riscv32imc-unknown-none-elf": [ - "const_generics", "const_new" ], "riscv64gc-unknown-none-elf": [ - "const_generics", "const_new" ], "s390x-unknown-linux-gnu": [ - "const_generics", "const_new" ], "thumbv7em-none-eabi": [ - "const_generics", "const_new" ], "thumbv8m.main-none-eabi": [ - "const_generics", "const_new" ], "x86_64-apple-darwin": [ - "const_generics", "const_new" ], "x86_64-apple-ios": [ - "const_generics", - "const_new" - ], - "x86_64-fuchsia": [ - "const_generics", "const_new" ], "x86_64-linux-android": [ - "const_generics", "const_new" ], "x86_64-pc-windows-msvc": [ - "const_generics", "const_new" ], "x86_64-unknown-freebsd": [ - "const_generics", + "const_new" + ], + "x86_64-unknown-fuchsia": [ "const_new" ], "x86_64-unknown-linux-gnu": [ - "const_generics", "const_new" ], "x86_64-unknown-nixos-gnu": [ - "const_generics", "const_new" ], "x86_64-unknown-none": [ - "const_generics", "const_new" ] } @@ -15390,7 +14513,7 @@ "selects": { "cfg(unix)": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], @@ -15510,6 +14633,51 @@ ], "license_file": "LICENSE-APACHE" }, + "stable_deref_trait 1.2.0": { + "name": "stable_deref_trait", + "version": "1.2.0", + "package_url": "https://github.com/storyyeller/stable_deref_trait", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/stable_deref_trait/1.2.0/download", + "sha256": "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + } + }, + "targets": [ + { + "Library": { + "crate_name": "stable_deref_trait", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "stable_deref_trait", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc" + ], + "selects": {} + }, + "edition": "2015", + "version": "1.2.0" + }, + "license": "MIT/Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, "strsim 0.11.1": { "name": "strsim", "version": "0.11.1", @@ -15586,14 +14754,14 @@ ], "license_file": "LICENSE" }, - "syn 2.0.79": { + "syn 2.0.90": { "name": "syn", - "version": "2.0.79", + "version": "2.0.90", "package_url": "https://github.com/dtolnay/syn", "repository": { "Http": { - "url": "https://static.crates.io/crates/syn/2.0.79/download", - "sha256": "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" + "url": "https://static.crates.io/crates/syn/2.0.90/download", + "sha256": "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" } }, "targets": [ @@ -15621,6 +14789,7 @@ "default", "derive", "extra-traits", + "fold", "full", "parsing", "printing", @@ -15633,7 +14802,7 @@ "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -15648,7 +14817,7 @@ "selects": {} }, "edition": "2021", - "version": "2.0.79" + "version": "2.0.90" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -15657,44 +14826,6 @@ ], "license_file": "LICENSE-APACHE" }, - "sync_wrapper 0.1.2": { - "name": "sync_wrapper", - "version": "0.1.2", - "package_url": "https://github.com/Actyx/sync_wrapper", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/sync_wrapper/0.1.2/download", - "sha256": "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - } - }, - "targets": [ - { - "Library": { - "crate_name": "sync_wrapper", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "sync_wrapper", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "edition": "2018", - "version": "0.1.2" - }, - "license": "Apache-2.0", - "license_ids": [ - "Apache-2.0" - ], - "license_file": "LICENSE" - }, "sync_wrapper 1.0.1": { "name": "sync_wrapper", "version": "1.0.1", @@ -15749,20 +14880,20 @@ ], "license_file": "LICENSE" }, - "system-configuration 0.5.1": { - "name": "system-configuration", - "version": "0.5.1", - "package_url": "https://github.com/mullvad/system-configuration-rs", + "synstructure 0.13.1": { + "name": "synstructure", + "version": "0.13.1", + "package_url": "https://github.com/mystor/synstructure", "repository": { "Http": { - "url": "https://static.crates.io/crates/system-configuration/0.5.1/download", - "sha256": "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" + "url": "https://static.crates.io/crates/synstructure/0.13.1/download", + "sha256": "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" } }, "targets": [ { "Library": { - "crate_name": "system_configuration", + "crate_name": "synstructure", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -15773,122 +14904,52 @@ } } ], - "library_target_name": "system_configuration", + "library_target_name": "synstructure", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "bitflags 1.3.2", - "target": "bitflags" - }, - { - "id": "core-foundation 0.9.4", - "target": "core_foundation" - }, - { - "id": "system-configuration-sys 0.5.0", - "target": "system_configuration_sys" - } + "default", + "proc-macro" ], "selects": {} }, - "edition": "2021", - "version": "0.5.1" - }, - "license": "MIT OR Apache-2.0", - "license_ids": [ - "Apache-2.0", - "MIT" - ], - "license_file": null - }, - "system-configuration-sys 0.5.0": { - "name": "system-configuration-sys", - "version": "0.5.0", - "package_url": "https://github.com/mullvad/system-configuration-rs", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/system-configuration-sys/0.5.0/download", - "sha256": "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" - } - }, - "targets": [ - { - "Library": { - "crate_name": "system_configuration_sys", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "system_configuration_sys", - "common_attrs": { - "compile_data_glob": [ - "**" - ], "deps": { "common": [ { - "id": "core-foundation-sys 0.8.6", - "target": "core_foundation_sys" + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" }, { - "id": "libc 0.2.160", - "target": "libc" + "id": "quote 1.0.37", + "target": "quote" }, { - "id": "system-configuration-sys 0.5.0", - "target": "build_script_build" + "id": "syn 2.0.90", + "target": "syn" } ], "selects": {} }, - "edition": "2021", - "version": "0.5.0" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ] + "edition": "2018", + "version": "0.13.1" }, - "license": "MIT OR Apache-2.0", + "license": "MIT", "license_ids": [ - "Apache-2.0", "MIT" ], - "license_file": null + "license_file": "LICENSE" }, - "tar 0.4.42": { + "tar 0.4.43": { "name": "tar", - "version": "0.4.42", + "version": "0.4.43", "package_url": "https://github.com/alexcrichton/tar-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/tar/0.4.42/download", - "sha256": "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" + "url": "https://static.crates.io/crates/tar/0.4.43/download", + "sha256": "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" } }, "targets": [ @@ -15943,13 +15004,13 @@ "target": "xattr" } ], - "aarch64-fuchsia": [ + "aarch64-linux-android": [ { "id": "xattr 1.3.1", "target": "xattr" } ], - "aarch64-linux-android": [ + "aarch64-unknown-fuchsia": [ { "id": "xattr 1.3.1", "target": "xattr" @@ -15993,7 +15054,7 @@ ], "cfg(unix)": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ], @@ -16045,19 +15106,19 @@ "target": "xattr" } ], - "x86_64-fuchsia": [ + "x86_64-linux-android": [ { "id": "xattr 1.3.1", "target": "xattr" } ], - "x86_64-linux-android": [ + "x86_64-unknown-freebsd": [ { "id": "xattr 1.3.1", "target": "xattr" } ], - "x86_64-unknown-freebsd": [ + "x86_64-unknown-fuchsia": [ { "id": "xattr 1.3.1", "target": "xattr" @@ -16078,7 +15139,7 @@ } }, "edition": "2021", - "version": "0.4.42" + "version": "0.4.43" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -16087,14 +15148,14 @@ ], "license_file": "LICENSE-APACHE" }, - "tempfile 3.13.0": { + "tempfile 3.14.0": { "name": "tempfile", - "version": "3.13.0", + "version": "3.14.0", "package_url": "https://github.com/Stebalien/tempfile", "repository": { "Http": { - "url": "https://static.crates.io/crates/tempfile/3.13.0/download", - "sha256": "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" + "url": "https://static.crates.io/crates/tempfile/3.14.0/download", + "sha256": "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" } }, "targets": [ @@ -16134,7 +15195,7 @@ "selects": { "cfg(any(unix, target_os = \"wasi\"))": [ { - "id": "rustix 0.38.37", + "id": "rustix 0.38.42", "target": "rustix" } ], @@ -16147,7 +15208,7 @@ } }, "edition": "2021", - "version": "3.13.0" + "version": "3.14.0" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -16177,31 +15238,108 @@ "**/*.rs" ] } - } - } - ], - "library_target_name": "termtree", - "common_attrs": { + } + } + ], + "library_target_name": "termtree", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2018", + "version": "0.4.1" + }, + "license": "MIT", + "license_ids": [ + "MIT" + ], + "license_file": "LICENSE" + }, + "thiserror 1.0.69": { + "name": "thiserror", + "version": "1.0.69", + "package_url": "https://github.com/dtolnay/thiserror", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/thiserror/1.0.69/download", + "sha256": "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" + } + }, + "targets": [ + { + "Library": { + "crate_name": "thiserror", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "thiserror", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "thiserror 1.0.69", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "thiserror-impl 1.0.69", + "target": "thiserror_impl" + } + ], + "selects": {} + }, + "version": "1.0.69" + }, + "build_script_attrs": { "compile_data_glob": [ "**" ], - "edition": "2018", - "version": "0.4.1" + "data_glob": [ + "**" + ] }, - "license": "MIT", + "license": "MIT OR Apache-2.0", "license_ids": [ + "Apache-2.0", "MIT" ], - "license_file": "LICENSE" + "license_file": "LICENSE-APACHE" }, - "thiserror 1.0.64": { + "thiserror 2.0.6": { "name": "thiserror", - "version": "1.0.64", + "version": "2.0.6", "package_url": "https://github.com/dtolnay/thiserror", "repository": { "Http": { - "url": "https://static.crates.io/crates/thiserror/1.0.64/download", - "sha256": "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" + "url": "https://static.crates.io/crates/thiserror/2.0.6/download", + "sha256": "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" } }, "targets": [ @@ -16235,10 +15373,17 @@ "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "thiserror 1.0.64", + "id": "thiserror 2.0.6", "target": "build_script_build" } ], @@ -16248,13 +15393,13 @@ "proc_macro_deps": { "common": [ { - "id": "thiserror-impl 1.0.64", + "id": "thiserror-impl 2.0.6", "target": "thiserror_impl" } ], "selects": {} }, - "version": "1.0.64" + "version": "2.0.6" }, "build_script_attrs": { "compile_data_glob": [ @@ -16271,14 +15416,70 @@ ], "license_file": "LICENSE-APACHE" }, - "thiserror-impl 1.0.64": { + "thiserror-impl 1.0.69": { + "name": "thiserror-impl", + "version": "1.0.69", + "package_url": "https://github.com/dtolnay/thiserror", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/thiserror-impl/1.0.69/download", + "sha256": "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" + } + }, + "targets": [ + { + "ProcMacro": { + "crate_name": "thiserror_impl", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "thiserror_impl", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.37", + "target": "quote" + }, + { + "id": "syn 2.0.90", + "target": "syn" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "1.0.69" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "LICENSE-APACHE" + }, + "thiserror-impl 2.0.6": { "name": "thiserror-impl", - "version": "1.0.64", + "version": "2.0.6", "package_url": "https://github.com/dtolnay/thiserror", "repository": { "Http": { - "url": "https://static.crates.io/crates/thiserror-impl/1.0.64/download", - "sha256": "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" + "url": "https://static.crates.io/crates/thiserror-impl/2.0.6/download", + "sha256": "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" } }, "targets": [ @@ -16303,7 +15504,7 @@ "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -16311,14 +15512,14 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" } ], "selects": {} }, "edition": "2021", - "version": "1.0.64" + "version": "2.0.6" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -16495,20 +15696,20 @@ ], "license_file": "LICENSE-Apache" }, - "tinyvec 1.6.0": { - "name": "tinyvec", - "version": "1.6.0", - "package_url": "https://github.com/Lokathor/tinyvec", + "tinystr 0.7.6": { + "name": "tinystr", + "version": "0.7.6", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/tinyvec/1.6.0/download", - "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" + "url": "https://static.crates.io/crates/tinystr/0.7.6/download", + "sha256": "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" } }, "targets": [ { "Library": { - "crate_name": "tinyvec", + "crate_name": "tinystr", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -16519,7 +15720,7 @@ } } ], - "library_target_name": "tinyvec", + "library_target_name": "tinystr", "common_attrs": { "compile_data_glob": [ "**" @@ -16527,20 +15728,66 @@ "crate_features": { "common": [ "alloc", - "default", - "tinyvec_macros" + "zerovec" ], "selects": {} }, "deps": { "common": [ { - "id": "tinyvec_macros 0.1.1", - "target": "tinyvec_macros" + "id": "zerovec 0.10.4", + "target": "zerovec" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "displaydoc 0.2.5", + "target": "displaydoc" } ], "selects": {} }, + "version": "0.7.6" + }, + "license": "Unicode-3.0", + "license_ids": [ + "Unicode-3.0" + ], + "license_file": "LICENSE" + }, + "tinyvec 1.6.0": { + "name": "tinyvec", + "version": "1.6.0", + "package_url": "https://github.com/Lokathor/tinyvec", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/tinyvec/1.6.0/download", + "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" + } + }, + "targets": [ + { + "Library": { + "crate_name": "tinyvec", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "tinyvec", + "common_attrs": { + "compile_data_glob": [ + "**" + ], "edition": "2018", "version": "1.6.0" }, @@ -16592,14 +15839,14 @@ ], "license_file": "LICENSE-APACHE.md" }, - "tokio 1.40.0": { + "tokio 1.42.0": { "name": "tokio", - "version": "1.40.0", + "version": "1.42.0", "package_url": "https://github.com/tokio-rs/tokio", "repository": { "Http": { - "url": "https://static.crates.io/crates/tokio/1.40.0/download", - "sha256": "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" + "url": "https://static.crates.io/crates/tokio/1.42.0/download", + "sha256": "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" } }, "targets": [ @@ -16657,7 +15904,7 @@ "sync", "time" ], - "aarch64-fuchsia": [ + "aarch64-linux-android": [ "bytes", "default", "io-std", @@ -16665,22 +15912,22 @@ "sync", "time" ], - "aarch64-linux-android": [ + "aarch64-pc-windows-msvc": [ "bytes", "default", "io-std", "io-util", "sync", - "time" + "time", + "windows-sys" ], - "aarch64-pc-windows-msvc": [ + "aarch64-unknown-fuchsia": [ "bytes", "default", "io-std", "io-util", "sync", - "time", - "windows-sys" + "time" ], "aarch64-unknown-linux-gnu": [ "bytes", @@ -16835,7 +16082,7 @@ "sync", "time" ], - "x86_64-fuchsia": [ + "x86_64-linux-android": [ "bytes", "default", "io-std", @@ -16843,24 +16090,24 @@ "sync", "time" ], - "x86_64-linux-android": [ + "x86_64-pc-windows-msvc": [ "bytes", "default", "io-std", "io-util", "sync", - "time" + "time", + "windows-sys" ], - "x86_64-pc-windows-msvc": [ + "x86_64-unknown-freebsd": [ "bytes", "default", "io-std", "io-util", "sync", - "time", - "windows-sys" + "time" ], - "x86_64-unknown-freebsd": [ + "x86_64-unknown-fuchsia": [ "bytes", "default", "io-std", @@ -16908,11 +16155,11 @@ "selects": { "aarch64-apple-darwin": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -16922,11 +16169,11 @@ ], "aarch64-apple-ios": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -16936,11 +16183,11 @@ ], "aarch64-apple-ios-sim": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -16948,13 +16195,13 @@ "target": "socket2" } ], - "aarch64-fuchsia": [ + "aarch64-linux-android": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -16962,41 +16209,41 @@ "target": "socket2" } ], - "aarch64-linux-android": [ + "aarch64-pc-windows-msvc": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, - { - "id": "libc 0.2.160", - "target": "libc" - }, { "id": "socket2 0.5.7", "target": "socket2" + }, + { + "id": "windows-sys 0.52.0", + "target": "windows_sys" } ], - "aarch64-pc-windows-msvc": [ + "aarch64-unknown-fuchsia": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "socket2 0.5.7", - "target": "socket2" + "id": "libc 0.2.168", + "target": "libc" }, { - "id": "windows-sys 0.52.0", - "target": "windows_sys" + "id": "socket2 0.5.7", + "target": "socket2" } ], "aarch64-unknown-linux-gnu": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17006,11 +16253,11 @@ ], "aarch64-unknown-nixos-gnu": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17020,11 +16267,11 @@ ], "aarch64-unknown-nto-qnx710": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17034,11 +16281,11 @@ ], "arm-unknown-linux-gnueabi": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17048,11 +16295,11 @@ ], "armv7-linux-androideabi": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17062,11 +16309,11 @@ ], "armv7-unknown-linux-gnueabi": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17082,11 +16329,11 @@ ], "i686-apple-darwin": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17096,11 +16343,11 @@ ], "i686-linux-android": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17110,7 +16357,7 @@ ], "i686-pc-windows-msvc": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -17124,11 +16371,11 @@ ], "i686-unknown-freebsd": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17138,11 +16385,11 @@ ], "i686-unknown-linux-gnu": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17152,11 +16399,11 @@ ], "powerpc-unknown-linux-gnu": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17166,7 +16413,7 @@ ], "riscv32imc-unknown-none-elf": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -17176,7 +16423,7 @@ ], "riscv64gc-unknown-none-elf": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -17186,11 +16433,11 @@ ], "s390x-unknown-linux-gnu": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17200,7 +16447,7 @@ ], "thumbv7em-none-eabi": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -17210,7 +16457,7 @@ ], "thumbv8m.main-none-eabi": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -17220,11 +16467,11 @@ ], "x86_64-apple-darwin": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17234,11 +16481,11 @@ ], "x86_64-apple-ios": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17246,13 +16493,13 @@ "target": "socket2" } ], - "x86_64-fuchsia": [ + "x86_64-linux-android": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17260,41 +16507,41 @@ "target": "socket2" } ], - "x86_64-linux-android": [ + "x86_64-pc-windows-msvc": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, - { - "id": "libc 0.2.160", - "target": "libc" - }, { "id": "socket2 0.5.7", "target": "socket2" + }, + { + "id": "windows-sys 0.52.0", + "target": "windows_sys" } ], - "x86_64-pc-windows-msvc": [ + "x86_64-unknown-freebsd": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "socket2 0.5.7", - "target": "socket2" + "id": "libc 0.2.168", + "target": "libc" }, { - "id": "windows-sys 0.52.0", - "target": "windows_sys" + "id": "socket2 0.5.7", + "target": "socket2" } ], - "x86_64-unknown-freebsd": [ + "x86_64-unknown-fuchsia": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17304,11 +16551,11 @@ ], "x86_64-unknown-linux-gnu": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17318,11 +16565,11 @@ ], "x86_64-unknown-nixos-gnu": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -17332,7 +16579,7 @@ ], "x86_64-unknown-none": [ { - "id": "bytes 1.6.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -17340,74 +16587,19 @@ "target": "socket2" } ] - } - }, - "edition": "2021", - "proc_macro_deps": { - "common": [ - { - "id": "tokio-macros 2.4.0", - "target": "tokio_macros" - } - ], - "selects": {} - }, - "version": "1.40.0" - }, - "license": "MIT", - "license_ids": [ - "MIT" - ], - "license_file": "LICENSE" - }, - "tokio-macros 2.4.0": { - "name": "tokio-macros", - "version": "2.4.0", - "package_url": "https://github.com/tokio-rs/tokio", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/tokio-macros/2.4.0/download", - "sha256": "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" - } - }, - "targets": [ - { - "ProcMacro": { - "crate_name": "tokio_macros", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "tokio_macros", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "proc-macro2 1.0.88", - "target": "proc_macro2" - }, - { - "id": "quote 1.0.37", - "target": "quote" - }, + } + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ { - "id": "syn 2.0.79", - "target": "syn" + "id": "tokio-macros 2.4.0", + "target": "tokio_macros" } ], "selects": {} }, - "edition": "2021", - "version": "2.4.0" + "version": "1.42.0" }, "license": "MIT", "license_ids": [ @@ -17415,20 +16607,20 @@ ], "license_file": "LICENSE" }, - "tokio-rustls 0.24.1": { - "name": "tokio-rustls", - "version": "0.24.1", - "package_url": "https://github.com/rustls/tokio-rustls", + "tokio-macros 2.4.0": { + "name": "tokio-macros", + "version": "2.4.0", + "package_url": "https://github.com/tokio-rs/tokio", "repository": { "Http": { - "url": "https://static.crates.io/crates/tokio-rustls/0.24.1/download", - "sha256": "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" + "url": "https://static.crates.io/crates/tokio-macros/2.4.0/download", + "sha256": "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" } }, "targets": [ { - "Library": { - "crate_name": "tokio_rustls", + "ProcMacro": { + "crate_name": "tokio_macros", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -17439,41 +16631,36 @@ } } ], - "library_target_name": "tokio_rustls", + "library_target_name": "tokio_macros", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "logging", - "tls12" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "rustls 0.21.12", - "target": "rustls" + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" }, { - "id": "tokio 1.40.0", - "target": "tokio" + "id": "quote 1.0.37", + "target": "quote" + }, + { + "id": "syn 2.0.90", + "target": "syn" } ], "selects": {} }, - "edition": "2018", - "version": "0.24.1" + "edition": "2021", + "version": "2.4.0" }, - "license": "MIT/Apache-2.0", + "license": "MIT", "license_ids": [ - "Apache-2.0", "MIT" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, "tokio-rustls 0.26.0": { "name": "tokio-rustls", @@ -17523,7 +16710,7 @@ "alias": "pki_types" }, { - "id": "tokio 1.40.0", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -17539,77 +16726,6 @@ ], "license_file": "LICENSE-APACHE" }, - "tokio-util 0.7.11": { - "name": "tokio-util", - "version": "0.7.11", - "package_url": "https://github.com/tokio-rs/tokio", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/tokio-util/0.7.11/download", - "sha256": "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" - } - }, - "targets": [ - { - "Library": { - "crate_name": "tokio_util", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "tokio_util", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "codec", - "default", - "io" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "bytes 1.6.0", - "target": "bytes" - }, - { - "id": "futures-core 0.3.30", - "target": "futures_core" - }, - { - "id": "futures-sink 0.3.30", - "target": "futures_sink" - }, - { - "id": "pin-project-lite 0.2.14", - "target": "pin_project_lite" - }, - { - "id": "tokio 1.40.0", - "target": "tokio" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.7.11" - }, - "license": "MIT", - "license_ids": [ - "MIT" - ], - "license_file": "LICENSE" - }, "toml 0.8.19": { "name": "toml", "version": "0.8.19", @@ -17650,7 +16766,7 @@ "deps": { "common": [ { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" }, { @@ -17716,7 +16832,7 @@ "deps": { "common": [ { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" } ], @@ -17776,7 +16892,7 @@ "target": "indexmap" }, { - "id": "serde 1.0.210", + "id": "serde 1.0.216", "target": "serde" }, { @@ -17868,7 +16984,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.40.0", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -18193,20 +17309,20 @@ ], "license_file": "LICENSE" }, - "unicode-bidi 0.3.15": { - "name": "unicode-bidi", - "version": "0.3.15", - "package_url": "https://github.com/servo/unicode-bidi", + "unicode-ident 1.0.13": { + "name": "unicode-ident", + "version": "1.0.13", + "package_url": "https://github.com/dtolnay/unicode-ident", "repository": { "Http": { - "url": "https://static.crates.io/crates/unicode-bidi/0.3.15/download", - "sha256": "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + "url": "https://static.crates.io/crates/unicode-ident/1.0.13/download", + "sha256": "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" } }, "targets": [ { "Library": { - "crate_name": "unicode_bidi", + "crate_name": "unicode_ident", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -18217,42 +17333,36 @@ } } ], - "library_target_name": "unicode_bidi", + "library_target_name": "unicode_ident", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "hardcoded-data", - "std" - ], - "selects": {} - }, "edition": "2018", - "version": "0.3.15" + "version": "1.0.13" }, - "license": "MIT OR Apache-2.0", + "license": "(MIT OR Apache-2.0) AND Unicode-DFS-2016", "license_ids": [ "Apache-2.0", - "MIT" + "MIT", + "Unicode-DFS-2016" ], "license_file": "LICENSE-APACHE" }, - "unicode-ident 1.0.13": { - "name": "unicode-ident", - "version": "1.0.13", - "package_url": "https://github.com/dtolnay/unicode-ident", + "untrusted 0.9.0": { + "name": "untrusted", + "version": "0.9.0", + "package_url": "https://github.com/briansmith/untrusted", "repository": { "Http": { - "url": "https://static.crates.io/crates/unicode-ident/1.0.13/download", - "sha256": "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + "url": "https://static.crates.io/crates/untrusted/0.9.0/download", + "sha256": "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" } }, "targets": [ { "Library": { - "crate_name": "unicode_ident", + "crate_name": "untrusted", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -18263,36 +17373,34 @@ } } ], - "library_target_name": "unicode_ident", + "library_target_name": "untrusted", "common_attrs": { "compile_data_glob": [ "**" ], "edition": "2018", - "version": "1.0.13" + "version": "0.9.0" }, - "license": "(MIT OR Apache-2.0) AND Unicode-DFS-2016", + "license": "ISC", "license_ids": [ - "Apache-2.0", - "MIT", - "Unicode-DFS-2016" + "ISC" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE.txt" }, - "unicode-normalization 0.1.23": { - "name": "unicode-normalization", - "version": "0.1.23", - "package_url": "https://github.com/unicode-rs/unicode-normalization", + "url 2.5.4": { + "name": "url", + "version": "2.5.4", + "package_url": "https://github.com/servo/rust-url", "repository": { "Http": { - "url": "https://static.crates.io/crates/unicode-normalization/0.1.23/download", - "sha256": "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" + "url": "https://static.crates.io/crates/url/2.5.4/download", + "sha256": "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" } }, "targets": [ { "Library": { - "crate_name": "unicode_normalization", + "crate_name": "url", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -18303,13 +17411,14 @@ } } ], - "library_target_name": "unicode_normalization", + "library_target_name": "url", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ + "default", "std" ], "selects": {} @@ -18317,36 +17426,44 @@ "deps": { "common": [ { - "id": "tinyvec 1.6.0", - "target": "tinyvec" + "id": "form_urlencoded 1.2.1", + "target": "form_urlencoded" + }, + { + "id": "idna 1.0.3", + "target": "idna" + }, + { + "id": "percent-encoding 2.3.1", + "target": "percent_encoding" } ], "selects": {} }, "edition": "2018", - "version": "0.1.23" + "version": "2.5.4" }, - "license": "MIT/Apache-2.0", + "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "untrusted 0.9.0": { - "name": "untrusted", - "version": "0.9.0", - "package_url": "https://github.com/briansmith/untrusted", + "utf16_iter 1.0.5": { + "name": "utf16_iter", + "version": "1.0.5", + "package_url": "https://github.com/hsivonen/utf16_iter", "repository": { "Http": { - "url": "https://static.crates.io/crates/untrusted/0.9.0/download", - "sha256": "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + "url": "https://static.crates.io/crates/utf16_iter/1.0.5/download", + "sha256": "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" } }, "targets": [ { "Library": { - "crate_name": "untrusted", + "crate_name": "utf16_iter", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -18357,34 +17474,35 @@ } } ], - "library_target_name": "untrusted", + "library_target_name": "utf16_iter", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2018", - "version": "0.9.0" + "edition": "2021", + "version": "1.0.5" }, - "license": "ISC", + "license": "Apache-2.0 OR MIT", "license_ids": [ - "ISC" + "Apache-2.0", + "MIT" ], - "license_file": "LICENSE.txt" + "license_file": "LICENSE-APACHE" }, - "url 2.5.0": { - "name": "url", - "version": "2.5.0", - "package_url": "https://github.com/servo/rust-url", + "utf8_iter 1.0.4": { + "name": "utf8_iter", + "version": "1.0.4", + "package_url": "https://github.com/hsivonen/utf8_iter", "repository": { "Http": { - "url": "https://static.crates.io/crates/url/2.5.0/download", - "sha256": "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" + "url": "https://static.crates.io/crates/utf8_iter/1.0.4/download", + "sha256": "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" } }, "targets": [ { "Library": { - "crate_name": "url", + "crate_name": "utf8_iter", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -18395,38 +17513,15 @@ } } ], - "library_target_name": "url", + "library_target_name": "utf8_iter", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "form_urlencoded 1.2.1", - "target": "form_urlencoded" - }, - { - "id": "idna 0.5.0", - "target": "idna" - }, - { - "id": "percent-encoding 2.3.1", - "target": "percent_encoding" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "2.5.0" + "edition": "2021", + "version": "1.0.4" }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" @@ -18636,7 +17731,7 @@ "selects": { "cfg(unix)": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" } ] @@ -18939,7 +18034,7 @@ "target": "once_cell" }, { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -18947,7 +18042,7 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" }, { @@ -19126,7 +18221,7 @@ "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -19134,7 +18229,7 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" }, { @@ -19299,45 +18394,7 @@ "Apache-2.0", "MIT" ], - "license_file": "LICENSE-APACHE" - }, - "webpki-roots 0.25.4": { - "name": "webpki-roots", - "version": "0.25.4", - "package_url": "https://github.com/rustls/webpki-roots", - "repository": { - "Http": { - "url": "https://static.crates.io/crates/webpki-roots/0.25.4/download", - "sha256": "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - } - }, - "targets": [ - { - "Library": { - "crate_name": "webpki_roots", - "crate_root": "src/lib.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } - } - ], - "library_target_name": "webpki_roots", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "edition": "2018", - "version": "0.25.4" - }, - "license": "MPL-2.0", - "license_ids": [ - "MPL-2.0" - ], - "license_file": "LICENSE" + "license_file": "LICENSE-APACHE" }, "webpki-roots 0.26.1": { "name": "webpki-roots", @@ -19387,14 +18444,14 @@ ], "license_file": "LICENSE" }, - "which 6.0.3": { + "which 7.0.0": { "name": "which", - "version": "6.0.3", + "version": "7.0.0", "package_url": "https://github.com/harryfei/which-rs.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/which/6.0.3/download", - "sha256": "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" + "url": "https://static.crates.io/crates/which/7.0.0/download", + "sha256": "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b" } }, "targets": [ @@ -19426,7 +18483,7 @@ "selects": { "cfg(any(unix, target_os = \"wasi\", target_os = \"redox\"))": [ { - "id": "rustix 0.38.37", + "id": "rustix 0.38.42", "target": "rustix" } ], @@ -19445,7 +18502,7 @@ } }, "edition": "2021", - "version": "6.0.3" + "version": "7.0.0" }, "license": "MIT", "license_ids": [ @@ -19898,7 +18955,263 @@ "targets": [ { "Library": { - "crate_name": "windows_strings", + "crate_name": "windows_strings", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "windows_strings", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "windows-result 0.2.0", + "target": "windows_result" + }, + { + "id": "windows-targets 0.52.6", + "target": "windows_targets" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.1.0" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "license-apache-2.0" + }, + "windows-sys 0.48.0": { + "name": "windows-sys", + "version": "0.48.0", + "package_url": "https://github.com/microsoft/windows-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows-sys/0.48.0/download", + "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_sys", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "windows_sys", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "Win32", + "Win32_Foundation", + "Win32_Globalization", + "Win32_System", + "Win32_System_Com", + "Win32_UI", + "Win32_UI_Shell", + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "windows-targets 0.48.5", + "target": "windows_targets" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.48.0" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "license-apache-2.0" + }, + "windows-sys 0.52.0": { + "name": "windows-sys", + "version": "0.52.0", + "package_url": "https://github.com/microsoft/windows-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows-sys/0.52.0/download", + "sha256": "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_sys", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "windows_sys", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "Wdk", + "Wdk_Foundation", + "Wdk_Storage", + "Wdk_Storage_FileSystem", + "Wdk_System", + "Wdk_System_IO", + "Win32", + "Win32_Foundation", + "Win32_Networking", + "Win32_Networking_WinSock", + "Win32_Security", + "Win32_Storage", + "Win32_Storage_FileSystem", + "Win32_System", + "Win32_System_Com", + "Win32_System_Console", + "Win32_System_IO", + "Win32_System_Pipes", + "Win32_System_SystemInformation", + "Win32_System_SystemServices", + "Win32_System_Threading", + "Win32_System_WindowsProgramming", + "Win32_UI", + "Win32_UI_Shell", + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "windows-targets 0.52.6", + "target": "windows_targets" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.0" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "license-apache-2.0" + }, + "windows-sys 0.59.0": { + "name": "windows-sys", + "version": "0.59.0", + "package_url": "https://github.com/microsoft/windows-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows-sys/0.59.0/download", + "sha256": "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_sys", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "windows_sys", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "Win32", + "Win32_Foundation", + "Win32_Storage", + "Win32_Storage_FileSystem", + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "windows-targets 0.52.6", + "target": "windows_targets" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.59.0" + }, + "license": "MIT OR Apache-2.0", + "license_ids": [ + "Apache-2.0", + "MIT" + ], + "license_file": "license-apache-2.0" + }, + "windows-targets 0.48.5": { + "name": "windows-targets", + "version": "0.48.5", + "package_url": "https://github.com/microsoft/windows-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows-targets/0.48.5/download", + "sha256": "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_targets", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -19909,33 +19222,60 @@ } } ], - "library_target_name": "windows_strings", + "library_target_name": "windows_targets", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, "deps": { - "common": [ - { - "id": "windows-result 0.2.0", - "target": "windows_result" - }, - { - "id": "windows-targets 0.52.6", - "target": "windows_targets" - } - ], - "selects": {} + "common": [], + "selects": { + "aarch64-pc-windows-gnullvm": [ + { + "id": "windows_aarch64_gnullvm 0.48.5", + "target": "windows_aarch64_gnullvm" + } + ], + "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_aarch64_msvc 0.48.5", + "target": "windows_aarch64_msvc" + } + ], + "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(windows_raw_dylib)))": [ + { + "id": "windows_i686_gnu 0.48.5", + "target": "windows_i686_gnu" + } + ], + "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_i686_msvc 0.48.5", + "target": "windows_i686_msvc" + } + ], + "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ + { + "id": "windows_x86_64_gnu 0.48.5", + "target": "windows_x86_64_gnu" + } + ], + "cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_x86_64_msvc 0.48.5", + "target": "windows_x86_64_msvc" + } + ], + "x86_64-pc-windows-gnullvm": [ + { + "id": "windows_x86_64_gnullvm 0.48.5", + "target": "windows_x86_64_gnullvm" + } + ] + } }, - "edition": "2021", - "version": "0.1.0" + "edition": "2018", + "version": "0.48.5" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -19944,20 +19284,20 @@ ], "license_file": "license-apache-2.0" }, - "windows-sys 0.48.0": { - "name": "windows-sys", - "version": "0.48.0", + "windows-targets 0.52.6": { + "name": "windows-targets", + "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows-sys/0.48.0/download", - "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" + "url": "https://static.crates.io/crates/windows-targets/0.52.6/download", + "sha256": "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" } }, "targets": [ { "Library": { - "crate_name": "windows_sys", + "crate_name": "windows_targets", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -19968,42 +19308,66 @@ } } ], - "library_target_name": "windows_sys", + "library_target_name": "windows_targets", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "Win32", - "Win32_Foundation", - "Win32_Globalization", - "Win32_Security", - "Win32_Storage", - "Win32_Storage_FileSystem", - "Win32_System", - "Win32_System_Com", - "Win32_System_Diagnostics", - "Win32_System_Diagnostics_Debug", - "Win32_System_Registry", - "Win32_System_Time", - "Win32_UI", - "Win32_UI_Shell", - "default" - ], - "selects": {} - }, "deps": { - "common": [ - { - "id": "windows-targets 0.48.5", - "target": "windows_targets" - } - ], - "selects": {} + "common": [], + "selects": { + "aarch64-pc-windows-gnullvm": [ + { + "id": "windows_aarch64_gnullvm 0.52.6", + "target": "windows_aarch64_gnullvm" + } + ], + "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_x86_64_msvc 0.52.6", + "target": "windows_x86_64_msvc" + } + ], + "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_aarch64_msvc 0.52.6", + "target": "windows_aarch64_msvc" + } + ], + "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ + { + "id": "windows_i686_gnu 0.52.6", + "target": "windows_i686_gnu" + } + ], + "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_i686_msvc 0.52.6", + "target": "windows_i686_msvc" + } + ], + "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ + { + "id": "windows_x86_64_gnu 0.52.6", + "target": "windows_x86_64_gnu" + } + ], + "i686-pc-windows-gnullvm": [ + { + "id": "windows_i686_gnullvm 0.52.6", + "target": "windows_i686_gnullvm" + } + ], + "x86_64-pc-windows-gnullvm": [ + { + "id": "windows_x86_64_gnullvm 0.52.6", + "target": "windows_x86_64_gnullvm" + } + ] + } }, - "edition": "2018", - "version": "0.48.0" + "edition": "2021", + "version": "0.52.6" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -20012,20 +19376,20 @@ ], "license_file": "license-apache-2.0" }, - "windows-sys 0.52.0": { - "name": "windows-sys", - "version": "0.52.0", + "windows_aarch64_gnullvm 0.48.5": { + "name": "windows_aarch64_gnullvm", + "version": "0.48.5", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows-sys/0.52.0/download", - "sha256": "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download", + "sha256": "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" } }, "targets": [ { "Library": { - "crate_name": "windows_sys", + "crate_name": "windows_aarch64_gnullvm", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20034,54 +19398,44 @@ ] } } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } } ], - "library_target_name": "windows_sys", + "library_target_name": "windows_aarch64_gnullvm", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "Wdk", - "Wdk_Foundation", - "Wdk_Storage", - "Wdk_Storage_FileSystem", - "Wdk_System", - "Wdk_System_IO", - "Win32", - "Win32_Foundation", - "Win32_Networking", - "Win32_Networking_WinSock", - "Win32_Security", - "Win32_Storage", - "Win32_Storage_FileSystem", - "Win32_System", - "Win32_System_Com", - "Win32_System_Console", - "Win32_System_IO", - "Win32_System_Pipes", - "Win32_System_SystemInformation", - "Win32_System_SystemServices", - "Win32_System_Threading", - "Win32_System_WindowsProgramming", - "Win32_UI", - "Win32_UI_Shell", - "default" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "windows-targets 0.52.6", - "target": "windows_targets" + "id": "windows_aarch64_gnullvm 0.48.5", + "target": "build_script_build" } ], "selects": {} }, - "edition": "2021", - "version": "0.52.0" + "edition": "2018", + "version": "0.48.5" + }, + "build_script_attrs": { + "compile_data_glob": [ + "**" + ], + "data_glob": [ + "**" + ] }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -20090,20 +19444,20 @@ ], "license_file": "license-apache-2.0" }, - "windows-sys 0.59.0": { - "name": "windows-sys", - "version": "0.59.0", + "windows_aarch64_gnullvm 0.52.6": { + "name": "windows_aarch64_gnullvm", + "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows-sys/0.59.0/download", - "sha256": "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download", + "sha256": "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" } }, "targets": [ { "Library": { - "crate_name": "windows_sys", + "crate_name": "windows_aarch64_gnullvm", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20112,34 +19466,44 @@ ] } } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } } ], - "library_target_name": "windows_sys", + "library_target_name": "windows_aarch64_gnullvm", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "Win32", - "Win32_Foundation", - "Win32_Storage", - "Win32_Storage_FileSystem", - "default" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "windows-targets 0.52.6", - "target": "windows_targets" + "id": "windows_aarch64_gnullvm 0.52.6", + "target": "build_script_build" } ], "selects": {} }, "edition": "2021", - "version": "0.59.0" + "version": "0.52.6" + }, + "build_script_attrs": { + "compile_data_glob": [ + "**" + ], + "data_glob": [ + "**" + ] }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -20148,20 +19512,20 @@ ], "license_file": "license-apache-2.0" }, - "windows-targets 0.48.5": { - "name": "windows-targets", + "windows_aarch64_msvc 0.48.5": { + "name": "windows_aarch64_msvc", "version": "0.48.5", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows-targets/0.48.5/download", - "sha256": "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" + "url": "https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download", + "sha256": "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" } }, "targets": [ { "Library": { - "crate_name": "windows_targets", + "crate_name": "windows_aarch64_msvc", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20170,63 +19534,45 @@ ] } } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } } ], - "library_target_name": "windows_targets", + "library_target_name": "windows_aarch64_msvc", "common_attrs": { "compile_data_glob": [ "**" ], "deps": { - "common": [], - "selects": { - "aarch64-pc-windows-gnullvm": [ - { - "id": "windows_aarch64_gnullvm 0.48.5", - "target": "windows_aarch64_gnullvm" - } - ], - "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ - { - "id": "windows_aarch64_msvc 0.48.5", - "target": "windows_aarch64_msvc" - } - ], - "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(windows_raw_dylib)))": [ - { - "id": "windows_i686_gnu 0.48.5", - "target": "windows_i686_gnu" - } - ], - "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": [ - { - "id": "windows_i686_msvc 0.48.5", - "target": "windows_i686_msvc" - } - ], - "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ - { - "id": "windows_x86_64_gnu 0.48.5", - "target": "windows_x86_64_gnu" - } - ], - "cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ - { - "id": "windows_x86_64_msvc 0.48.5", - "target": "windows_x86_64_msvc" - } - ], - "x86_64-pc-windows-gnullvm": [ - { - "id": "windows_x86_64_gnullvm 0.48.5", - "target": "windows_x86_64_gnullvm" - } - ] - } + "common": [ + { + "id": "windows_aarch64_msvc 0.48.5", + "target": "build_script_build" + } + ], + "selects": {} }, "edition": "2018", "version": "0.48.5" }, + "build_script_attrs": { + "compile_data_glob": [ + "**" + ], + "data_glob": [ + "**" + ] + }, "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", @@ -20234,20 +19580,20 @@ ], "license_file": "license-apache-2.0" }, - "windows-targets 0.52.6": { - "name": "windows-targets", + "windows_aarch64_msvc 0.52.6": { + "name": "windows_aarch64_msvc", "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows-targets/0.52.6/download", - "sha256": "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" + "url": "https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download", + "sha256": "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" } }, "targets": [ { "Library": { - "crate_name": "windows_targets", + "crate_name": "windows_aarch64_msvc", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20256,69 +19602,45 @@ ] } } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } } ], - "library_target_name": "windows_targets", + "library_target_name": "windows_aarch64_msvc", "common_attrs": { "compile_data_glob": [ "**" ], "deps": { - "common": [], - "selects": { - "aarch64-pc-windows-gnullvm": [ - { - "id": "windows_aarch64_gnullvm 0.52.6", - "target": "windows_aarch64_gnullvm" - } - ], - "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": [ - { - "id": "windows_x86_64_msvc 0.52.6", - "target": "windows_x86_64_msvc" - } - ], - "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ - { - "id": "windows_aarch64_msvc 0.52.6", - "target": "windows_aarch64_msvc" - } - ], - "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ - { - "id": "windows_i686_gnu 0.52.6", - "target": "windows_i686_gnu" - } - ], - "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": [ - { - "id": "windows_i686_msvc 0.52.6", - "target": "windows_i686_msvc" - } - ], - "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ - { - "id": "windows_x86_64_gnu 0.52.6", - "target": "windows_x86_64_gnu" - } - ], - "i686-pc-windows-gnullvm": [ - { - "id": "windows_i686_gnullvm 0.52.6", - "target": "windows_i686_gnullvm" - } - ], - "x86_64-pc-windows-gnullvm": [ - { - "id": "windows_x86_64_gnullvm 0.52.6", - "target": "windows_x86_64_gnullvm" - } - ] - } + "common": [ + { + "id": "windows_aarch64_msvc 0.52.6", + "target": "build_script_build" + } + ], + "selects": {} }, "edition": "2021", "version": "0.52.6" }, + "build_script_attrs": { + "compile_data_glob": [ + "**" + ], + "data_glob": [ + "**" + ] + }, "license": "MIT OR Apache-2.0", "license_ids": [ "Apache-2.0", @@ -20326,20 +19648,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_aarch64_gnullvm 0.48.5": { - "name": "windows_aarch64_gnullvm", + "windows_i686_gnu 0.48.5": { + "name": "windows_i686_gnu", "version": "0.48.5", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download", - "sha256": "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + "url": "https://static.crates.io/crates/windows_i686_gnu/0.48.5/download", + "sha256": "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" } }, "targets": [ { "Library": { - "crate_name": "windows_aarch64_gnullvm", + "crate_name": "windows_i686_gnu", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20362,7 +19684,7 @@ } } ], - "library_target_name": "windows_aarch64_gnullvm", + "library_target_name": "windows_i686_gnu", "common_attrs": { "compile_data_glob": [ "**" @@ -20370,7 +19692,7 @@ "deps": { "common": [ { - "id": "windows_aarch64_gnullvm 0.48.5", + "id": "windows_i686_gnu 0.48.5", "target": "build_script_build" } ], @@ -20394,20 +19716,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_aarch64_gnullvm 0.52.6": { - "name": "windows_aarch64_gnullvm", + "windows_i686_gnu 0.52.6": { + "name": "windows_i686_gnu", "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download", - "sha256": "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + "url": "https://static.crates.io/crates/windows_i686_gnu/0.52.6/download", + "sha256": "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" } }, "targets": [ { "Library": { - "crate_name": "windows_aarch64_gnullvm", + "crate_name": "windows_i686_gnu", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20430,7 +19752,7 @@ } } ], - "library_target_name": "windows_aarch64_gnullvm", + "library_target_name": "windows_i686_gnu", "common_attrs": { "compile_data_glob": [ "**" @@ -20438,7 +19760,7 @@ "deps": { "common": [ { - "id": "windows_aarch64_gnullvm 0.52.6", + "id": "windows_i686_gnu 0.52.6", "target": "build_script_build" } ], @@ -20462,20 +19784,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_aarch64_msvc 0.48.5": { - "name": "windows_aarch64_msvc", - "version": "0.48.5", + "windows_i686_gnullvm 0.52.6": { + "name": "windows_i686_gnullvm", + "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download", - "sha256": "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + "url": "https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download", + "sha256": "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" } }, "targets": [ { "Library": { - "crate_name": "windows_aarch64_msvc", + "crate_name": "windows_i686_gnullvm", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20498,7 +19820,7 @@ } } ], - "library_target_name": "windows_aarch64_msvc", + "library_target_name": "windows_i686_gnullvm", "common_attrs": { "compile_data_glob": [ "**" @@ -20506,14 +19828,14 @@ "deps": { "common": [ { - "id": "windows_aarch64_msvc 0.48.5", + "id": "windows_i686_gnullvm 0.52.6", "target": "build_script_build" } ], "selects": {} }, - "edition": "2018", - "version": "0.48.5" + "edition": "2021", + "version": "0.52.6" }, "build_script_attrs": { "compile_data_glob": [ @@ -20529,21 +19851,21 @@ "MIT" ], "license_file": "license-apache-2.0" - }, - "windows_aarch64_msvc 0.52.6": { - "name": "windows_aarch64_msvc", - "version": "0.52.6", + }, + "windows_i686_msvc 0.48.5": { + "name": "windows_i686_msvc", + "version": "0.48.5", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download", - "sha256": "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + "url": "https://static.crates.io/crates/windows_i686_msvc/0.48.5/download", + "sha256": "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" } }, "targets": [ { "Library": { - "crate_name": "windows_aarch64_msvc", + "crate_name": "windows_i686_msvc", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20566,7 +19888,7 @@ } } ], - "library_target_name": "windows_aarch64_msvc", + "library_target_name": "windows_i686_msvc", "common_attrs": { "compile_data_glob": [ "**" @@ -20574,14 +19896,14 @@ "deps": { "common": [ { - "id": "windows_aarch64_msvc 0.52.6", + "id": "windows_i686_msvc 0.48.5", "target": "build_script_build" } ], "selects": {} }, - "edition": "2021", - "version": "0.52.6" + "edition": "2018", + "version": "0.48.5" }, "build_script_attrs": { "compile_data_glob": [ @@ -20598,20 +19920,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_i686_gnu 0.48.5": { - "name": "windows_i686_gnu", - "version": "0.48.5", + "windows_i686_msvc 0.52.6": { + "name": "windows_i686_msvc", + "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_i686_gnu/0.48.5/download", - "sha256": "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + "url": "https://static.crates.io/crates/windows_i686_msvc/0.52.6/download", + "sha256": "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" } }, "targets": [ { "Library": { - "crate_name": "windows_i686_gnu", + "crate_name": "windows_i686_msvc", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20634,7 +19956,7 @@ } } ], - "library_target_name": "windows_i686_gnu", + "library_target_name": "windows_i686_msvc", "common_attrs": { "compile_data_glob": [ "**" @@ -20642,14 +19964,14 @@ "deps": { "common": [ { - "id": "windows_i686_gnu 0.48.5", + "id": "windows_i686_msvc 0.52.6", "target": "build_script_build" } ], "selects": {} }, - "edition": "2018", - "version": "0.48.5" + "edition": "2021", + "version": "0.52.6" }, "build_script_attrs": { "compile_data_glob": [ @@ -20666,20 +19988,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_i686_gnu 0.52.6": { - "name": "windows_i686_gnu", - "version": "0.52.6", + "windows_x86_64_gnu 0.48.5": { + "name": "windows_x86_64_gnu", + "version": "0.48.5", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_i686_gnu/0.52.6/download", - "sha256": "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + "url": "https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download", + "sha256": "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" } }, "targets": [ { "Library": { - "crate_name": "windows_i686_gnu", + "crate_name": "windows_x86_64_gnu", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20702,7 +20024,7 @@ } } ], - "library_target_name": "windows_i686_gnu", + "library_target_name": "windows_x86_64_gnu", "common_attrs": { "compile_data_glob": [ "**" @@ -20710,14 +20032,14 @@ "deps": { "common": [ { - "id": "windows_i686_gnu 0.52.6", + "id": "windows_x86_64_gnu 0.48.5", "target": "build_script_build" } ], "selects": {} }, - "edition": "2021", - "version": "0.52.6" + "edition": "2018", + "version": "0.48.5" }, "build_script_attrs": { "compile_data_glob": [ @@ -20734,20 +20056,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_i686_gnullvm 0.52.6": { - "name": "windows_i686_gnullvm", + "windows_x86_64_gnu 0.52.6": { + "name": "windows_x86_64_gnu", "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download", - "sha256": "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + "url": "https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download", + "sha256": "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" } }, "targets": [ { "Library": { - "crate_name": "windows_i686_gnullvm", + "crate_name": "windows_x86_64_gnu", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20770,7 +20092,7 @@ } } ], - "library_target_name": "windows_i686_gnullvm", + "library_target_name": "windows_x86_64_gnu", "common_attrs": { "compile_data_glob": [ "**" @@ -20778,7 +20100,7 @@ "deps": { "common": [ { - "id": "windows_i686_gnullvm 0.52.6", + "id": "windows_x86_64_gnu 0.52.6", "target": "build_script_build" } ], @@ -20802,20 +20124,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_i686_msvc 0.48.5": { - "name": "windows_i686_msvc", + "windows_x86_64_gnullvm 0.48.5": { + "name": "windows_x86_64_gnullvm", "version": "0.48.5", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_i686_msvc/0.48.5/download", - "sha256": "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download", + "sha256": "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" } }, "targets": [ { "Library": { - "crate_name": "windows_i686_msvc", + "crate_name": "windows_x86_64_gnullvm", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20838,7 +20160,7 @@ } } ], - "library_target_name": "windows_i686_msvc", + "library_target_name": "windows_x86_64_gnullvm", "common_attrs": { "compile_data_glob": [ "**" @@ -20846,7 +20168,7 @@ "deps": { "common": [ { - "id": "windows_i686_msvc 0.48.5", + "id": "windows_x86_64_gnullvm 0.48.5", "target": "build_script_build" } ], @@ -20870,20 +20192,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_i686_msvc 0.52.6": { - "name": "windows_i686_msvc", + "windows_x86_64_gnullvm 0.52.6": { + "name": "windows_x86_64_gnullvm", "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_i686_msvc/0.52.6/download", - "sha256": "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download", + "sha256": "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" } }, "targets": [ { "Library": { - "crate_name": "windows_i686_msvc", + "crate_name": "windows_x86_64_gnullvm", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20906,7 +20228,7 @@ } } ], - "library_target_name": "windows_i686_msvc", + "library_target_name": "windows_x86_64_gnullvm", "common_attrs": { "compile_data_glob": [ "**" @@ -20914,7 +20236,7 @@ "deps": { "common": [ { - "id": "windows_i686_msvc 0.52.6", + "id": "windows_x86_64_gnullvm 0.52.6", "target": "build_script_build" } ], @@ -20938,20 +20260,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_x86_64_gnu 0.48.5": { - "name": "windows_x86_64_gnu", + "windows_x86_64_msvc 0.48.5": { + "name": "windows_x86_64_msvc", "version": "0.48.5", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download", - "sha256": "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + "url": "https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download", + "sha256": "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" } }, "targets": [ { "Library": { - "crate_name": "windows_x86_64_gnu", + "crate_name": "windows_x86_64_msvc", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -20974,7 +20296,7 @@ } } ], - "library_target_name": "windows_x86_64_gnu", + "library_target_name": "windows_x86_64_msvc", "common_attrs": { "compile_data_glob": [ "**" @@ -20982,7 +20304,7 @@ "deps": { "common": [ { - "id": "windows_x86_64_gnu 0.48.5", + "id": "windows_x86_64_msvc 0.48.5", "target": "build_script_build" } ], @@ -21006,20 +20328,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_x86_64_gnu 0.52.6": { - "name": "windows_x86_64_gnu", + "windows_x86_64_msvc 0.52.6": { + "name": "windows_x86_64_msvc", "version": "0.52.6", "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download", - "sha256": "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + "url": "https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download", + "sha256": "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" } }, "targets": [ { "Library": { - "crate_name": "windows_x86_64_gnu", + "crate_name": "windows_x86_64_msvc", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21042,7 +20364,7 @@ } } ], - "library_target_name": "windows_x86_64_gnu", + "library_target_name": "windows_x86_64_msvc", "common_attrs": { "compile_data_glob": [ "**" @@ -21050,7 +20372,7 @@ "deps": { "common": [ { - "id": "windows_x86_64_gnu 0.52.6", + "id": "windows_x86_64_msvc 0.52.6", "target": "build_script_build" } ], @@ -21074,20 +20396,20 @@ ], "license_file": "license-apache-2.0" }, - "windows_x86_64_gnullvm 0.48.5": { - "name": "windows_x86_64_gnullvm", - "version": "0.48.5", - "package_url": "https://github.com/microsoft/windows-rs", + "winnow 0.6.18": { + "name": "winnow", + "version": "0.6.18", + "package_url": "https://github.com/winnow-rs/winnow", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download", - "sha256": "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + "url": "https://static.crates.io/crates/winnow/0.6.18/download", + "sha256": "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" } }, "targets": [ { "Library": { - "crate_name": "windows_x86_64_gnullvm", + "crate_name": "winnow", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21096,11 +20418,45 @@ ] } } + } + ], + "library_target_name": "winnow", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "default", + "std" + ], + "selects": {} }, + "edition": "2021", + "version": "0.6.18" + }, + "license": "MIT", + "license_ids": [ + "MIT" + ], + "license_file": "LICENSE-MIT" + }, + "winsafe 0.0.19": { + "name": "winsafe", + "version": "0.0.19", + "package_url": "https://github.com/rodrigocfd/winsafe", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/winsafe/0.0.19/download", + "sha256": "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + } + }, + "targets": [ { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", + "Library": { + "crate_name": "winsafe", + "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, "include": [ @@ -21110,52 +20466,85 @@ } } ], - "library_target_name": "windows_x86_64_gnullvm", + "library_target_name": "winsafe", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "windows_x86_64_gnullvm 0.48.5", - "target": "build_script_build" - } + "kernel" ], "selects": {} }, - "edition": "2018", - "version": "0.48.5" + "edition": "2021", + "version": "0.0.19" }, - "build_script_attrs": { + "license": "MIT", + "license_ids": [ + "MIT" + ], + "license_file": "LICENSE.md" + }, + "write16 1.0.0": { + "name": "write16", + "version": "1.0.0", + "package_url": "https://github.com/hsivonen/write16", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/write16/1.0.0/download", + "sha256": "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + } + }, + "targets": [ + { + "Library": { + "crate_name": "write16", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "write16", + "common_attrs": { "compile_data_glob": [ "**" ], - "data_glob": [ - "**" - ] + "crate_features": { + "common": [ + "alloc" + ], + "selects": {} + }, + "edition": "2021", + "version": "1.0.0" }, - "license": "MIT OR Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], - "license_file": "license-apache-2.0" + "license_file": "LICENSE-APACHE" }, - "windows_x86_64_gnullvm 0.52.6": { - "name": "windows_x86_64_gnullvm", - "version": "0.52.6", - "package_url": "https://github.com/microsoft/windows-rs", + "writeable 0.5.5": { + "name": "writeable", + "version": "0.5.5", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download", - "sha256": "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + "url": "https://static.crates.io/crates/writeable/0.5.5/download", + "sha256": "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" } }, "targets": [ { "Library": { - "crate_name": "windows_x86_64_gnullvm", + "crate_name": "writeable", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21164,11 +20553,37 @@ ] } } - }, + } + ], + "library_target_name": "writeable", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "0.5.5" + }, + "license": "Unicode-3.0", + "license_ids": [ + "Unicode-3.0" + ], + "license_file": "LICENSE" + }, + "x509-certificate 0.24.0": { + "name": "x509-certificate", + "version": "0.24.0", + "package_url": "https://github.com/indygreg/cryptography-rs.git", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/x509-certificate/0.24.0/download", + "sha256": "e57b9f8bcae7c1f36479821ae826d75050c60ce55146fd86d3553ed2573e2762" + } + }, + "targets": [ { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", + "Library": { + "crate_name": "x509_certificate", + "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, "include": [ @@ -21178,52 +20593,89 @@ } } ], - "library_target_name": "windows_x86_64_gnullvm", + "library_target_name": "x509_certificate", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "test" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "windows_x86_64_gnullvm 0.52.6", - "target": "build_script_build" + "id": "bcder 0.7.4", + "target": "bcder" + }, + { + "id": "bytes 1.9.0", + "target": "bytes" + }, + { + "id": "chrono 0.4.38", + "target": "chrono" + }, + { + "id": "der 0.7.9", + "target": "der" + }, + { + "id": "hex 0.4.3", + "target": "hex" + }, + { + "id": "pem 3.0.4", + "target": "pem" + }, + { + "id": "ring 0.17.8", + "target": "ring" + }, + { + "id": "signature 2.2.0", + "target": "signature" + }, + { + "id": "spki 0.7.3", + "target": "spki" + }, + { + "id": "thiserror 1.0.69", + "target": "thiserror" + }, + { + "id": "zeroize 1.8.1", + "target": "zeroize" } ], "selects": {} }, "edition": "2021", - "version": "0.52.6" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ] + "version": "0.24.0" }, - "license": "MIT OR Apache-2.0", + "license": "MPL-2.0", "license_ids": [ - "Apache-2.0", - "MIT" + "MPL-2.0" ], - "license_file": "license-apache-2.0" + "license_file": "LICENSE" }, - "windows_x86_64_msvc 0.48.5": { - "name": "windows_x86_64_msvc", - "version": "0.48.5", - "package_url": "https://github.com/microsoft/windows-rs", + "xattr 1.3.1": { + "name": "xattr", + "version": "1.3.1", + "package_url": "https://github.com/Stebalien/xattr", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download", - "sha256": "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + "url": "https://static.crates.io/crates/xattr/1.3.1/download", + "sha256": "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" } }, "targets": [ { "Library": { - "crate_name": "windows_x86_64_msvc", + "crate_name": "xattr", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21232,66 +20684,66 @@ ] } } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } } ], - "library_target_name": "windows_x86_64_msvc", + "library_target_name": "xattr", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "unsupported" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "windows_x86_64_msvc 0.48.5", - "target": "build_script_build" + "id": "rustix 0.38.42", + "target": "rustix" } ], - "selects": {} + "selects": { + "cfg(any(target_os = \"freebsd\", target_os = \"netbsd\"))": [ + { + "id": "libc 0.2.168", + "target": "libc" + } + ], + "cfg(target_os = \"linux\")": [ + { + "id": "linux-raw-sys 0.4.14", + "target": "linux_raw_sys" + } + ] + } }, - "edition": "2018", - "version": "0.48.5" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ] + "edition": "2021", + "version": "1.3.1" }, - "license": "MIT OR Apache-2.0", + "license": "MIT/Apache-2.0", "license_ids": [ "Apache-2.0", "MIT" ], - "license_file": "license-apache-2.0" + "license_file": "LICENSE-APACHE" }, - "windows_x86_64_msvc 0.52.6": { - "name": "windows_x86_64_msvc", - "version": "0.52.6", - "package_url": "https://github.com/microsoft/windows-rs", + "xml-rs 0.8.24": { + "name": "xml-rs", + "version": "0.8.24", + "package_url": "https://github.com/kornelski/xml-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download", - "sha256": "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + "url": "https://static.crates.io/crates/xml-rs/0.8.24/download", + "sha256": "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" } }, "targets": [ { "Library": { - "crate_name": "windows_x86_64_msvc", + "crate_name": "xml", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21300,66 +20752,36 @@ ] } } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": { - "allow_empty": true, - "include": [ - "**/*.rs" - ] - } - } } ], - "library_target_name": "windows_x86_64_msvc", + "library_target_name": "xml", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { - "common": [ - { - "id": "windows_x86_64_msvc 0.52.6", - "target": "build_script_build" - } - ], - "selects": {} - }, "edition": "2021", - "version": "0.52.6" - }, - "build_script_attrs": { - "compile_data_glob": [ - "**" - ], - "data_glob": [ - "**" - ] + "version": "0.8.24" }, - "license": "MIT OR Apache-2.0", + "license": "MIT", "license_ids": [ - "Apache-2.0", "MIT" ], - "license_file": "license-apache-2.0" + "license_file": "LICENSE" }, - "winnow 0.6.18": { - "name": "winnow", - "version": "0.6.18", - "package_url": "https://github.com/winnow-rs/winnow", + "xz2 0.1.7": { + "name": "xz2", + "version": "0.1.7", + "package_url": "https://github.com/alexcrichton/xz2-rs", "repository": { "Http": { - "url": "https://static.crates.io/crates/winnow/0.6.18/download", - "sha256": "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" + "url": "https://static.crates.io/crates/xz2/0.1.7/download", + "sha256": "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" } }, "targets": [ { "Library": { - "crate_name": "winnow", + "crate_name": "xz2", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21370,42 +20792,50 @@ } } ], - "library_target_name": "winnow", + "library_target_name": "xz2", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", - "default", - "std" + "static" ], "selects": {} }, - "edition": "2021", - "version": "0.6.18" + "deps": { + "common": [ + { + "id": "lzma-sys 0.1.20", + "target": "lzma_sys" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.7" }, - "license": "MIT", + "license": "MIT/Apache-2.0", "license_ids": [ + "Apache-2.0", "MIT" ], - "license_file": "LICENSE-MIT" + "license_file": "LICENSE-APACHE" }, - "winreg 0.50.0": { - "name": "winreg", - "version": "0.50.0", - "package_url": "https://github.com/gentoo90/winreg-rs", + "yoke 0.7.5": { + "name": "yoke", + "version": "0.7.5", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/winreg/0.50.0/download", - "sha256": "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" + "url": "https://static.crates.io/crates/yoke/0.7.5/download", + "sha256": "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" } }, "targets": [ { "Library": { - "crate_name": "winreg", + "crate_name": "yoke", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21416,47 +20846,65 @@ } } ], - "library_target_name": "winreg", + "library_target_name": "yoke", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "alloc", + "default", + "derive", + "zerofrom" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "cfg-if 1.0.0", - "target": "cfg_if" + "id": "stable_deref_trait 1.2.0", + "target": "stable_deref_trait" }, { - "id": "windows-sys 0.48.0", - "target": "windows_sys" + "id": "zerofrom 0.1.5", + "target": "zerofrom" } ], "selects": {} }, - "edition": "2018", - "version": "0.50.0" + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "yoke-derive 0.7.5", + "target": "yoke_derive" + } + ], + "selects": {} + }, + "version": "0.7.5" }, - "license": "MIT", + "license": "Unicode-3.0", "license_ids": [ - "MIT" + "Unicode-3.0" ], "license_file": "LICENSE" }, - "winsafe 0.0.19": { - "name": "winsafe", - "version": "0.0.19", - "package_url": "https://github.com/rodrigocfd/winsafe", + "yoke-derive 0.7.5": { + "name": "yoke-derive", + "version": "0.7.5", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/winsafe/0.0.19/download", - "sha256": "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + "url": "https://static.crates.io/crates/yoke-derive/0.7.5/download", + "sha256": "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" } }, "targets": [ { - "Library": { - "crate_name": "winsafe", + "ProcMacro": { + "crate_name": "yoke_derive", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21467,40 +20915,55 @@ } } ], - "library_target_name": "winsafe", + "library_target_name": "yoke_derive", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "kernel" + { + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.37", + "target": "quote" + }, + { + "id": "syn 2.0.90", + "target": "syn" + }, + { + "id": "synstructure 0.13.1", + "target": "synstructure" + } ], "selects": {} }, "edition": "2021", - "version": "0.0.19" + "version": "0.7.5" }, - "license": "MIT", + "license": "Unicode-3.0", "license_ids": [ - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE.md" + "license_file": "LICENSE" }, - "x509-certificate 0.23.1": { - "name": "x509-certificate", - "version": "0.23.1", - "package_url": "https://github.com/indygreg/cryptography-rs.git", + "zerofrom 0.1.5": { + "name": "zerofrom", + "version": "0.1.5", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/x509-certificate/0.23.1/download", - "sha256": "66534846dec7a11d7c50a74b7cdb208b9a581cad890b7866430d438455847c85" + "url": "https://static.crates.io/crates/zerofrom/0.1.5/download", + "sha256": "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" } }, "targets": [ { "Library": { - "crate_name": "x509_certificate", + "crate_name": "zerofrom", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21511,89 +20974,50 @@ } } ], - "library_target_name": "x509_certificate", + "library_target_name": "zerofrom", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "test" + "alloc", + "derive" ], "selects": {} }, - "deps": { + "edition": "2021", + "proc_macro_deps": { "common": [ { - "id": "bcder 0.7.4", - "target": "bcder" - }, - { - "id": "bytes 1.6.0", - "target": "bytes" - }, - { - "id": "chrono 0.4.38", - "target": "chrono" - }, - { - "id": "der 0.7.9", - "target": "der" - }, - { - "id": "hex 0.4.3", - "target": "hex" - }, - { - "id": "pem 3.0.4", - "target": "pem" - }, - { - "id": "ring 0.17.8", - "target": "ring" - }, - { - "id": "signature 2.2.0", - "target": "signature" - }, - { - "id": "spki 0.7.3", - "target": "spki" - }, - { - "id": "thiserror 1.0.64", - "target": "thiserror" - }, - { - "id": "zeroize 1.7.0", - "target": "zeroize" + "id": "zerofrom-derive 0.1.5", + "target": "zerofrom_derive" } ], "selects": {} }, - "edition": "2021", - "version": "0.23.1" + "version": "0.1.5" }, - "license": "MPL-2.0", + "license": "Unicode-3.0", "license_ids": [ - "MPL-2.0" + "Unicode-3.0" ], - "license_file": null + "license_file": "LICENSE" }, - "xattr 1.3.1": { - "name": "xattr", - "version": "1.3.1", - "package_url": "https://github.com/Stebalien/xattr", + "zerofrom-derive 0.1.5": { + "name": "zerofrom-derive", + "version": "0.1.5", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/xattr/1.3.1/download", - "sha256": "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" + "url": "https://static.crates.io/crates/zerofrom-derive/0.1.5/download", + "sha256": "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" } }, "targets": [ { - "Library": { - "crate_name": "xattr", + "ProcMacro": { + "crate_name": "zerofrom_derive", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21604,64 +21028,55 @@ } } ], - "library_target_name": "xattr", + "library_target_name": "zerofrom_derive", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "unsupported" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "rustix 0.38.37", - "target": "rustix" + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.37", + "target": "quote" + }, + { + "id": "syn 2.0.90", + "target": "syn" + }, + { + "id": "synstructure 0.13.1", + "target": "synstructure" } ], - "selects": { - "cfg(any(target_os = \"freebsd\", target_os = \"netbsd\"))": [ - { - "id": "libc 0.2.160", - "target": "libc" - } - ], - "cfg(target_os = \"linux\")": [ - { - "id": "linux-raw-sys 0.4.14", - "target": "linux_raw_sys" - } - ] - } + "selects": {} }, "edition": "2021", - "version": "1.3.1" + "version": "0.1.5" }, - "license": "MIT/Apache-2.0", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "xml-rs 0.8.20": { - "name": "xml-rs", - "version": "0.8.20", - "package_url": "https://github.com/kornelski/xml-rs", + "zeroize 1.8.1": { + "name": "zeroize", + "version": "1.8.1", + "package_url": "https://github.com/RustCrypto/utils/tree/master/zeroize", "repository": { "Http": { - "url": "https://static.crates.io/crates/xml-rs/0.8.20/download", - "sha256": "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + "url": "https://static.crates.io/crates/zeroize/1.8.1/download", + "sha256": "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" } }, "targets": [ { "Library": { - "crate_name": "xml", + "crate_name": "zeroize", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21672,34 +21087,53 @@ } } ], - "library_target_name": "xml", + "library_target_name": "zeroize", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "alloc", + "default", + "derive", + "zeroize_derive" + ], + "selects": {} + }, "edition": "2021", - "version": "0.8.20" + "proc_macro_deps": { + "common": [ + { + "id": "zeroize_derive 1.4.2", + "target": "zeroize_derive" + } + ], + "selects": {} + }, + "version": "1.8.1" }, - "license": "MIT", + "license": "Apache-2.0 OR MIT", "license_ids": [ + "Apache-2.0", "MIT" ], - "license_file": "LICENSE" + "license_file": "LICENSE-APACHE" }, - "xz2 0.1.7": { - "name": "xz2", - "version": "0.1.7", - "package_url": "https://github.com/alexcrichton/xz2-rs", + "zeroize_derive 1.4.2": { + "name": "zeroize_derive", + "version": "1.4.2", + "package_url": "https://github.com/RustCrypto/utils/tree/master/zeroize/derive", "repository": { "Http": { - "url": "https://static.crates.io/crates/xz2/0.1.7/download", - "sha256": "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" + "url": "https://static.crates.io/crates/zeroize_derive/1.4.2/download", + "sha256": "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" } }, "targets": [ { - "Library": { - "crate_name": "xz2", + "ProcMacro": { + "crate_name": "zeroize_derive", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21710,50 +21144,52 @@ } } ], - "library_target_name": "xz2", + "library_target_name": "zeroize_derive", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "static" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "lzma-sys 0.1.20", - "target": "lzma_sys" + "id": "proc-macro2 1.0.92", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.37", + "target": "quote" + }, + { + "id": "syn 2.0.90", + "target": "syn" } ], "selects": {} }, - "edition": "2018", - "version": "0.1.7" + "edition": "2021", + "version": "1.4.2" }, - "license": "MIT/Apache-2.0", + "license": "Apache-2.0 OR MIT", "license_ids": [ "Apache-2.0", "MIT" ], "license_file": "LICENSE-APACHE" }, - "zeroize 1.7.0": { - "name": "zeroize", - "version": "1.7.0", - "package_url": "https://github.com/RustCrypto/utils/tree/master/zeroize", + "zerovec 0.10.4": { + "name": "zerovec", + "version": "0.10.4", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/zeroize/1.7.0/download", - "sha256": "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + "url": "https://static.crates.io/crates/zerovec/0.10.4/download", + "sha256": "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" } }, "targets": [ { "Library": { - "crate_name": "zeroize", + "crate_name": "zerovec", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21764,17 +21200,28 @@ } } ], - "library_target_name": "zeroize", + "library_target_name": "zerovec", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", - "default", "derive", - "zeroize_derive" + "yoke" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "yoke 0.7.5", + "target": "yoke" + }, + { + "id": "zerofrom 0.1.5", + "target": "zerofrom" + } ], "selects": {} }, @@ -21782,35 +21229,34 @@ "proc_macro_deps": { "common": [ { - "id": "zeroize_derive 1.4.2", - "target": "zeroize_derive" + "id": "zerovec-derive 0.10.3", + "target": "zerovec_derive" } ], "selects": {} }, - "version": "1.7.0" + "version": "0.10.4" }, - "license": "Apache-2.0 OR MIT", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "zeroize_derive 1.4.2": { - "name": "zeroize_derive", - "version": "1.4.2", - "package_url": "https://github.com/RustCrypto/utils/tree/master/zeroize/derive", + "zerovec-derive 0.10.3": { + "name": "zerovec-derive", + "version": "0.10.3", + "package_url": "https://github.com/unicode-org/icu4x", "repository": { "Http": { - "url": "https://static.crates.io/crates/zeroize_derive/1.4.2/download", - "sha256": "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" + "url": "https://static.crates.io/crates/zerovec-derive/0.10.3/download", + "sha256": "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" } }, "targets": [ { "ProcMacro": { - "crate_name": "zeroize_derive", + "crate_name": "zerovec_derive", "crate_root": "src/lib.rs", "srcs": { "allow_empty": true, @@ -21821,7 +21267,7 @@ } } ], - "library_target_name": "zeroize_derive", + "library_target_name": "zerovec_derive", "common_attrs": { "compile_data_glob": [ "**" @@ -21829,7 +21275,7 @@ "deps": { "common": [ { - "id": "proc-macro2 1.0.88", + "id": "proc-macro2 1.0.92", "target": "proc_macro2" }, { @@ -21837,30 +21283,29 @@ "target": "quote" }, { - "id": "syn 2.0.79", + "id": "syn 2.0.90", "target": "syn" } ], "selects": {} }, "edition": "2021", - "version": "1.4.2" + "version": "0.10.3" }, - "license": "Apache-2.0 OR MIT", + "license": "Unicode-3.0", "license_ids": [ - "Apache-2.0", - "MIT" + "Unicode-3.0" ], - "license_file": "LICENSE-APACHE" + "license_file": "LICENSE" }, - "zip 2.2.0": { + "zip 2.2.1": { "name": "zip", - "version": "2.2.0", + "version": "2.2.1", "package_url": "https://github.com/zip-rs/zip2.git", "repository": { "Http": { - "url": "https://static.crates.io/crates/zip/2.2.0/download", - "sha256": "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" + "url": "https://static.crates.io/crates/zip/2.2.1/download", + "sha256": "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" } }, "targets": [ @@ -21910,7 +21355,7 @@ "target": "crc32fast" }, { - "id": "flate2 1.0.34", + "id": "flate2 1.0.35", "target": "flate2" }, { @@ -21922,11 +21367,11 @@ "target": "memchr" }, { - "id": "thiserror 1.0.64", + "id": "thiserror 2.0.6", "target": "thiserror" }, { - "id": "zip 2.2.0", + "id": "zip 2.2.1", "target": "build_script_build" } ], @@ -21955,7 +21400,7 @@ ], "selects": {} }, - "version": "2.2.0" + "version": "2.2.1" }, "build_script_attrs": { "compile_data_glob": [ @@ -22080,7 +21525,7 @@ "deps": { "common": [ { - "id": "libc 0.2.160", + "id": "libc 0.2.168", "target": "libc" }, { @@ -22214,7 +21659,7 @@ }, "binary_crates": [], "workspace_members": { - "selenium-manager 0.4.24": "rust" + "selenium-manager 0.4.28-nightly": "rust" }, "conditions": { "aarch64-apple-darwin": [ @@ -22226,9 +21671,6 @@ "aarch64-apple-ios-sim": [ "aarch64-apple-ios-sim" ], - "aarch64-fuchsia": [ - "aarch64-fuchsia" - ], "aarch64-linux-android": [ "aarch64-linux-android" ], @@ -22236,6 +21678,9 @@ "aarch64-pc-windows-msvc": [ "aarch64-pc-windows-msvc" ], + "aarch64-unknown-fuchsia": [ + "aarch64-unknown-fuchsia" + ], "aarch64-unknown-linux-gnu": [ "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu" @@ -22258,7 +21703,7 @@ "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": [ "x86_64-pc-windows-msvc" ], - "cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))": [ + "cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))": [ "aarch64-linux-android", "armv7-linux-androideabi", "i686-linux-android", @@ -22274,7 +21719,7 @@ "armv7-linux-androideabi", "armv7-unknown-linux-gnueabi" ], - "cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))": [ + "cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))": [ "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "arm-unknown-linux-gnueabi", @@ -22283,12 +21728,12 @@ "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu" ], - "cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))": [ + "cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))": [ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", + "aarch64-unknown-fuchsia", "aarch64-unknown-nto-qnx710", "armv7-linux-androideabi", "i686-apple-darwin", @@ -22301,12 +21746,12 @@ "thumbv7em-none-eabi", "thumbv8m.main-none-eabi", "wasm32-unknown-unknown", - "wasm32-wasi", + "wasm32-wasip1", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-none" ], "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ @@ -22354,9 +21799,9 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", "aarch64-pc-windows-msvc", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22372,10 +21817,10 @@ "thumbv8m.main-none-eabi", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-pc-windows-msvc", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu", "x86_64-unknown-none" @@ -22384,9 +21829,9 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", "aarch64-pc-windows-msvc", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22397,10 +21842,10 @@ "i686-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-pc-windows-msvc", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu", "x86_64-unknown-none" @@ -22409,9 +21854,9 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", "aarch64-pc-windows-msvc", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22422,10 +21867,10 @@ "i686-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-pc-windows-msvc", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu", "x86_64-unknown-none" @@ -22446,8 +21891,8 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22460,12 +21905,12 @@ "i686-unknown-linux-gnu", "powerpc-unknown-linux-gnu", "s390x-unknown-linux-gnu", - "wasm32-wasi", + "wasm32-wasip1", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu" ], @@ -22473,8 +21918,8 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22487,12 +21932,12 @@ "i686-unknown-linux-gnu", "powerpc-unknown-linux-gnu", "s390x-unknown-linux-gnu", - "wasm32-wasi", + "wasm32-wasip1", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu" ], @@ -22500,9 +21945,9 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", "aarch64-pc-windows-msvc", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22518,10 +21963,10 @@ "s390x-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-pc-windows-msvc", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu" ], @@ -22530,8 +21975,8 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22549,12 +21994,12 @@ "thumbv7em-none-eabi", "thumbv8m.main-none-eabi", "wasm32-unknown-unknown", - "wasm32-wasi", + "wasm32-wasip1", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu", "x86_64-unknown-none" @@ -22563,9 +22008,9 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", "aarch64-pc-windows-msvc", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22585,17 +22030,17 @@ "thumbv8m.main-none-eabi", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-pc-windows-msvc", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu", "x86_64-unknown-none" ], "cfg(target_arch = \"wasm32\")": [ "wasm32-unknown-unknown", - "wasm32-wasi" + "wasm32-wasip1" ], "cfg(target_feature = \"atomics\")": [], "cfg(target_os = \"android\")": [ @@ -22617,14 +22062,9 @@ "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu" ], - "cfg(target_os = \"macos\")": [ - "aarch64-apple-darwin", - "i686-apple-darwin", - "x86_64-apple-darwin" - ], "cfg(target_os = \"redox\")": [], "cfg(target_os = \"wasi\")": [ - "wasm32-wasi" + "wasm32-wasip1" ], "cfg(target_os = \"windows\")": [ "aarch64-pc-windows-msvc", @@ -22636,8 +22076,8 @@ "aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", - "aarch64-fuchsia", "aarch64-linux-android", + "aarch64-unknown-fuchsia", "aarch64-unknown-linux-gnu", "aarch64-unknown-nixos-gnu", "aarch64-unknown-nto-qnx710", @@ -22652,9 +22092,9 @@ "s390x-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-apple-ios", - "x86_64-fuchsia", "x86_64-linux-android", "x86_64-unknown-freebsd", + "x86_64-unknown-fuchsia", "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu" ], @@ -22701,8 +22141,8 @@ "wasm32-unknown-unknown": [ "wasm32-unknown-unknown" ], - "wasm32-wasi": [ - "wasm32-wasi" + "wasm32-wasip1": [ + "wasm32-wasip1" ], "x86_64-apple-darwin": [ "x86_64-apple-darwin" @@ -22710,9 +22150,6 @@ "x86_64-apple-ios": [ "x86_64-apple-ios" ], - "x86_64-fuchsia": [ - "x86_64-fuchsia" - ], "x86_64-linux-android": [ "x86_64-linux-android" ], @@ -22724,6 +22161,9 @@ "x86_64-unknown-freebsd": [ "x86_64-unknown-freebsd" ], + "x86_64-unknown-fuchsia": [ + "x86_64-unknown-fuchsia" + ], "x86_64-unknown-linux-gnu": [ "x86_64-unknown-linux-gnu", "x86_64-unknown-nixos-gnu" @@ -22736,33 +22176,35 @@ ] }, "direct_deps": [ - "anyhow 1.0.91", - "apple-flat-package 0.18.0", - "bzip2 0.4.4", - "clap 4.5.20", + "anyhow 1.0.94", + "apple-flat-package 0.20.0", + "bzip2 0.5.0", + "clap 4.5.23", "debpkg 0.6.0", "directories 5.0.1", "env_logger 0.11.5", "exitcode 1.1.2", - "flate2 1.0.34", + "flate2 1.0.35", "infer 0.16.0", "log 0.4.22", "regex 1.11.1", - "reqwest 0.12.8", - "serde 1.0.210", - "serde_json 1.0.128", + "reqwest 0.12.9", + "serde 1.0.216", + "serde_json 1.0.133", "sevenz-rust 0.6.1", - "tar 0.4.42", - "tempfile 3.13.0", - "tokio 1.40.0", + "tar 0.4.43", + "tempfile 3.14.0", + "tokio 1.42.0", "toml 0.8.19", "walkdir 2.5.0", - "which 6.0.3", - "zip 2.2.0" + "which 7.0.0", + "xz2 0.1.7", + "zip 2.2.1" ], "direct_dev_deps": [ "assert_cmd 2.0.16", "is_executable 1.0.4", "rstest 0.19.0" - ] + ], + "unused_patches": [] } diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 2696beb8223ebb..94042eaa07204e 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -98,18 +98,18 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.91" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" dependencies = [ "backtrace", ] [[package]] name = "apple-flat-package" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6adc520e05304de5ec383487786fa20e9c636fe972e59719cdd93621a2db6f1" +checksum = "9c9d5a1fd8af4a376cc33d7e816a13f8ce127d52101f5dbc8061fb595397bea0" dependencies = [ "apple-xar", "cpio-archive", @@ -117,18 +117,18 @@ dependencies = [ "scroll", "serde", "serde-xml-rs", - "thiserror", + "thiserror 2.0.6", ] [[package]] name = "apple-xar" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "844e00dc1e665b3cf0bba745aa9c6464292ca512db0c11384511586701eb0335" +checksum = "9631e781df71ebd049d7b4988cdae88712324cb20eb127fd79026bc8f1335d93" dependencies = [ - "base64 0.21.7", + "base64", "bcder", - "bzip2", + "bzip2 0.4.4", "chrono", "cryptographic-message-syntax", "digest", @@ -136,14 +136,14 @@ dependencies = [ "log", "md-5", "rand", - "reqwest 0.11.27", + "reqwest", "scroll", "serde", "serde-xml-rs", "sha1", "sha2", "signature", - "thiserror", + "thiserror 2.0.6", "url", "x509-certificate", "xml-rs", @@ -208,12 +208,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -297,9 +291,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "bzip2" @@ -311,6 +305,16 @@ dependencies = [ "libc", ] +[[package]] +name = "bzip2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bafdbf26611df8c14810e268ddceda071c297570a5fb360ceddf617fe417ef58" +dependencies = [ + "bzip2-sys", + "libc", +] + [[package]] name = "bzip2-sys" version = "0.1.11+1.0.8" @@ -367,9 +371,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -377,9 +381,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -401,9 +405,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "colorchoice" @@ -417,16 +421,6 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.6" @@ -435,14 +429,14 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpio-archive" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63d5133d716d3d82da8c76367ddb0ab1733e2629f1462e4f39947e13b8b4b741" +checksum = "f11d34b07689c21889fc89bd7cc885b3244b0157bbededf4a1c159832cd0df05" dependencies = [ "chrono", "is_executable", "simple-file-manifest", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -496,16 +490,16 @@ dependencies = [ [[package]] name = "cryptographic-message-syntax" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c324ba1028cef7e3a71a00cbf585637bb0215dec2f6a2b566d094190a1309b" +checksum = "97a99e58d7755c646cb3f2a138d99f90da4c495282e1700b82daff8a48759ce0" dependencies = [ "bcder", "bytes", "chrono", "hex", "pem", - "reqwest 0.11.27", + "reqwest", "ring", "signature", "x509-certificate", @@ -519,7 +513,7 @@ checksum = "7ffffa9a03449467cfac11c9a4260556f477de22a935bb5e9475153de323c337" dependencies = [ "ar", "arrayvec", - "bzip2", + "bzip2 0.4.4", "flate2", "indexmap 1.9.3", "infer 0.8.1", @@ -619,15 +613,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - [[package]] name = "env_filter" version = "0.1.0" @@ -659,12 +644,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -704,9 +689,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "libz-sys", @@ -856,25 +841,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.2.6", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -914,17 +880,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.1.0" @@ -936,17 +891,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.0" @@ -954,7 +898,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" dependencies = [ "bytes", - "http 1.1.0", + "http", ] [[package]] @@ -965,8 +909,8 @@ checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" dependencies = [ "bytes", "futures-core", - "http 1.1.0", - "http-body 1.0.0", + "http", + "http-body", "pin-project-lite", ] @@ -976,42 +920,12 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "humantime" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" -[[package]] -name = "hyper" -version = "0.14.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.3.1" @@ -1021,8 +935,8 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", - "http-body 1.0.0", + "http", + "http-body", "httparse", "itoa", "pin-project-lite", @@ -1031,20 +945,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" -dependencies = [ - "futures-util", - "http 0.2.12", - "hyper 0.14.28", - "rustls 0.21.12", - "tokio", - "tokio-rustls 0.24.1", -] - [[package]] name = "hyper-rustls" version = "0.27.2" @@ -1052,15 +952,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.3.1", + "http", + "hyper", "hyper-util", - "rustls 0.23.12", + "rustls", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls", "tower-service", - "webpki-roots 0.26.1", + "webpki-roots", ] [[package]] @@ -1072,9 +972,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", - "http-body 1.0.0", - "hyper 1.3.1", + "http", + "http-body", + "hyper", "pin-project-lite", "socket2", "tokio", @@ -1106,14 +1006,143 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1201,9 +1230,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.160" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b21006cd1874ae9e650973c565615676dc4a274c965bb0a73796dac838ce4f" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "libredox" @@ -1232,6 +1261,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "log" version = "0.4.22" @@ -1362,7 +1397,7 @@ version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "base64 0.22.1", + "base64", "serde", ] @@ -1451,9 +1486,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -1469,9 +1504,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.12", + "rustls", "socket2", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -1486,9 +1521,9 @@ dependencies = [ "rand", "ring", "rustc-hash", - "rustls 0.23.12", + "rustls", "slab", - "thiserror", + "thiserror 1.0.69", "tinyvec", "tracing", ] @@ -1562,7 +1597,7 @@ checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1602,60 +1637,20 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.28", - "hyper-rustls 0.24.2", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls 0.21.12", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration", - "tokio", - "tokio-rustls 0.24.1", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 0.25.4", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ - "base64 0.22.1", + "base64", "bytes", + "futures-channel", "futures-core", "futures-util", - "http 1.1.0", - "http-body 1.0.0", + "http", + "http-body", "http-body-util", - "hyper 1.3.1", - "hyper-rustls 0.27.2", + "hyper", + "hyper-rustls", "hyper-util", "ipnet", "js-sys", @@ -1665,21 +1660,21 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.12", - "rustls-pemfile 2.1.2", + "rustls", + "rustls-pemfile", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.1", + "webpki-roots", "windows-registry", ] @@ -1750,27 +1745,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustls" -version = "0.21.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" -dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.7", - "sct", + "windows-sys 0.59.0", ] [[package]] @@ -1782,27 +1765,18 @@ dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.6", + "rustls-webpki", "subtle", "zeroize", ] -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - [[package]] name = "rustls-pemfile" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.1", + "base64", "rustls-pki-types", ] @@ -1812,16 +1786,6 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "rustls-webpki" version = "0.102.6" @@ -1868,24 +1832,14 @@ dependencies = [ "syn", ] -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "selenium-manager" -version = "0.4.24" +version = "0.4.28-nightly" dependencies = [ "anyhow", "apple-flat-package", "assert_cmd", - "bzip2", + "bzip2 0.5.0", "clap", "debpkg", "directories", @@ -1896,7 +1850,7 @@ dependencies = [ "is_executable", "log", "regex", - "reqwest 0.12.8", + "reqwest", "rstest", "serde", "serde_json", @@ -1907,6 +1861,7 @@ dependencies = [ "toml", "walkdir", "which", + "xz2", "zip", ] @@ -1918,9 +1873,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] @@ -1933,15 +1888,15 @@ checksum = "fb3aa78ecda1ebc9ec9847d5d3aba7d618823446a049ba2491940506da6e2782" dependencies = [ "log", "serde", - "thiserror", + "thiserror 1.0.69", "xml-rs", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", @@ -1950,9 +1905,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -2082,6 +2037,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "strsim" version = "0.11.1" @@ -2096,21 +2057,15 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "2.0.79" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.1" @@ -2121,31 +2076,21 @@ dependencies = [ ] [[package]] -name = "system-configuration" -version = "0.5.1" +name = "synstructure" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -2154,9 +2099,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -2173,18 +2118,38 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" +dependencies = [ + "thiserror-impl 2.0.6", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" dependencies = [ "proc-macro2", "quote", @@ -2221,6 +2186,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -2238,9 +2213,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -2263,40 +2238,17 @@ dependencies = [ "syn", ] -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls 0.21.12", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls", "rustls-pki-types", "tokio", ] -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - [[package]] name = "toml" version = "0.8.19" @@ -2391,27 +2343,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - [[package]] name = "untrusted" version = "0.9.0" @@ -2420,15 +2357,27 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.1" @@ -2563,12 +2512,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki-roots" -version = "0.25.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - [[package]] name = "webpki-roots" version = "0.26.1" @@ -2580,9 +2523,9 @@ dependencies = [ [[package]] name = "which" -version = "6.0.3" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b" dependencies = [ "either", "home", @@ -2817,27 +2760,29 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winsafe" version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "x509-certificate" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66534846dec7a11d7c50a74b7cdb208b9a581cad890b7866430d438455847c85" +checksum = "e57b9f8bcae7c1f36479821ae826d75050c60ce55146fd86d3553ed2573e2762" dependencies = [ "bcder", "bytes", @@ -2848,7 +2793,7 @@ dependencies = [ "ring", "signature", "spki", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -2865,9 +2810,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.20" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" +checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" [[package]] name = "xz2" @@ -2878,11 +2823,56 @@ dependencies = [ "lzma-sys", ] +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ "zeroize_derive", ] @@ -2898,11 +2888,33 @@ dependencies = [ "syn", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "arbitrary", "crc32fast", @@ -2911,7 +2923,7 @@ dependencies = [ "flate2", "indexmap 2.2.6", "memchr", - "thiserror", + "thiserror 2.0.6", ] [[package]] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index f5854e15f80ffe..1c93de992cd059 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "selenium-manager" -version = "0.4.24" # don't forget to update rust/BUILD.bazel +version = "0.4.28-nightly" # don't forget to update rust/BUILD.bazel edition = "2021" authors = ["Selenium Result<(), Ok(()) } -pub fn uncompress_bz2(compressed_file: &str, target: &Path, log: &Logger) -> Result<(), Error> { +pub fn uncompress_tar(decoder: &mut dyn Read, target: &Path, log: &Logger) -> Result<(), Error> { log.trace(format!( - "Uncompress {} to {}", - compressed_file, + "Uncompress compressed tarball to {}", target.display() )); - let mut bz_decoder = BzDecoder::new(File::open(compressed_file)?); let mut buffer: Vec = Vec::new(); - bz_decoder.read_to_end(&mut buffer)?; + decoder.read_to_end(&mut buffer)?; let mut archive = Archive::new(Cursor::new(buffer)); if !target.exists() { for entry in archive.entries()? { diff --git a/scripts/pinned_browsers.py b/scripts/pinned_browsers.py index b41b169577f467..7dd7a4bf09e60f 100755 --- a/scripts/pinned_browsers.py +++ b/scripts/pinned_browsers.py @@ -175,10 +175,24 @@ def chrome(selected_version): return content +def convert_keys_to_lowercase(obj): + if isinstance(obj, dict): + return {k.lower(): convert_keys_to_lowercase(v) for k, v in obj.items()} + elif isinstance(obj, list): + return [convert_keys_to_lowercase(i) for i in obj] + else: + return obj + + +def case_insensitive_json_loads(json_str): + data = json.loads(json_str) + return convert_keys_to_lowercase(data) + + def edge(): content = "" r = http.request("GET", "https://edgeupdates.microsoft.com/api/products") - all_data = json.loads(r.data) + all_data = case_insensitive_json_loads(r.data) linux = None linux_hash = None @@ -187,20 +201,20 @@ def edge(): version = None for data in all_data: - if not "Stable" == data.get("Product"): + if not "Stable" == data.get("product"): continue - for release in data["Releases"]: - if "MacOS" == release.get("Platform"): - for artifact in release["Artifacts"]: - if "pkg" == artifact["ArtifactName"]: - mac = artifact["Location"] - mac_hash = artifact["Hash"] - mac_version = release["ProductVersion"] - elif "Linux" == release.get("Platform"): - for artifact in release["Artifacts"]: - if "deb" == artifact["ArtifactName"]: - linux = artifact["Location"] - linux_hash = artifact["Hash"] + for release in data["releases"]: + if "MacOS" == release.get("platform"): + for artifact in release["artifacts"]: + if "pkg" == artifact["artifactname"]: + mac = artifact["location"] + mac_hash = artifact["hash"] + mac_version = release["productversion"] + elif "Linux" == release.get("platform"): + for artifact in release["artifacts"]: + if "deb" == artifact["artifactname"]: + linux = artifact["location"] + linux_hash = artifact["hash"] if mac and mac_hash: content += """