Commit Graph
55 Commits
Author SHA1 Message Date
snegov fe48010fc9 Add comprehensive tests for rsync output parsing
Implements TestParseRsyncOutput class with 17 tests covering all code
paths in _parse_rsync_output() function. Tests cover deletions, file/
directory/symlink creation, rewrites, metadata updates (permissions,
ownership, timestamps), and error handling for invalid input.
2026-02-04 19:36:24 -08:00
snegov ee1df4cb21 Update tests 2026-02-04 19:31:29 -08:00
snegov 5dc9235992 Fix potential NameError in copy_file exception handler
Initialize file descriptors to None before opening to prevent
UnboundLocalError in the finally block if file opening fails.

Changes:
- Initialize fin = None and fout = None at function start
- Check if descriptors are not None before closing
- Remove UnboundLocalError from exception handling (no longer needed)

This improves code quality by eliminating the need to catch an error
that indicates a logic bug. The existing tests verify correct behavior.

Fixes #6
2026-02-03 22:20:52 -08:00
snegov 32ce113608 Migrate to pyproject.toml with setuptools_scm
Replace custom version management with setuptools_scm to eliminate
source file modifications during installation. Version is now derived
from git tags at build time without writing to tracked files.

Changes:
- Add pyproject.toml with full project metadata
- Simplify setup.py to minimal backwards-compatible shim
- Remove curateipsum/_version.py from version control
- Add _version.py to .gitignore (auto-generated at build time)
- Use PEP 440 compliant version strings

Fixes #18
2026-02-03 21:27:49 -08:00
snegov 6fd6051642 Merge pull request #4 from snegov/claude/fix-github-actions-python-versions-011CUyaqGCtZoDZVxANHBu2n
Fix GitHub Actions Python version testing
2025-11-09 20:55:42 -08:00
snegov 6d6038b027 Remove backup markers from previous backups 2023-05-07 22:00:05 -07:00
snegov 5746a9bc82 Update github actions 2023-05-07 15:33:45 -07:00
snegov 45c2480778 Fix spent time calculation 2023-05-06 23:20:21 -07:00
snegov 62fcfe5881 Add running backup lock and marker of finished backup 2023-05-06 23:06:15 -07:00
snegov 775234a433 Fix incorrect logging 2022-08-28 19:42:00 +04:00
snegov ae95856a58 Fix symlinks issue in nest_hardlink function 2021-11-16 00:00:19 +03:00
snegov 2631b78d4d Handle socket files 2021-11-15 23:12:51 +03:00
snegov 04692be42d Minor fix in printing version info 2021-11-15 10:28:48 +03:00
snegov e7774a5e5a Create run_tests.yml 2021-11-15 10:28:10 +03:00
snegov 9cf99f78b4 Add version support 2021-11-15 01:09:11 +03:00
snegov a927f3e2d3 Minor fixes 2021-11-13 07:57:11 +03:00
snegov 84546243cb Add setup.py 2021-11-13 07:39:23 +03:00
snegov 990faf9a43 Add license 2021-11-12 20:50:32 +03:00
snegov 0c30501b9c Update debug logging 2021-11-12 11:33:53 +03:00
snegov 1cc5271c29 Add lock for backups directory 2021-11-12 11:30:11 +03:00
snegov c64955362a Add backups cleanup 2021-11-12 10:38:28 +03:00
snegov d521ef3c89 Do not create backup if no changes were found 2021-11-09 22:51:49 +03:00
snegov dae1398f49 Do not create _delta dir on first run 2021-11-09 22:50:38 +03:00
snegov 7395268e97 Add processing of changed files 2021-11-09 00:43:18 +03:00
snegov 1ed1032f42 Add nested dir hardlink test 2021-11-02 23:45:11 +03:00
snegov 2dec011ca9 Fix setting symlink attributes in linux 2021-11-02 22:35:23 +03:00
snegov 7daa8d74b3 Add --external-hardlink parameter 2021-10-24 21:39:36 +03:00
snegov f01d24f1bd Fix copying symlinks in Linux 2021-10-23 21:07:14 +03:00
snegov 1b6badf375 Check for rsync before using --external-rsync option 2021-10-23 00:36:39 +03:00
snegov da228dfb99 Code style 2021-10-23 00:22:04 +03:00
snegov 05ecd09f57 Rename copy_file function 2021-10-22 17:30:45 +03:00
snegov 14552db4c8 Add --external-rsync option 2021-08-13 17:06:56 +03:00
snegov eaf2b3c0ea Fix setting directories' mtime in rsync 2021-06-22 07:36:50 +03:00
snegov 036d241585 Fix setting directory mtime in hardlink_dir 2021-06-22 06:56:26 +03:00
snegov 5e042a73c1 Refactoring 2021-06-21 10:25:13 +03:00
snegov 874f2de9ff Enable rsync in initiate_backup 2021-06-21 10:24:53 +03:00
snegov 3620c5c137 Add spent time info 2021-06-21 10:22:37 +03:00
snegov bddf311d99 Remove created backup if fail 2021-06-21 10:21:14 +03:00
snegov 126ae85388 Add dry-run option 2021-06-21 08:27:18 +03:00
snegov 27b781a534 Improve _hardlink_dir_ext 2021-06-20 19:40:04 +03:00
snegov 21b854e92d Fix setting mtime for directories in recursive_hardlinking 2021-06-20 19:15:51 +03:00
snegov 862c20ed24 Add rsync support 2021-06-20 18:40:03 +03:00
snegov 17826c6978 Update hardlink tests 2021-06-16 19:42:32 +03:00
snegov 11c8197dba Add tests for fs.hardlink_dir() 2021-06-15 23:05:09 +03:00
snegov 170b73834b Add hardlinking with cp -al 2021-06-10 22:19:26 +03:00
snegov a867dadb75 Unfinished custom rsync 2021-06-10 19:33:08 +03:00
snegov 4d156c8867 Rework hardlink_dir, create initiate_backup 2021-06-10 19:16:23 +03:00
snegov ce32dd7317 Create per-module loggers 2021-05-28 00:41:32 +03:00
snegov d67550cb38 Add rsync func, logging and cli parser 2021-05-27 23:10:55 +03:00
snegov 50d2168b15 hardlink symlinks instead of recreating them 2019-02-11 10:48:38 +03:00
snegov 3c15dd0373 add symlink support to recursive hardlink 2019-01-16 23:02:35 +03:00
snegov a1e4f00a3b add .idea to .gitignore 2019-01-16 22:32:20 +03:00
snegov 235d54fec9 fix: exit on incorrect agruments amount 2019-01-15 22:44:52 +03:00
snegov 3c8c6953f2 add recursive hardlink 2019-01-10 22:58:40 +03:00
snegov 8590ad6a93 Initial commit 2019-01-10 22:46:08 +03:00