Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test fails if built against libcurl 8.3.0 #239

Closed
abbbi opened this issue Sep 26, 2023 · 4 comments
Closed

test fails if built against libcurl 8.3.0 #239

abbbi opened this issue Sep 26, 2023 · 4 comments

Comments

@abbbi
Copy link
Contributor

abbbi commented Sep 26, 2023

hi there,

debian QA team has scheduled an archive wide rebuild and it seems trurl fails within its testsuite
on debian/sid:

�[91m96: failed --verify --json ftp://example.org/ '' git://curl.se/
�[0m--- stdout ---
expected:
[{'url': 'ftp://example.org/', 'parts': {'scheme': 'ftp', 'host': 'example.org', 'path': '/'}}]
got:
[{'url': 'ftp://example.org/', 'parts': {'scheme': 'ftp', 'host': 'example.org', 'path': '/'}}]
--- returncode ---
expected:
9
got:
9
--- stderr ---
expected:
'trurl error: No host part in the URL []\ntrurl error: Try trurl -h for help\n'
got:
'trurl error: Malformed input to a URL function []\ntrurl error: Try trurl -h for help\n'

and:

�[91m109: failed emanuele6://curl.se/trurl '' https://example.org/
�[0m--- stdout ---
expected:
'emanuele6://curl.se/trurl\nhttps://example.org/\n'
got:
'emanuele6://curl.se/trurl\nhttps://example.org/\n'
--- returncode ---
expected:
0
got:
0
--- stderr ---
expected:
'trurl note: No host part in the URL []\n'
got:
'trurl note: Malformed input to a URL function []\n'

full report:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1052828

./trurl -v
trurl version 0.8 libcurl/8.3.0 [built-with 8.3.0]
features: punycode white-space zone-id url-strerror normalize-ipv4

It seems (for whatever reason) the output of trurl in stderr is not the one expected in the testsuite
for both cases and i can reproduce:

root@cefix-sid-amd64-3iyj:/srv/new/trurl# ./trurl --verify --json ftp://example.org '' git://curl.se/
[
  {
    "url": "ftp://example.org/",
    "parts": {
      "scheme": "ftp",
      "host": "example.org",
      "path": "/"
    }
  }
]
trurl error: Malformed input to a URL function []
trurl error: Try trurl -h for help
@jacobmealey
Copy link
Contributor

Hmmm it looks like something in url api may have changed in the recent curl release? If I build trurl against an older version the tests pass but when I build against 8.3.0 the tests fail in the same way described by @abbbi and our github actions use a pretty old version of curl so that's why it wasn't caught earlier.

@abbbi abbbi changed the title test failing on debian sid test failing if built against libcurl 8.3.0 Sep 26, 2023
@abbbi abbbi changed the title test failing if built against libcurl 8.3.0 test fails if built against libcurl 8.3.0 Sep 26, 2023
@abbbi
Copy link
Contributor Author

abbbi commented Sep 27, 2023

the changed behavior is caused by following commit in curl url api:

curl/curl@b664b00

fix for:

curl/curl#11714

reverting this one in libcurl and linking trurl against shields the old behavior:

./trurl: /home/abi/trl/curl/lib/.libs/libcurl.so.4: no version information available (required by ./trurl)
[
  {
    "url": "ftp://example.org/",
    "parts": {
      "scheme": "ftp",
      "host": "example.org",
      "path": "/"
    }
  }
]
trurl error: No host part in the URL []
trurl error: Try trurl -h for help

@emanuele6
Copy link
Collaborator

emanuele6 commented Sep 27, 2023

It is simply getting a different error message.
Since errors for those tests now differ in different versions of libcurl, and the exact errors do not matter, you could just change the stderr expectation for those tests to true:

diff --git a/tests.json b/tests.json
index 8222c14..fe48b6c 100644
--- a/tests.json
+++ b/tests.json
@@ -1488,7 +1488,7 @@
                 }
             ],
             "returncode": 9,
-            "stderr": "trurl error: No host part in the URL []\ntrurl error: Try trurl -h for help\n"
+            "stderr": true
         }
     },
     {
@@ -1744,7 +1744,7 @@
         "expected": {
             "stdout": "emanuele6://curl.se/trurl\nhttps://example.org/\n",
             "returncode": 0,
-            "stderr": "trurl note: No host part in the URL []\n"
+            "stderr": true
         }
     },
     {

This is already supported by the test runner, and will be satisfied if the command results in anything being written to stderr instead of exactly "trurl error: No host part in the URL []\ntrurl error: Try trurl -h for help\n". (it will only not be satisfied if nothing is written to stderr)

abbbi added a commit to abbbi/trurl that referenced this issue Sep 27, 2023
Changes in libcurl 8.3.0 make some testcases fail due to different error
message wording. Adjust testcases so only the presence of an stderr is
verified, not the wording in detail.
abbbi added a commit to abbbi/trurl that referenced this issue Sep 27, 2023
Changes in libcurl 8.3.0 make some testcases fail due to different error
message wording. Adjust testcases so only the presence of an stderr is
verified, not the wording in detail.
@abbbi
Copy link
Contributor Author

abbbi commented Sep 27, 2023

@emanuele6 thanks, i just added this patch to the debian package for now. PR (#240)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants