Skip to content

Merge pull request #194 from scribd/vijays/xcode_16 #1204

Merge pull request #194 from scribd/vijays/xcode_16

Merge pull request #194 from scribd/vijays/xcode_16 #1204

Workflow file for this run

name: Tests
on: push
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
jobs:
codegen_tests:
name: CodeGen Tests
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Clone Project
uses: actions/checkout@v4
- name: Run Lucid CodeGen tests
run: |
swift test --package-path CodeGen --enable-test-discovery
lucid_tests:
name: Lucid-iOS Tests
runs-on: macos-15
timeout-minutes: 30
env:
FASTLANE_LOGS: fastlane/test_output
FASTLANE_FRAGILE_LOGS: fastlane/fragile_test_output
GITHUB_ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
FRAGILE_TESTS: LucidTests/APIClientQueueProcessorTests/test_processor_does_attempt_to_process_request_if_already_running_concurrent_request,LucidTests/AsyncTaskQueueTests/test_that_it_immediately_starts_the_next_time_after_an_operation_has_completed,LucidTests/BaseStoreTests/test_store_should_set_1000_entities_in_under_1_second,LucidTests/CacheStoreTests/test_store_should_set_1000_entities_in_under_1_second,LucidTests/CoreDataStoreTests/test_store_should_not_retrieve_documents_with_an_invalid_expression_equal_to_another_expression,LucidTests/CoreDataStoreTests/test_store_should_set_1000_entities_in_under_1_second,LucidTests/CoreManagerContractTests/test_continuous_obvserver_should_get_filtered_results_matching_entities_that_meet_contract_requirements,LucidTests/CoreManagerContractTests/test_core_manager_get_should_filter_results_when_enity_does_not_meet_contract_requirements,LucidTests/CoreManagerContractTests/test_core_manager_get_should_return_complete_results_when_entity_meets_contract_requirements,LucidTests/CoreManagerContractTests/test_core_manager_get_should_return_complete_results_when_no_contract_is_provided,LucidTests/CoreManagerContractTests/test_core_manager_get_should_return_empty_results_when_no_entities_in_local_store_meet_contract_requirements,LucidTests/CoreManagerContractTests/test_core_manager_get_should_return_empty_results_when_no_entities_meet_contract_requirements_in_remote_store_for_remote_data_source,LucidTests/CoreManagerContractTests/test_core_manager_get_should_return_local_result_when_no_entities_meet_contract_requirements_in_remote_store_for_remote_or_local_data_source,LucidTests/CoreManagerContractTests/test_core_manager_get_should_return_results_from_remote_if_any_entities_in_local_store_do_not_meet_contract_requirements_for_local_or_remote_data_source,LucidTests/CoreManagerContractTests/test_core_manager_get_should_return_results_from_remote_when_no_entities_in_local_store_meet_contract_requirements_for_local_or_remote_data_source,LucidTests/CoreManagerContractTests/test_core_manager_get_should_return_results_from_remote_when_no_entities_meet_contract_requirements_in_local_store_for_local_then_remote_data_source,LucidTests/CoreManagerPropertyTests/test_that_delegate_gets_called_when_observers_are_released,LucidTests/CoreManagerPropertyTests/test_that_observer_does_not_get_update_for_duplicate_values,LucidTests/CoreManagerTests/test_continuous_observer_should_receive_all_updates_in_order,LucidTests/CoreManagerTests/test_get_local_or_remote_returns_nil_result_if_local_result_missing_and_receiving_empty_response_error,LucidTests/CoreManagerTests/test_get_local_or_remote_returns_nil_result_if_local_result_missing_and_receiving_internet_connection_error,LucidTests/CoreManagerTests/test_get_local_then_remote_returns_nil_result_if_local_result_missing_and_receiving_empty_response_error,LucidTests/CoreManagerTests/test_get_local_then_remote_returns_nil_result_if_local_result_missing_and_receiving_internet_connection_error,LucidTests/CoreManagerTests/test_get_request_returns_request_token_and_metadata_for_local_then_remote_and_local_store_fails,LucidTests/CoreManagerTests/test_get_request_returns_request_token_and_metadata_for_remote_only_strategy,LucidTests/CoreManagerTests/test_get_returns_error_for_no_access_level,LucidTests/CoreManagerTests/test_get_returns_failure_for_change_from_local_access_to_no_access,LucidTests/CoreManagerTests/test_get_returns_failure_for_change_from_local_access_to_remote_access,LucidTests/CoreManagerTests/test_get_returns_failure_for_change_from_remote_access_to_local_access,LucidTests/CoreManagerTests/test_manager_should_fail_to_get_entity_from_memory_first_but_ignore_error_and_return_remote_store_error_when_strategy_is_local_then_remote,LucidTests/CoreManagerTests/test_manager_should_send_entity_update_to_provider_when_entity_is_removed,LucidTests/CoreManagerTests/test_manager_should_send_entity_update_to_provider_when_entity_is_set,LucidTests/CoreManagerTests/test_manager_should_send_entity_update_to_provider_with_different_query_when_entity_is_not_found,LucidTests/CoreManagerTests/test_get_request_returns_request_token_and_metadata_for_remote_only_strategy_with_do_no_persist,LucidTests/CoreManagerTests/test_get_returns_failure_for_change_from_remote_access_to_no_access,LucidTests/CoreManagerTests/test_get_returns_local_data_for_local_access_level,LucidTests/CoreManagerTests/test_manager_should_fail_to_get_entity_from_memory_store_then_not_cache_it_when_strategy_is_local_only,LucidTests/CoreManagerTests/test_manager_should_send_entity_update_to_provider_with_different_query_when_entity_is_not_in_filter_anymore,LucidTests/RecoverableStoreTests/test_store_affects_both_inner_stores_in_remove_all_operations_async,LucidTests/RecoverableStoreTests/test_store_affects_both_inner_stores_in_remove_operations_async,LucidTests/RecoverableStoreTests/test_store_only_reflects_main_store_in_get_operations,LucidTests/RecoverableStoreTests/test_store_only_reflects_main_store_in_get_operations_async,LucidTests/RecoverableStoreTests/test_store_should_delete_all_entities_async,LucidTests/RecoverableStoreTests/test_store_should_overwrite_a_non_empty_recovery_store_with_a_non_empty_main_store_at_init,LucidTests/RecoverableStoreTests/test_store_should_overwrite_an_empty_main_store_with_a_non_empty_recovery_store_at_init,LucidTests/RecoverableStoreTests/test_that_merging_entities_contains_updated_data_async,LucidTests/RecoverableStoreTests/test_that_merging_entities_updates_requested_lazy_value_with_requested_lazy_value_async,LucidTests/RelationshipControllerTests/test_relationship_controller_should_continuously_send_events_when_first_event_comes_from_continuous_signal,LucidTests/RelationshipControllerTests/test_relationship_controller_should_continuously_send_events_when_first_event_comes_from_once_signal,LucidTests/RelationshipControllerTests/test_relationship_controller_should_insert_many_root_entities_with_many_relationship_entities_in_graph,LucidTests/StoreStackTests/test_should_fail_to_remove_in_remote_store_only_with_memory_store_first,LucidTests/CoreDataStoreTests/test_store_should_not_retrieve_documents_with_an_invalid_expression_matched_against_another_expression,LucidTests/CoreManagerTests/test_that_multiple_search_requests_to_the_same_core_manager_do_not_block_each_other,LucidTests/CoreManagerTests/test_user_access_validation_remove_returns_failure_for_no_access_level,LucidTests/CoreManagerTests/test_manager_should_fail_to_get_entity_from_memory_first_but_ignore_error_and_reach_remote_store_when_strategy_is_local_then_remote,LucidTests/CoreManagerTests/test_manager_should_fail_to_get_entity_from_memory_first_but_ignore_error_and_reach_remote_store_when_strategy_is_local_then_remote_async,LucidTests/RecoverableStoreTests/test_that_merging_function_is_called_when_a_matching_record_exists,LucidTests/CoreManagerTests/test_manager_should_get_entity_from_memory_store_only_when_strategy_is_local_only,LucidTests/CoreManagerTests/test_get_returns_remote_data_for_remote_access_level,LucidTests/CoreManagerTests/test_manager_should_fail_to_get_entity_from_remote_store_then_not_cache_it_and_fall_back_to_memory_store_when_cache_strategy_is_remote_or_local,LucidTests/CoreManagerTests/test_manager_should_get_entity_from_memory_first_then_from_remote_store_when_strategy_is_local_then_remote,LucidTests/CoreManagerTests/test_manager_should_get_entity_from_memory_store_then_not_cache_it_when_strategy_is_local_only,LucidTests/CoreManagerTests/test_manager_should_not_return_nil_from_cache_but_should_return_nil_from_remote_store_when_strategy_is_local_then_remote,LucidTests/CoreManagerTests/test_manager_should_send_entity_update_to_provider_when_entity_changed,LucidTests/CoreManagerTests/test_manager_should_send_entity_update_to_provider_when_lazy_value_changes_from_requested_to_new_requested_value,LucidTests/AsyncTaskQueueTests/test_that_it_waits_until_barrier_finishes_before_starting_next_operation,LucidTests/RecoverableStoreTests/test_that_merging_function_is_called_when_a_matching_record_exists_async,LucidTests/CoreManagerPropertyTests/test_that_observer_gets_update,LucidTests/CoreManagerTests/test_manager_should_fail_to_get_entity_from_remote_store_then_not_cache_it_when_data_source_is_remote_only,LucidTests/CoreManagerTests/test_manager_should_fail_to_get_entity_from_remote_store_when_cache_strategy_is_remote_only,LucidTests/CoreManagerTests/test_manager_should_get_entity_from_remote_store_only_when_cache_strategy_is_remote_only,LucidTests/CoreManagerTests/test_manager_should_get_entity_from_remote_store_then_cache_it_when_cache_strategy_is_remote_only,LucidTests/CoreManagerTests/test_manager_should_not_get_entity_from_memory_first_but_still_reach_remote_store_when_strategy_is_local_then_remote,LucidTests/CoreManagerTests/test_manager_should_send_entity_update_to_provider_when_lazy_value_changes_from_unrequested_to_requested,LucidTests/CoreManagerTests/test_manager_should_send_entity_update_to_provider_with_different_query_when_entity_changed,LucidTests/CoreManagerTests/test_set_returns_failure_for_change_from_local_access_to_no_access,LucidTests/CoreManagerTests/test_set_returns_failure_for_change_from_remote_access_to_local_access,LucidTests/CoreManagerTests/test_set_returns_failure_for_change_from_remote_access_to_no_access,LucidTests/CoreManagerTests/test_remove_all_returns_failure_for_change_from_remote_access_to_local_access,LucidTests/CoreManagerTests/test_remove_all_returns_failure_for_change_from_remote_access_to_no_access,LucidTests/CoreManagerTests/test_user_access_validation_remove_all_returns_failure_for_no_access_level,LucidTests/CoreManagerTests/test_manager_should_send_new_truth_to_all_query_for_paginated_results,LucidTests/RecoverableStoreTests/test_store_should_delete_all_entities_with_all_query_async,LucidTests/CoreManagerTests/test_set_returns_failure_for_change_from_local_access_to_remote_access,LucidTests/CoreManagerTests/test_user_access_validation_set_returns_failure_for_no_access_level,LucidTests/RelationshipControllerTests/test_relationship_controller_should_use_fetcher_before_inserting_in_graph,LucidTests/RelationshipControllerTests/test_relationship_controller_should_pass_down_relationship_contract_to_relationship_calls,LucidTests/RecoverableStoreTests/test_store_should_update_an_entity_and_retrieve_the_update_async,LucidTests/CoreManagerTests/test_manager_should_fail_to_get_entities_when_stores_fails_and_strategy_is_remote_or_local,LucidTests/CoreManagerTests/test_manager_should_send_new_truth_to_all_query_for_complete_results,LucidTests/CoreManagerTests/test_manager_should_send_new_truth_to_all_query_for_complete_results,LucidTests/CoreManagerTests/test_manager_should_send_new_truth_to_all_query_for_complete_results,LucidTests/CoreManagerTests/test_user_access_validation_remove_all_returns_local_response_for_local_access_level,LucidTests/CoreManagerTests/test_user_access_validation_remove_all_returns_remote_response_for_remote_access_level,LucidTests/StoreStackTests/test_should_remove_from_remote_and_memory_stores,LucidTests/CoreManagerTests/test_set_should_release_once_provider_as_soon_as_the_observer_is_disposed_async
steps:
- name: Clone Project
uses: actions/checkout@v4
- name: Retrieve Xcode Version from File
id: get-xcode-version
run: echo "xcode-version=$(cat .xcode-version)" >> $GITHUB_OUTPUT
# use .xcode-version file to select the version of Xcode
- name: Select Xcode Version
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '${{ steps.get-xcode-version.outputs.xcode-version }}'
- name: Run Lucid-iOS Tests
run: |
fastlane scan --scheme Lucid-iOS --skip_testing "$FRAGILE_TESTS" --device "iPhone 16" --output_directory $FASTLANE_LOGS --result_bundle true
# Some tests need to be reworked. Don't forget about them, but don't crash the build either
# https://scribdjira.atlassian.net/browse/IPT-4387
- name: Run Fragile Tests
continue-on-error: true
run: |
fastlane scan --scheme Lucid-iOS --only_testing "$FRAGILE_TESTS" --device "iPhone 16" --output_directory $FASTLANE_FRAGILE_LOGS --result_bundle true
- name: Bundle Log Files
run: |
cd $FASTLANE_LOGS
zip -rX build-artifacts.zip .
cd $OLDPWD
cd $FASTLANE_FRAGILE_LOGS
zip -rX build-artifacts.zip .
- name: Upload Fastlane Log Files
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: |
${{ env.FASTLANE_LOGS }}/build-artifacts.zip
${{ env.FASTLANE_FRAGILE_LOGS }}/build-artifacts.zip