Releases: postgrespro/testgres.os_ops
Releases · postgrespro/testgres.os_ops
Release list
v3.2.0
What's Changed
OsOperation::get_nameis updated (typing) (#109)- fix:
test_set_env__thread_safetyalways works slowly on remote_ops (#110) - CI: ci.yml is corrected (garbage) (#111)
- CI: Ubuntu 26.04 is added to test (#112)
- CI: run_tests3.sh is corrected (#113)
- CI: case_suffix is used (#114)
- CI: Ubuntu 26.04 + Python 3.12/3.13 are added (#115)
- CI: Optimization (#116)
- CI: rockylinux (9/10) is updated to stabilization (#118)
OsOperations::read_binarysupports 'size' argument (#117)- [#119] fix:
TestOsOpsCommon::test_isfile_false__not_existis fixed (#120)
Full Changelog: v3.1.0...v3.2.0
v3.1.0
What's Changed
🚀 New Features & API Extensions
get_file_stat: Added an atomic cross-platform method to retrieve file size and UTC modification time (mtime) in a single call (#87).create_file: Implemented exclusive file creation (fails if the file already exists, utilizingnoclobbermode for remote sessions) (#92).reset_env: Introduced a smart polymorphic method to clear proxy environment cache or restore local state (#108).join_command_arguments: Added a reliable POSIX/Windows compliant shell argument joiner to prevent command execution leaks.- Path normalization: Added
path_normpathandpath_normcaseto ensure cross-platform path integrity (#90).
🛠 Bug Fixes & Refactoring
- Security & Quoting: Fixed deep shell injection vulnerabilities inside
OsOperations::environ(#93) andOsOperations::set_env(#97) via automated strict escaping. Fully reworked internal path quoting mechanics (#91). - Thread Safety: Fixed critical bugs in
create_cloneimplementations for both local and remote operations (#106). Added a comprehensive multi-threaded concurrency stress-test (test_set_env__thread_safety) (#107). - File Operations: Refactored
touchusing atomic pathlib mechanics (#95), optimizedget_file_size(#88), and streamlinedcopytreeto strictly match the Pythonshutilinterface contract (#94, #105). - Type Safety & Cleanup: Applied strict type annotations across all method declarations (#98), corrected
isfile(#84) andisdir(#85) signatures, and updatedRaiseErrorto properly useNoReturn(#89). - Legacy Eviction: Removed deprecated
distutilsin favor of cleanshutilcalls (#100), deleted unusedremote_ops::error_markers(#102), and performed internal naming normalization insideHelpers(#101, #104).
Full Changelog: v3.0.0...v3.1.0
Special thanks to Mark G. (mark@google.com) for his help in preparing and reviewing all of these changes.
v3.0.0
Main
- A work with remote machines is corrected and improved
- CI uses two machines to test RemoteOperations
- RockyLinux is added to test
What's Changed
- exception.py is updated (pylance) (#48)
- [new] RO-property OsOperations::port is added (#49)
- New tests for os_ops props: host, ssh_key, username (#50)
- [new] RO-property OsOperations::remote is added (#51)
- Codestyle (return) (#52)
- [typing] RemoteOperations::_ssh_args has type typing.List[str] (#54)
- [fix] RemoteOperations::enter is deleted (#55)
- [fix] exec_command(get_process=True) does not respect encoding (#56)
- fix: RemoteOperations::get_process_children is updated (+tests) (#57)
- RemoteOperations::write is rewritten (without scp, via exec_command) (#58)
- fix: OsOperations::write is refactored (#59)
- Helpers::PrepareProcessInput is updated (typing) (#60)
- test_exec_command_failure__expect_error is updated (typing) (#61)
- OsOperations::read is updated (typing) (#62)
- ConnectionParams is updated (typing) (#63)
- RemoteOperations is updated (fix for _port, _ssh_cmd is added) (#64)
- fix: RemoteOperations::readlines losts eols (#65)
- Formal tests for ConnectionParams are added (#66)
- [new] ConnectionParams::password is added (for sshpass) (#67)
- RemoteOperations uses "trap '' HUP" to save child processes (#68)
- [new] os_ops::get_basename is added (#69)
- fix: RemoteOperations is refactored (no os.path, public uses private) (#70)
- [new] OsOperations::get_abs_path is added (#71)
- Tests are refactored (os_ops_descr) (#72)
- OsOperation::makedirs is refactored (#73)
- fix: RemoteOperations::rmdirs supports attempts and delays, too (#74)
- correction: get_basename -> get_path_basename (#75)
- rmt: Tests are refactored to support a real remote connection (#76)
- Tests on remote rhel-8 (py3.6.8) are fixed (#78)
- CI: run_tests3.sh is updated (#79)
- CI: lint and build-check use pip-cache (#80)
- CI: Dockerfiles are optimized by (#81)
- CI creates two machines for RemoteOperations tests (#77)
- CI: run_tests3.sh requires env parameter PYTHON_BINARY (#82)
- CI: RockyLinux is added to test (#83)
Most of the difficult work was done by Mark G. (mark@google.com). Respect! )
Full Changelog: v2.4.0...v3.0.0
2.4.0
What's Changed
- OsOperations::exec_command is refactored (typing) (#44)
- LocalOperations::sm_single_instance is corrected (typing) (#45)
- fix: RemoteOperations::read is declared with correct parameter order (#46)
Full Changelog: v2.3.0...v2.4.0
2.3.0
What's Changed
Full Changelog: v2.2.0...v2.3.0
2.2.0
What's Changed
- RemoteOperations is cleaned (#34)
- RemoteOperations::_ensure_cmdline is corrected (typing) by (#36)
- OsOperations: host, ssh_key and username are ro-props (#40)
- fix: OsOperations::readlines defines all the arguments (#41)
Full Changelog: 2.1.1...v2.2.0
2.1.1
What's Changed
- Tests are updated (typing) (#26)
- A suppression of E721 is removed (#28)
- CI: Verification with ruff is added (#29)
Full Changelog: 2.1.0...2.1.1
2.1.0
Main
- OsOperations::get_platform is added. It returns a copy of
sys.platformvalue.
What's Changed
- [CI] AstraLinux 1.7 is tested (#21)
- pytest-env is used, pytest.ini is deleted (#23)
OsOperations::get_platform(self)is added (#24)- fix:
RemoteOperationsshould not check the local platform (#25)
Full Changelog: 2.0.2...2.1.0
2.0.2
This is a release to fix a problem with Astra Linux 1.7. It has an old python version 3.7.3.
What's Changed
- Min python is 3.7.3 (#19)
Full Changelog: 2.0.1...2.0.2
2.0.1
What's Changed
- [CI] GitHub Action is used by (#10)
- fix: RemoteOperations::exec_command passes exec_env incorrectly (#11)
- test_get_tmpdir__compare_with_py_info is corrected (#12)
Full Changelog: 2.0.0...2.0.1