# Go home and capture token GET https://example.org HTTP 200 [Captures] csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)" # Do login! POST https://example.org/login X-CSRF-TOKEN: {{csrf_token}} [Form] user: toto password: 1234 HTTP 302
GET https://example.org/api/health GET https://example.org/api/step1 GET https://example.org/api/step2 GET https://example.org/api/step3
POST https://example.org/api/tests { "id": "4568", "evaluate": true } HTTP 200 [Asserts] header "X-Frame-Options" == "SAMEORIGIN" jsonpath "$.status" == "RUNNING" # Check the status code jsonpath "$.tests" count == 25 # Check the number of items jsonpath "$.id" matches /\d{4}/ # Check the format of the id
GET https://example.org HTTP 200 [Asserts] xpath "normalize-space(//head/title)" == "Hello world!"
POST https://example.org/graphql ```graphql { human(id: "1000") { name height(unit: FOOT) } } ``` HTTP 200
POST https://example.org/InStock Content-Type: application/soap+xml; charset=utf-8 SOAPAction: "http://www.w3.org/2003/05/soap-envelope" <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="https://example.org"> <soap:Header></soap:Header> <soap:Body> <m:GetStockPrice> <m:StockName>GOOG</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> HTTP 200
GET https://example.org/api/v1/pets HTTP 200 [Asserts] duration < 1000 # Duration in ms
GET https://example.org/data.tar.gz HTTP 200 [Asserts] sha256 == hex,039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81;
POST https://hurl.dev/api/feedback { "name": "John Doe", "feedback": "Hurl is awesome!" } HTTP 200
$ vi sample.hurl GET https://example.org $ hurl sample.hurl
$ hurl --test sample.hurl
GET https://example.ord/cats/123 [Options] output: cat123.txt # use - to output to stdout HTTP 200 GET https://example.ord/dogs/567 HTTP 200
$ hurl --test integration/*.hurl $ hurl --test .
GET https://example.org
GET https://example.org/a GET https://example.org/b HEAD https://example.org/c GET https://example.org/c
GET https://example.org/news User-Agent: Mozilla/5.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Connection: keep-alive
GET https://example.org/news [Query] order: newest search: something to search count: 100
GET https://example.org/news?order=newest&search=something%20to%20search&count=100
GET https://example.org/protected [BasicAuth] bob: secret
# Authorization header value can be computed with `echo -n 'bob:secret' | base64` GET https://example.org/protected Authorization: Basic Ym9iOnNlY3JldA==
$ hurl --user bob:secret login.hurl
GET https://example.org/login [Options] user: bob:secret HTTP 200 GET https://example.org/login [Options] user: alice:secret HTTP 200
POST https://sample.org/orders HTTP 201 [Captures] order_id: jsonpath "$.order.id" GET https://sample.org/orders/{{order_id}} HTTP 200
POST https://example.org/contact [Form] default: false token: {{token}} email: john.doe@rookie.org number: 33611223344
POST https://example.org/upload [Multipart] field1: value1 field2: file,example.txt; # One can specify the file content type: field3: file,example.zip; application/zip
POST https://example.org/upload Content-Type: multipart/form-data; boundary="boundary" ``` --boundary Content-Disposition: form-data; name="key1" value1 --boundary Content-Disposition: form-data; name="upload1"; filename="data.txt" Content-Type: text/plain Hello World! --boundary Content-Disposition: form-data; name="upload2"; filename="data.html" Content-Type: text/html <div>Hello <b>World</b>!</div> --boundary-- ```
POST https://example.org/api/tests { "id": "456", "evaluate": true }
POST https://example.org/api/tests Content-Type: application/json file,data.json;
PUT https://example.org/api/hits Content-Type: application/json { "key0": "{{a_string}}", "key1": {{a_bool}}, "key2": {{a_null}}, "key3": {{a_number}} }
$ hurl --variable a_string=apple \ --variable a_bool=true \ --variable a_null=null \ --variable a_number=42 \ test.hurl
{
"key0": "apple",
"key1": true,
"key2": null,
"key3": 42
}
POST https://example.org/echo/post/xml ```xml <?xml version="1.0" encoding="utf-8"?> <Request> <Login>{{login}}</Login> <Password>{{password}}</Password> </Request> ```
POST https://example.org/starwars/graphql ```graphql { human(id: "1000") { name height(unit: FOOT) } } ```
POST https://example.org/starwars/graphql ```graphql query Hero($episode: Episode, $withFriends: Boolean!) { hero(episode: $episode) { name friends @include(if: $withFriends) { name } } } variables { "episode": "JEDI", "withFriends": false } ```
POST https://example.org/api/foo { "name": "foo", "email": "{{newUuid}}@test.com" }
GET https://example.org/api/foo [Query] date: {{newDate}} HTTP 200
# A request with (almost) no check: GET https://foo.com # A status code check: GET https://foo.com HTTP 200 # A test on response body GET https://foo.com HTTP 200 [Asserts] jsonpath "$.state" == "running"
GET https://example.org/order/435 HTTP 200
GET https://example.org/order/435 # Testing status code is in a 200-300 range HTTP * [Asserts] status >= 200 status < 300
GET https://example.org/index.html HTTP 200 Set-Cookie: theme=light Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
GET https://example.org HTTP 302 [Asserts] header "Location" contains "www.example.net"
GET https://example.org/index.html HTTP 200 Set-Cookie: theme=light Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT [Asserts] header "Location" contains "www.example.net"
GET https://example.org/order screencapability: low HTTP 200 [Asserts] jsonpath "$.validated" == true jsonpath "$.userInfo.firstName" == "Franck" jsonpath "$.userInfo.lastName" == "Herbert" jsonpath "$.hasDevice" == false jsonpath "$.links" count == 12 jsonpath "$.state" != null jsonpath "$.order" matches "^order-\\d{8}$" jsonpath "$.order" matches /^order-\d{8}$/ # Alternative syntax with regex literal jsonpath "$.id" matches /(?i)[a-z]*/ # See syntax for flags <https://docs.rs/regex/latest/regex/#grouping-and-flags> jsonpath "$.created" isIsoDate
GET https://example.org HTTP 200 Content-Type: text/html; charset=UTF-8 [Asserts] xpath "string(/html/head/title)" contains "Example" # Check title xpath "count(//p)" == 2 # Check the number of p xpath "//p" count == 2 # Similar assert for p xpath "boolean(count(//h2))" == false # Check there is no h2 xpath "//h2" not exists # Similar assert for h2 xpath "string(//div[1])" matches /Hello.*/
GET https://example.org/home HTTP 200 [Asserts] cookie "JSESSIONID" == "8400BAFE2F66443613DC38AE3D9D6239" cookie "JSESSIONID[Value]" == "8400BAFE2F66443613DC38AE3D9D6239" cookie "JSESSIONID[Expires]" contains "Wed, 13 Jan 2021" cookie "JSESSIONID[Secure]" exists cookie "JSESSIONID[HttpOnly]" exists cookie "JSESSIONID[SameSite]" == "Lax"
GET https://example.org/data.tar.gz HTTP 200 [Asserts] sha256 == hex,039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81;
GET https://example.org HTTP 200 [Asserts] certificate "Subject" == "CN=example.org" certificate "Issuer" == "C=US, O=Let's Encrypt, CN=R3" certificate "Expire-Date" daysAfterNow > 15 certificate "Serial-Number" matches /[\da-f]+/
GET https://example.org/api/cats/123 HTTP 200 { "name" : "Purrsloud", "species" : "Cat", "favFoods" : ["wet food", "dry food", "<strong>any</strong> food"], "birthYear" : 2016, "photo" : "https://learnwebcode.github.io/json-example/images/cat-2.jpg" }
GET https://example.org/index.html HTTP 200 [Asserts] body == file,cat.json;
GET https://example.org/api/catalog HTTP 200 <?xml version="1.0" encoding="UTF-8"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book> </catalog>
GET https://example.org/models HTTP 200 ``` Year,Make,Model,Description,Price 1997,Ford,E350,"ac, abs, moon",3000.00 1999,Chevy,"Venture ""Extended Edition""","",4900.00 1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00 1996,Jeep,Grand Cherokee,"MUST SELL! air, moon roof, loaded",4799.00 ```
POST https://example.org/helloworld HTTP 200 `Hello world!`
GET https://example.org HTTP 200 file,data.bin;
$ hurl --test --report-html build/report/ *.hurl
$ hurl --test --report-json build/report/ *.hurl
$ hurl --test --report-junit build/report.xml *.hurl
$ hurl --test --report-tap build/report.txt *.hurl
$ hurl --json *.hurl
GET https://foo.com HTTP/3 200 GET https://bar.com HTTP/2 200
GET https://foo.com HTTP 200 [Asserts] version == "3" GET https://bar.com HTTP 200 [Asserts] version == "2" version toFloat > 1.1
GET https://foo.com HTTP 200 [Asserts] ip == "2001:0db8:85a3:0000:0000:8a2e:0370:733" ip startsWith "2001" ip isIpv6
# Create a new job POST https://api.example.org/jobs HTTP 201 [Captures] job_id: jsonpath "$.id" [Asserts] jsonpath "$.state" == "RUNNING" # Pull job status until it is completed GET https://api.example.org/jobs/{{job_id}} [Options] retry: 10 # maximum number of retry, -1 for unlimited retry-interval: 500ms HTTP 200 [Asserts] jsonpath "$.state" == "COMPLETED"
# Delaying this request by 5 seconds (aka sleep) GET https://example.org/turtle [Options] delay: 5s HTTP 200 # No delay! GET https://example.org/turtle HTTP 200
# a, c, d are run, b is skipped GET https://example.org/a GET https://example.org/b [Options] skip: true GET https://example.org/c GET https://example.org/d
GET https://sample.org/helloworld HTTP * [Asserts] duration < 1000 # Check that response time is less than one second
POST https://example.org/InStock Content-Type: application/soap+xml; charset=utf-8 SOAPAction: "http://www.w3.org/2003/05/soap-envelope" <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="https://example.org"> <soap:Header></soap:Header> <soap:Body> <m:GetStockPrice> <m:StockName>GOOG</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> HTTP 200
GET https://example.org HTTP 200 [Captures] csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)" POST https://example.org/login?user=toto&password=1234 X-CSRF-TOKEN: {{csrf_token}} HTTP 302
$ hurl --secret token=1234 file.hurl
POST https://example.org X-Token: {{token}} { "name": "Alice", "value": 100 } HTTP 200
# Get an authorization token: GET https://example.org/token HTTP 200 [Captures] token: header "X-Token" redact # Send an authorized request: POST https://example.org X-Token: {{token}} { "name": "Alice", "value": 100 } HTTP 200
GET https://example.org/data.bin HTTP 200 [Asserts] bytes startsWith hex,efbbbf;
POST https://sts.eu-central-1.amazonaws.com/ [Options] aws-sigv4: aws:amz:eu-central-1:sts [Form] Action: GetCallerIdentity Version: 2011-06-15
POST https://sts.eu-central-1.amazonaws.com/ [Options] aws-sigv4: aws:amz:eu-central-1:sts user: bob=secret [Form] Action: GetCallerIdentity Version: 2011-06-15
$ hurl --resolve foo.com:8000:127.0.0.1 foo.hurl
GET http://bar.com HTTP 200 GET http://foo.com:8000/resolve [Options] resolve: foo.com:8000:127.0.0.1 HTTP 200 `Hello World!`
$ hurl session.hurl
$ echo GET http://httpbin.org/get | hurl { "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip", "Content-Length": "0", "Host": "httpbin.org", "User-Agent": "hurl/0.99.10", "X-Amzn-Trace-Id": "Root=1-5eedf4c7-520814d64e2f9249ea44e0" }, "origin": "1.2.3.4", "url": "http://httpbin.org/get" }
$ hurl -o output input.hurl
$ hurl --test *.hurl
GET http://example.org/endpoint1 GET http://example.org/endpoint2
GET https://example.org HTTP 200 # Capture the CSRF token value from html body. [Captures] csrf_token: xpath "normalize-space(//meta[@name='_csrf_token']/@content)" # Do the login ! POST https://example.org/login?user=toto&password=1234 X-CSRF-TOKEN: {{csrf_token}}
GET http://example.org HTTP 301
GET http://example.org HTTP 301 Location: http://www.example.org
GET http://example.org HTTP 301 [Asserts] xpath "string(//title)" == "301 Moved"
$ hurl --location foo.hurl
GET https://example.org HTTP 301 GET https://example.org [Options] location: true HTTP 200
Option | Description |
---|---|
--aws-sigv4 <PROVIDER1[:PROVIDER2[:REGION[:SERVICE]]]> | Generate an Authorization header with an AWS SigV4 signature.Use -u, --user to specify Access Key Id (username) and Secret Key (password).To use temporary session credentials (e.g. for an AWS IAM Role), add the X-Amz-Security-Token header containing the session token. |
--cacert <FILE> | Specifies the certificate file for peer verification. The file may contain multiple CA certificates and must be in PEM format. Normally Hurl is built to use a default file for this, so this option is typically used to alter that default file. |
-E, --cert <CERTIFICATE[:PASSWORD]> | Client certificate file and password. See also --key . |
--color | Colorize debug output (the HTTP response output is not colorized). This is a cli-only option. |
--compressed | Request a compressed response using one of the algorithms br, gzip, deflate and automatically decompress the content. |
--connect-timeout <SECONDS> | Maximum time in seconds that you allow Hurl's connection to take. You can specify time units in the connect timeout expression. Set Hurl to use a connect timeout of 20 seconds with --connect-timeout 20s or set it to 35,000 milliseconds with --connect-timeout 35000ms . No spaces allowed.See also -m, --max-time . |
--connect-to <HOST1:PORT1:HOST2:PORT2> | For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead. This option can be used several times in a command line. See also --resolve . |
--continue-on-error | Continue executing requests to the end of the Hurl file even when an assert error occurs. By default, Hurl exits after an assert error in the HTTP response. Note that this option does not affect the behavior with multiple input Hurl files. All the input files are executed independently. The result of one file does not affect the execution of the other Hurl files. This is a cli-only option. |
-b, --cookie <FILE> | Read cookies from FILE (using the Netscape cookie file format). Combined with -c, --cookie-jar , you can simulate a cookie storage between successive Hurl runs.This is a cli-only option. |
-c, --cookie-jar <FILE> | Write cookies to FILE after running the session. The file will be written using the Netscape cookie file format. Combined with -b, --cookie , you can simulate a cookie storage between successive Hurl runs.This is a cli-only option. |
--curl <FILE> | Export each request to a list of curl commands. This is a cli-only option. |
--delay <MILLISECONDS> | Sets delay before each request (aka sleep). The delay is not applied to requests that have been retried because of --retry . See --retry-interval to space retried requests.You can specify time units in the delay expression. Set Hurl to use a delay of 2 seconds with --delay 2s or set it to 500 milliseconds with --delay 500ms . No spaces allowed. |
--error-format <FORMAT> | Control the format of error message (short by default or long) This is a cli-only option. |
--file-root <DIR> | Set root directory to import files in Hurl. This is used for files in multipart form data, request body and response output. When it is not explicitly defined, files are relative to the Hurl file's directory. This is a cli-only option. |
--from-entry <ENTRY_NUMBER> | Execute Hurl file from ENTRY_NUMBER (starting at 1). This is a cli-only option. |
--glob <GLOB> | Specify input files that match the given glob pattern. Multiple glob flags may be used. This flag supports common Unix glob patterns like *, ? and []. However, to avoid your shell accidentally expanding glob patterns before Hurl handles them, you must use single quotes or double quotes around each pattern. This is a cli-only option. |
-H, --header <HEADER> | Add an extra header to include in information sent. Can be used several times in a command Do not add newlines or carriage returns |
-0, --http1.0 | Tells Hurl to use HTTP version 1.0 instead of using its internally preferred HTTP version. |
--http1.1 | Tells Hurl to use HTTP version 1.1. |
--http2 | Tells Hurl to use HTTP version 2. For HTTPS, this means Hurl negotiates HTTP/2 in the TLS handshake. Hurl does this by default. For HTTP, this means Hurl attempts to upgrade the request to HTTP/2 using the Upgrade: request header. |
--http3 | Tells Hurl to try HTTP/3 to the host in the URL, but fallback to earlier HTTP versions if the HTTP/3 connection establishment fails. HTTP/3 is only available for HTTPS and not for HTTP URLs. |
--ignore-asserts | Ignore all asserts defined in the Hurl file. This is a cli-only option. |
-i, --include | Include the HTTP headers in the output This is a cli-only option. |
-k, --insecure | This option explicitly allows Hurl to perform "insecure" SSL connections and transfers. |
--interactive | Stop between requests. This is similar to a break point, You can then continue (Press C) or quit (Press Q). This is a cli-only option. |
-4, --ipv4 | This option tells Hurl to use IPv4 addresses only when resolving host names, and not for example try IPv6. |
-6, --ipv6 | This option tells Hurl to use IPv6 addresses only when resolving host names, and not for example try IPv4. |
--jobs <NUM> | Maximum number of parallel jobs in parallel mode. Default value corresponds (in most cases) to the current amount of CPUs. See also --parallel .This is a cli-only option. |
--json | Output each Hurl file result to JSON. The format is very closed to HAR format. This is a cli-only option. |
--key <KEY> | Private key file name. |
--limit-rate <SPEED> | Specify the maximum transfer rate you want Hurl to use, for both downloads and uploads. This feature is useful if you have a limited pipe and you would like your transfer not to use your entire bandwidth. To make it slower than it otherwise would be. The given speed is measured in bytes/second. |
-L, --location | Follow redirect. To limit the amount of redirects to follow use the --max-redirs option |
--location-trusted | Like -L, --location , but allows sending the name + password to all hosts that the site may redirect to.This may or may not introduce a security breach if the site redirects you to a site to which you send your authentication info (which is plaintext in the case of HTTP Basic authentication). |
--max-filesize <BYTES> | Specify the maximum size in bytes of a file to download. If the file requested is larger than this value, the transfer does not start. This is a cli-only option. |
--max-redirs <NUM> | Set maximum number of redirection-followings allowed By default, the limit is set to 50 redirections. Set this option to -1 to make it unlimited. |
-m, --max-time <SECONDS> | Maximum time in seconds that you allow a request/response to take. This is the standard timeout. You can specify time units in the maximum time expression. Set Hurl to use a maximum time of 20 seconds with --max-time 20s or set it to 35,000 milliseconds with --max-time 35000ms . No spaces allowed.See also --connect-timeout . |
-n, --netrc | Scan the .netrc file in the user's home directory for the username and password. See also --netrc-file and --netrc-optional . |
--netrc-file <FILE> | Like --netrc , but provide the path to the netrc file.See also --netrc-optional . |
--netrc-optional | Similar to --netrc , but make the .netrc usage optional.See also --netrc-file . |
--no-color | Do not colorize output. This is a cli-only option. |
--no-output | Suppress output. By default, Hurl outputs the body of the last response. This is a cli-only option. |
--noproxy <HOST(S)> | Comma-separated list of hosts which do not use a proxy. Override value from Environment variable no_proxy. |
-o, --output <FILE> | Write output to FILE instead of stdout. |
--parallel | Run files in parallel. Each Hurl file is executed in its own worker thread, without sharing anything with the other workers. The default run mode is sequential. Parallel execution is by default in --test mode.See also --jobs .This is a cli-only option. |
--path-as-is | Tell Hurl to not handle sequences of /../ or /./ in the given URL path. Normally Hurl will squash or merge them according to standards but with this option set you tell it not to do that. |
--pinnedpubkey <HASHES> | When negotiating a TLS or SSL connection, the server sends a certificate indicating its identity. A public key is extracted from this certificate and if it does not exactly match the public key provided to this option, Hurl aborts the connection before sending or receiving any data. |
--progress-bar | Display a progress bar in test mode. The progress bar is displayed only in interactive TTYs. This option forces the progress bar to be displayed even in non-interactive TTYs. This is a cli-only option. |
-x, --proxy <[PROTOCOL://]HOST[:PORT]> | Use the specified proxy. |
--repeat <NUM> | Repeat the input files sequence NUM times, -1 for infinite loop. Given a.hurl, b.hurl, c.hurl as input, repeat two times will run a.hurl, b.hurl, c.hurl, a.hurl, b.hurl, c.hurl. This is a cli-only option. |
--report-html <DIR> | Generate HTML report in DIR. If the HTML report already exists, it will be updated with the new test results. This is a cli-only option. |
--report-json <DIR> | Generate JSON report in DIR. If the JSON report already exists, it will be updated with the new test results. This is a cli-only option. |
--report-junit <FILE> | Generate JUnit File. If the FILE report already exists, it will be updated with the new test results. This is a cli-only option. |
--report-tap <FILE> | Generate TAP report. If the FILE report already exists, it will be updated with the new test results. This is a cli-only option. |
--resolve <HOST:PORT:ADDR> | Provide a custom address for a specific host and port pair. Using this, you can make the Hurl requests(s) use a specified address and prevent the otherwise normally resolved address to be used. Consider it a sort of /etc/hosts alternative provided on the command line. |
--retry <NUM> | Maximum number of retries, 0 for no retries, -1 for unlimited retries. Retry happens if any error occurs (asserts, captures, runtimes etc...). |
--retry-interval <MILLISECONDS> | Duration in milliseconds between each retry. Default is 1000 ms. You can specify time units in the retry interval expression. Set Hurl to use a retry interval of 2 seconds with --retry-interval 2s or set it to 500 milliseconds with --retry-interval 500ms . No spaces allowed. |
--secret <NAME=VALUE> | Define secret value to be redacted from logs and report. When defined, secrets can be used as variable everywhere variables are used. |
--ssl-no-revoke | (Windows) This option tells Hurl to disable certificate revocation checks. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that. This is a cli-only option. |
--test | Activate test mode: with this, the HTTP response is not outputted anymore, progress is reported for each Hurl file tested, and a text summary is displayed when all files have been run. In test mode, files are executed in parallel. To run test in a sequential way use --job 1 .See also --jobs .This is a cli-only option. |
--to-entry <ENTRY_NUMBER> | Execute Hurl file to ENTRY_NUMBER (starting at 1). Ignore the remaining of the file. It is useful for debugging a session. This is a cli-only option. |
--unix-socket <PATH> | (HTTP) Connect through this Unix domain socket, instead of using the network. |
-u, --user <USER:PASSWORD> | Add basic Authentication header to each request. |
-A, --user-agent <NAME> | Specify the User-Agent string to send to the HTTP server. This is a cli-only option. |
--variable <NAME=VALUE> | Define variable (name/value) to be used in Hurl templates. |
--variables-file <FILE> | Set properties file in which your define your variables. Each variable is defined as name=value exactly as with --variable option.Note that defining a variable twice produces an error. This is a cli-only option. |
-v, --verbose | Turn on verbose output on standard error stream. Useful for debugging. A line starting with '>' means data sent by Hurl. A line staring with '<' means data received by Hurl. A line starting with '*' means additional info provided by Hurl. If you only want HTTP headers in the output, -i, --include might be the option you're looking for. |
--very-verbose | Turn on more verbose output on standard error stream. In contrast to --verbose option, this option outputs the full HTTP body request and response on standard error. In addition, lines starting with '**' are libcurl debug logs. |
-h, --help | Usage help. This lists all current command line options with a short description. |
-V, --version | Prints version information |
Variable | Description |
---|---|
http_proxy [PROTOCOL://]<HOST>[:PORT] | Sets the proxy server to use for HTTP. |
https_proxy [PROTOCOL://]<HOST>[:PORT] | Sets the proxy server to use for HTTPS. |
all_proxy [PROTOCOL://]<HOST>[:PORT] | Sets the proxy server to use if no protocol-specific proxy is set. |
no_proxy <comma-separated list of hosts> | List of host names that shouldn't go through any proxy. |
HURL_name value | Define variable (name/value) to be used in Hurl templates. This is similar than --variable and --variables-file options. |
NO_COLOR | When set to a non-empty string, do not colorize output (see --no-color option). |
Value | Description |
---|---|
0 | Success. |
1 | Failed to parse command-line options. |
2 | Input File Parsing Error. |
3 | Runtime error (such as failure to connect to host). |
4 | Assert Error. |
$ INSTALL_DIR=/tmp $ VERSION=6.1.1 $ curl --silent --location https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl-$VERSION-x86_64-unknown-linux-gnu.tar.gz | tar xvz -C $INSTALL_DIR $ export PATH=$INSTALL_DIR/hurl-$VERSION-x86_64-unknown-linux-gnu/bin:$PATH
$ VERSION=6.1.1 $ curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb $ sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb
$ VERSION=6.1.1 $ sudo apt-add-repository -y ppa:lepapareil/hurl $ sudo apt install hurl="${VERSION}"*
$ apk add --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing hurl
$ pacman -Sy hurl
$ brew install hurl
$ sudo port install hurl
$ sudo pkg install hurl
$ choco install hurl
$ scoop install hurl
$ winget install hurl
$ cargo install --locked hurl
$ conda install -c conda-forge hurl
$ docker pull ghcr.io/orange-opensource/hurl:latest
$ npm install --save-dev @orangeopensource/hurl
$ apt install -y build-essential pkg-config libssl-dev libcurl4-openssl-dev libxml2-dev libclang-dev
$ dnf install -y pkgconf-pkg-config gcc openssl-devel libxml2-devel clang-devel
$ yum install -y pkg-config gcc openssl-devel libxml2-devel clang-devel
$ pacman -S --noconfirm pkgconf gcc glibc openssl libxml2 clang
$ apk add curl-dev gcc libxml2-dev musl-dev openssl-dev clang-dev
$ xcode-select --install $ brew install pkg-config
$ curl https://sh.rustup.rs -sSf | sh -s -- -y $ source $HOME/.cargo/env $ rustc --version $ cargo --version
$ git clone https://github.com/Orange-OpenSource/hurl $ cd hurl $ cargo build --release $ ./target/release/hurl --version