pem70 opened a new pull request, #4967:
URL: https://github.com/apache/servicecomb-java-chassis/pull/4967

   ### Issue
   The method `testSchemaMethod()` in `TestSwaggerUtils` compares 
pretty-printed YAML strings to verify correctness. However, since the OpenAPI 
object is constructed with `Map`/`Set` iteration, the key order in the 
serialized YAML is non-deterministic. When the iteration order changes, the 
string comparison fails, resulting in flaky behavior.  
   
   This test was flagged by the 
[**NonDex**](https://github.com/TestingResearchIllinois/NonDex) tool, which 
detects unreliable tests caused by hidden assumptions in Java API ordering. To 
reproduce:
   
   ```bash
   mvn -pl swagger/swagger-generator/generator-core   
edu.illinois:nondex-maven-plugin:2.1.7:nondex   
-Dtest=org.apache.servicecomb.swagger.generator.core.TestSwaggerUtils#testSchemaMethod
   ```
   
   ### Fix
   Instead of checking raw YAML string equality, I parse both the expected and 
actual YAML into JSON trees and compare them structurally. This makes the test 
order-insensitive and removes the non-determinism.  
   
   Rerunning NonDex with this change shows a stable passing result.
   
   ### PR Checklist
   - [ ] **Github Issue:** [[BUG] - Flaky test in 
`TestSwaggerUtils#testSchemaMethod` (#4966 )  
](https://github.com/apache/servicecomb-java-chassis/issues/4966)
   - [ ] Each commit in the pull request should have a meaningful subject line 
and body.  
   - [ ] Run `mvn clean install -Pit` to make sure basic checks pass. A more 
thorough check will be performed on your pull request automatically.  
   - [ ] Format the pull request title like `[SCB-XXX] Fix flaky test in 
TestSwaggerUtils#testSchemaMethod`, where you replace `SCB-XXX` with the 
appropriate JIRA issue.  
   - [ ] Write a pull request description that is detailed enough to understand 
what the pull request does, how, and why.  
   


-- 
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