test_attic.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from flexmock import flexmock
  2. from atticmatic import attic as module
  3. def insert_subprocess_mock(check_call_command):
  4. subprocess = flexmock()
  5. subprocess.should_receive('check_call').with_args(check_call_command).once()
  6. flexmock(module).subprocess = subprocess
  7. def insert_platform_mock():
  8. flexmock(module).platform = flexmock().should_receive('node').and_return('host').mock
  9. def insert_datetime_mock():
  10. flexmock(module).datetime = flexmock().should_receive('now').and_return(
  11. flexmock().should_receive('isoformat').and_return('now').mock
  12. ).mock
  13. def test_create_archive_should_call_attic_with_parameters():
  14. insert_subprocess_mock(
  15. ('attic', 'create', '--exclude-from', 'excludes', 'repo::host-now', 'foo', 'bar'),
  16. )
  17. insert_platform_mock()
  18. insert_datetime_mock()
  19. module.create_archive(
  20. excludes_filename='excludes',
  21. verbose=False,
  22. source_directories='foo bar',
  23. repository='repo',
  24. )
  25. def test_create_archive_with_verbose_should_call_attic_with_verbose_parameters():
  26. insert_subprocess_mock(
  27. (
  28. 'attic', 'create', '--exclude-from', 'excludes', 'repo::host-now', 'foo', 'bar',
  29. '--verbose', '--stats',
  30. ),
  31. )
  32. insert_platform_mock()
  33. insert_datetime_mock()
  34. module.create_archive(
  35. excludes_filename='excludes',
  36. verbose=True,
  37. source_directories='foo bar',
  38. repository='repo',
  39. )
  40. def test_prune_archives_should_call_attic_with_parameters():
  41. insert_subprocess_mock(
  42. (
  43. 'attic', 'prune', 'repo', '--keep-daily', '1', '--keep-weekly', '2', '--keep-monthly',
  44. '3',
  45. ),
  46. )
  47. module.prune_archives(
  48. repository='repo',
  49. verbose=False,
  50. keep_daily=1,
  51. keep_weekly=2,
  52. keep_monthly=3
  53. )
  54. def test_prune_archives_with_verbose_should_call_attic_with_verbose_parameters():
  55. insert_subprocess_mock(
  56. (
  57. 'attic', 'prune', 'repo', '--keep-daily', '1', '--keep-weekly', '2', '--keep-monthly',
  58. '3', '--verbose',
  59. ),
  60. )
  61. module.prune_archives(
  62. repository='repo',
  63. verbose=True,
  64. keep_daily=1,
  65. keep_weekly=2,
  66. keep_monthly=3
  67. )