| DEPS = [ |
| 'flutter/cache_micro_manager', |
| 'recipe_engine/file', |
| 'recipe_engine/json', |
| 'recipe_engine/path', |
| 'recipe_engine/raw_io', |
| 'recipe_engine/step', |
| 'recipe_engine/properties', |
| ] |
| |
| |
| from recipe_engine.post_process import MustRun |
| |
| from datetime import datetime |
| from datetime import timedelta |
| from unittest.mock import Mock |
| |
| |
| def RunSteps(api): |
| cache_target_dir = api.path['cache'].join('osx_sdk') |
| |
| fake_dirdep_1_path = cache_target_dir.join('fake_dep_package_1') |
| fake_filedep_1_path = cache_target_dir.join('fake_dep_file_1') |
| fake_filedep_2_path = cache_target_dir.join('fake_dep_file_2') |
| |
| fake_expired_file = cache_target_dir.join('fake_expired_file') |
| |
| cache_file_name = cache_target_dir.join('.osx_sdk_cache_metadata.json') |
| |
| api.path.mock_add_directory(fake_dirdep_1_path) |
| api.path.mock_add_file(fake_filedep_1_path) |
| api.path.mock_add_file(fake_filedep_2_path) |
| |
| api.path.mock_add_file(cache_file_name) |
| api.path.mock_add_file(fake_expired_file) |
| |
| deps_list = ['fake_dep_package_1', 'fake_dep_file_1', 'new_dep_5'] |
| |
| api.cache_micro_manager.today = Mock(return_value=datetime(2023, 12, 15, 13, 43, 21, 621929)) |
| |
| api.step('run cache micro manager', api.cache_micro_manager.run(cache_target_dir, deps_list)) |
| |
| def ComputeJsonFileData() -> str: |
| '''Compute relative test data to "today" for the datetimes used in testing. |
| ''' |
| datetime_now = datetime(2023, 12, 15, 13, 43, 21, 621929) |
| datetime_removal_delta = timedelta(days=30) |
| |
| fake_dep_file_1_updated = datetime.strftime(datetime_now, "%m/%d/%Y, %H:%M:%S") |
| fake_dep_file_1_removal = datetime.strftime(datetime_now + datetime_removal_delta, "%m/%d/%Y, %H:%M:%S") |
| |
| fake_dep_package_1_updated = datetime.strftime(datetime_now, "%m/%d/%Y, %H:%M:%S") |
| fake_dep_package_1_removal = datetime.strftime(datetime_now + datetime_removal_delta, "%m/%d/%Y, %H:%M:%S") |
| |
| # TODO remove this code when the old time types have been updated. |
| fake_dep_package_old_time_delta = datetime_now - timedelta(days=60) |
| fake_dep_package_old_time_updated = datetime.strftime(fake_dep_package_old_time_delta, "%m/%d/%Y") |
| fake_dep_package_old_time_removal = datetime.strftime(fake_dep_package_old_time_delta + datetime_removal_delta, "%m/%d/%Y") |
| |
| fake_dep_package_2_time_and_delta = datetime_now - timedelta(days=365) |
| fake_dep_package_2_updated = datetime.strftime(fake_dep_package_2_time_and_delta, "%m/%d/%Y, %H:%M:%S") |
| fake_dep_package_2_removal = datetime.strftime(fake_dep_package_2_time_and_delta + datetime_removal_delta, "%m/%d/%Y, %H:%M:%S") |
| |
| fake_expired_file_time_and_delta = datetime_now - timedelta(days=380) |
| fake_expired_file_updated = datetime.strftime(fake_expired_file_time_and_delta, "%m/%d/%Y, %H:%M:%S") |
| fake_expired_file_removal = datetime.strftime(fake_expired_file_time_and_delta + datetime_removal_delta, "%m/%d/%Y, %H:%M:%S") |
| |
| dep_not_in_dir_time_and_delta = datetime_now - timedelta(days=720) |
| dep_not_in_dir_updated = datetime.strftime(dep_not_in_dir_time_and_delta, "%m/%d/%Y, %H:%M:%S") |
| dep_not_in_dir_removal = datetime.strftime(dep_not_in_dir_time_and_delta + datetime_removal_delta, "%m/%d/%Y, %H:%M:%S") |
| |
| return ''' |
| [ |
| {{ |
| \"name\": \"fake_dep_file_1\", |
| \"updated_date\": \"{0}\", |
| \"removal_date\": \"{1}\" |
| }}, |
| {{ |
| \"name\": \"fake_dep_package_1\", |
| \"updated_date\": \"{2}\", |
| \"removal_date\": \"{3}\" |
| }}, |
| {{ |
| \"name\": \"fake_dep_package_2\", |
| \"updated_date\": \"{4}\", |
| \"removal_date\": \"{5}\" |
| }}, |
| {{ |
| \"name\": \"fake_expired_file\", |
| \"updated_date\": \"{6}\", |
| \"removal_date\": \"{7}\" |
| }}, |
| {{ |
| \"name\": \"dep_not_in_dir\", |
| \"updated_date\": \"{8}\", |
| \"removal_date\": \"{9}\" |
| }}, |
| {{ |
| \"name\": \"fake_dep_package_old_time\", |
| \"updated_date\": \"{10}\", |
| \"removal_date\": \"{11}\" |
| }} |
| ] |
| '''.format( |
| fake_dep_file_1_updated, |
| fake_dep_file_1_removal, |
| fake_dep_package_1_updated, |
| fake_dep_package_1_removal, |
| fake_dep_package_2_updated, |
| fake_dep_package_2_removal, |
| fake_expired_file_updated, |
| fake_expired_file_removal, |
| dep_not_in_dir_updated, |
| dep_not_in_dir_removal, |
| fake_dep_package_old_time_updated, |
| fake_dep_package_old_time_removal, |
| ) |
| |
| |
| def GenTests(api): |
| yield ( |
| api.test( |
| 'cache_metadata_exists_is_created', |
| api.step_data( |
| "Running Cache Micro Manager on [CACHE]/osx_sdk..Reading metadata file [CACHE]/osx_sdk/.osx_sdk_cache_metadata.json.Reading [CACHE]/osx_sdk/.osx_sdk_cache_metadata.json", |
| api.file.read_text( |
| ComputeJsonFileData()) |
| ), |
| api.step_data( |
| 'Running Cache Micro Manager on [CACHE]/osx_sdk..Reading cache directory [CACHE]/osx_sdk', |
| api.file.listdir(['fake_dep_file_1', 'fake_dep_package_1', 'fake_dep_package_old_time', 'fake_dep_package_2', 'fake_expired_file', 'new_dep_5', '.osx_sdk_cache_metadata.json']) |
| ), |
| api.post_check( |
| MustRun, |
| 'Running Cache Micro Manager on [CACHE]/osx_sdk..Writing cache metadata file.' |
| ) |
| ) |
| ) |