blob: ef424e2ff8ce70e45be01846a4ed13e7ef0add45 [file] [log] [blame]
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.'
)
)
)