bneradt opened a new pull request, #13577:
URL: https://github.com/apache/trafficserver/pull/13577

   AuTest's `Streams` entity defines `All`, not `all`, and neither `Streams` 
nor its base `TestEntity` overrides `__setattr__`. So `Streams.all = <tester>` 
plants a dead instance attribute and registers no tester at all. Twelve 
assertions across seven tests have therefore never executed.
   
   ### Evidence
   
   1. `autest/testenities/streams.py` defines exactly `stdout`, `stderr`, 
`All`, `Warning`, `Error`, `Debug`, `Verbose`. `hasattr(Streams, 'All') == 
True`, `hasattr(Streams, 'all') == False`.
   2. AuTest's `docsrc/source/API/streams.rst` documents those same seven 
attributes; `all` is not among them.
   3. AuTest's own test suite and docs use `Streams.All` 28 times and 
`Streams.all` zero times.
   4. Direct experiment against autest 1.10.6 — a process printing `alice.com`, 
asserted to contain `bob.com`:
   
   ```python
   # lowercase -> PASSES (assertion silently dropped)
   tr.Processes.Default.Streams.all = Testers.ContainsExpression("bob.com", 
"demands bob.com")
   ```
   ```
   Running Test probe: Passed
     Failed: 0
     Passed: 1
   ```
   
   ```python
   # capital -> FAILS, as it should
   tr.Processes.Default.Streams.All = Testers.ContainsExpression("bob.com", 
"demands bob.com")
   ```
   ```
   Process: Default: Failed
     Test : Checking that ReturnCode == 0 - Passed
     file .../stream.all.txt : demands bob.com - Failed
        Reason: Contents of .../stream.all.txt did not contains expression: 
"bob.com"
   ```
   
   ### What this turns on
   
   Marked **WIP** because these twelve checks have never run once. Some may 
well fail, and the point of the PR is to find out which. Breaking the change 
down:
   
   - **`tls/allow-plain.test.py`** (3), 
**`tls/tls_hooks_client_verify.test.py`** (3), **`tls/tls_sni_groups.test.py`** 
(2) — expression checks on curl verbose output. Newly live.
   - **`timeout/quic_no_activity_timeout.test.py`** (1) and 
**`timeout/default_inactivity_timeout.test.py`** (1) — newly activate gold-file 
comparisons that have never been validated. Note 
`gold/client_default_inactivity_timeout.gold` opens with three backticks rather 
than the usual two, which is itself a hint the file has never been compared.
   - **`h3/h3_sni_check.test.py`** (1) and **`ip_allow/ip_allow.test.py`** (1) 
— both sit behind `if self.gold_file:`, and no call site ever passes a 
non-empty `gold_file`. These lines stay dead either way; renaming them just 
means they will work if someone does start passing one.
   
   I will iterate on whatever Jenkins turns up. Where an assertion turns out to 
have been wrong all along rather than the code being wrong, I will say so 
explicitly rather than quietly relaxing the expectation.
   
   `tests/gold_tests/pluginTest/cert_update/cert_update.test.py` has two more 
of these; it is deliberately left alone here because #13576 is already 
rewriting that file.
   
   Found while reviewing #13576, where the same defect is why a broken 
`TSSslClientCertUpdate` went unnoticed: that test's `bob.com` gold check was on 
`.all`, so it was never evaluated.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to