* stty: Add 101 unit tests and 16 integration tests to improve coverage
Add comprehensive test coverage for stty:
Unit tests (src/uu/stty/src/stty.rs):
- Flag struct methods and builder pattern (7 tests)
- Control character parsing and formatting (19 tests)
- All combination settings expansion (26 tests)
- Termios modification functions (13 tests)
- String-to-flag/combo/baud parsing (19 tests)
- TermiosFlag trait implementations (5 tests)
- Helper and utility functions (10 tests)
- Trait implementations (2 tests)
Integration tests (tests/by-util/test_stty.rs):
- Help and version output validation (2 tests)
- Invalid argument handling (3 tests)
- Control character overflow validation (2 tests)
- Grouped flag removal validation (1 test)
- File argument error handling (1 test)
- Conflicting print modes (1 test)
- Additional TTY-dependent tests (6 tests, ignored in CI)
Unit test coverage improved from 0% to 43.76% (207/473 lines).
Integration tests validate argument parsing and error handling.
Addresses #9061
* stty: Add essential unit tests and integration tests to improve coverage
- Added 11 essential unit tests for complex internal functions:
* Control character parsing (string_to_control_char)
* Control character formatting (control_char_to_string)
* Combination settings expansion (combo_to_flags)
* Terminal size parsing with overflow handling (parse_rows_cols)
* Sane control character defaults (get_sane_control_char)
- Added 16 integration tests for command behavior:
* Help/version output validation
* Invalid argument handling
* Control character overflow validation
* Grouped flag removal validation
* File argument error handling
* Conflicting print modes
* TTY-dependent tests (marked as ignored for CI)
Unit tests focus on complex parsing logic that's difficult to test via
integration tests. Integration tests validate actual command behavior.
Coverage improved from 0% to 43.76% (207/473 lines).
Fixes#9061
* stty: Add comprehensive unit and integration tests for error handling
- Add unit tests for parse_rows_cols() with edge cases and wraparound
- Add unit tests for string_to_baud() with platform-specific handling
- Add unit tests for string_to_combo() with all combo modes
- Add 17 integration tests for missing arguments and invalid inputs
- Enhance test_invalid_arg() with better error message assertions
- Update coverage script for improved reporting
Coverage improved from 22.26% to 23.14% regions.
* stty: Add Debug and PartialEq derives for test assertions
- Add #[derive(Debug, PartialEq)] to AllFlags enum
- Add PartialEq to Flag struct derives
- Enables assert_eq! macro usage in unit tests
* stty: Fix formatting and clippy warnings in tests
- Replace assert_eq! with assert! for boolean comparisons
- Fix line wrapping for long logical expressions
- Use inline format string syntax (e.g., {err} instead of {})
- All 25 unit tests pass
- No clippy warnings
* stty: Add inline spell-checker ignores for test strings
- Add spell-checker:ignore comments for test data (notachar, notabaud, susp)
- Add spell-checker:ignore comments for French error strings (Valeur, entier, invalide)
- Fixes cspell validation without modifying global config
* perf: gate PartialEq derive to test builds only
The PartialEq derive was being compiled into release builds even though
it's only used in test code. This caused a 3.33% performance regression
in the du_human_balanced_tree benchmark due to increased binary size
affecting CPU cache efficiency.
Changes:
- stty.rs: Gate PartialEq derive on Flag<T> with #[cfg_attr(test, derive(PartialEq))]
- flags.rs: Gate PartialEq derive on AllFlags enum with #[cfg_attr(test, derive(PartialEq))]
This eliminates the performance regression while keeping all test code
functional and unchanged.
---------
Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
* stty: Wrap parameters when using --all
Do the same as GNU stty when it has to prints the parameter, doing
proper text wrapping
* Adding integration tests for the COLUMNS env variable support in stty
* Adding integration tests for the COLUMNS env variable support in stty
---------
Co-authored-by: Marco Trevisan (Treviño) <mail@3v1n0.net>
* Implemented hex and octal parsing for row columns for stty
* Adding more test cases with different upper and lowercase values
* stty: use ExtendedParser for hex/octal row/col parsing
* Implemented saved state parser for stty
* Add compatibility to macos flag type
* Added many example state parsing integration tests with GNU compatibility checks and documentation
* Spelling and formatting fixes
* Matching behaviour of adding the help command after invocations and spelling fixes
* GNU tests were being skipped because they were not at the sufficient version
* Fixed messaging error for invalid states to not show full path
* Normalizing the test output and reverting lib change
* Discovered that the limit depends on platform specific values derived from a LIBC value
* Spelling fixes and setting flags to 0 for cross platform compatibility
* Clippy fixes
* Disabling tests due to invalid printing of control chars and using GNU for printing
* Redisabling failing test as outside of the scope of this PR
* Adding g prefix support to normalize stderr
* Spell checker fixes
* Normalizing command for both gnu and uutils output
* removing single value from testing since it can be interpreted as Baud rate
* Fixing spelling mistake
* reworked arg processing. control character mappings are correctly grouped now, ie 'stty erase ^H'
* stty: setting control chars to undefined (disabling them) is implemented
* setting control chars
* stty: can now set control chars. need to improve checks on valid mappings
* stty: matches GNU in what control character mappings are allowed
* stty: run rustfmt and remove extra comments
* stty: setting control char code review fixes
* stty: fix rustfmt errors
* stty: more small edits after review
* stty: refactor set control char changes for better testing
* stty: fix ci error
* stty: fix issues from code review