amoghrajesh commented on PR #54449:
URL: https://github.com/apache/airflow/pull/54449#issuecomment-3205508675

   > What we also need (following my comment) - is a separate test GitHub 
Action job that will be running "secrets_masker" and generally (later) - any 
other shared code in isolation.
   > 
   > Basically what that job should do is:
   > 
   > ```
   > cd shared/secrets_masker
   > uv run pytest
   > ```
   > 
   > This will make sure that the tests are passing and also automatically do 
"isolation" test - which means that it will automatically test if we are 
actually not using something in secrets_masker that we have not declared as 
dependency.
   
   Yep I totally agree. That made me wonder if it would work at all.
   
   Tnx to your comment @potiuk I checked in detail some failing tests and now 
it works as expected:
   
   ```
   ➜  airflow git:(move-secrets-masker-to-shared) ✗ cd shared/secrets_masker uv 
run pytest                                                 
   warning: The package `pandas==2.1.4` does not have an extra named `postgres`
         Built apache-airflow-shared-secrets-masker @ 
file:///Users/amoghdesai/Documents/OSS/repos/airflow/shared/secrets_masker
   Uninstalled 1 package in 1ms
   Installed 1 package in 1ms
   
============================================================================= 
test session starts 
==============================================================================
   platform darwin -- Python 3.13.3, pytest-8.4.1, pluggy-1.6.0 -- 
/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/bin/python3
   cachedir: .pytest_cache
   rootdir: /Users/amoghdesai/Documents/OSS/repos/airflow
   configfile: pyproject.toml
   plugins: unordered-0.7.0, instafail-0.5.0, timeouts-1.2.1, asyncio-1.1.0, 
xdist-3.8.0, custom-exit-code-0.3.0, anyio-4.10.0, icdiff-0.9, 
rerunfailures-15.1, cov-6.2.1, kgb-7.2, mock-3.14.1, time-machine-2.17.0, 
requests-mock-1.12.1
   asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=function, 
asyncio_default_test_loop_scope=function
   setup timeout: 0.0s, execution timeout: 0.0s, teardown timeout: 0.0s
   collected 103 items                                                          
                                                                                
                  
   
   tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_message 
PASSED                                                                          
            [  0%]
   tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_args 
PASSED                                                                          
               [  1%]
   tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_extra 
PASSED                                                                          
              [  2%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_exception 
PASSED                                                                          
          [  3%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_exception_not_raised
 PASSED                                                                         
[  4%]
   tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_exc_tb 
XFAIL (Cannot filter secrets in traceback source)                               
             [  5%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_masking_in_implicit_context_exceptions
 PASSED                                                       [  6%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_masking_in_explicit_context_exceptions
 PASSED                                                       [  7%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_mask_secret[None-secret-expected_mask0]
 PASSED                                                      [  8%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_mask_secret[apikey-secret-expected_mask1]
 PASSED                                                    [  9%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_mask_secret[None-value2-expected_mask2]
 PASSED                                                      [ 10%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_mask_secret[None-value3-expected_mask3]
 PASSED                                                      [ 11%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_mask_secret[api_key-value4-expected_mask4]
 PASSED                                                   [ 12%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_mask_secret[None-value5-expected_mask5]
 PASSED                                                      [ 13%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_mask_secret[None--expected_mask6]
 PASSED                                                            [ 14%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact[patterns0-None-secret-***]
 PASSED                                                            [ 15%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact[patterns1-None-value1-expected1]
 PASSED                                                      [ 16%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact[patterns2-None-value2-expected2]
 PASSED                                                      [ 17%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact[patterns3-None-value3-expected3]
 PASSED                                                      [ 18%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact[patterns4-None-value4-expected4]
 PASSED                                                      [ 19%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact[patterns5-api_key-value5-expected5]
 PASSED                                                   [ 20%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact[patterns6-env-value6-expected6]
 PASSED                                                       [ 21%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_replacement[api_key-pass-*\ufe0f\u20e3*\ufe0f\u20e3*\ufe0f\u20e3]
 PASSED                     [ 22%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_replacement[api_key-value1-expected1]
 PASSED                                                 [ 23%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_replacement[None-value2-expected2]
 PASSED                                                    [ 24%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_replacement[None-value3-expected3]
 PASSED                                                    [ 25%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_replacement[api_key-value4-expected4]
 PASSED                                                 [ 26%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_filehandles
 PASSED                                                                         
  [ 27%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_max_depth[val0-expected0-None]
 PASSED                                                        [ 28%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_max_depth[val1-expected1-1]
 PASSED                                                           [ 29%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_max_depth[val2-expected2-None]
 PASSED                                                        [ 30%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_max_depth[val3-expected3-None]
 PASSED                                                        [ 31%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_max_depth[val4-expected4-None]
 PASSED                                                        [ 32%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_max_depth[val5-expected5-1]
 PASSED                                                           [ 33%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_with_str_type
 PASSED                                                                         
[ 33%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_state_enum[success-success]
 PASSED                                                           [ 34%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_state_enum[failed-failed]
 PASSED                                                             [ 35%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_state_enum[running-running]
 PASSED                                                           [ 36%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_state_enum[state3-expected3]
 PASSED                                                          [ 37%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_state_enum[state4-expected4]
 PASSED                                                          [ 38%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_state_enum[state5-expected5]
 PASSED                                                          [ 39%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_redact_state_enum[testvalue-testvalue]
 PASSED                                                       [ 40%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_reset_secrets_masker
 PASSED                                                                         
[ 41%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_defaults[-False]
 PASSED                                                              [ 42%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_defaults[None-False]
 PASSED                                                          [ 43%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_defaults[key-False]
 PASSED                                                           [ 44%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_defaults[google_api_key-True]
 PASSED                                                 [ 45%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_defaults[GOOGLE_API_KEY-True]
 PASSED                                                 [ 46%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_defaults[GOOGLE_APIKEY-True]
 PASSED                                                  [ 47%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_defaults[1-False]
 PASSED                                                             [ 48%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_config[key-TRELLO_KEY-True]
 PASSED                                                   [ 49%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_config[key-TRELLO_API_KEY-True]
 PASSED                                               [ 50%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_config[key-GITHUB_APIKEY-True]
 PASSED                                                [ 51%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_config[key,
 token-TRELLO_TOKEN-True] PASSED                                          [ 52%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_config[mysecretword,
 mysensitivekey-GITHUB_mysecretword-True] PASSED                 [ 53%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_config[None-TRELLO_API-False]
 PASSED                                                 [ 54%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_config[token-TRELLO_KEY-False]
 PASSED                                                [ 55%]
   
tests/secrets_masker/test_secrets_masker.py::TestShouldHideValueForKey::test_hiding_config[token,
 mysecretword-TRELLO_KEY-False] PASSED                                  [ 56%]
   
tests/secrets_masker/test_secrets_masker.py::TestRedactedIO::test_redacts_from_print
 PASSED                                                                         
     [ 57%]
   tests/secrets_masker/test_secrets_masker.py::TestRedactedIO::test_write 
PASSED                                                                          
                 [ 58%]
   
tests/secrets_masker/test_secrets_masker.py::TestRedactedIO::test_input_builtin 
PASSED                                                                          
         [ 59%]
   
tests/secrets_masker/test_secrets_masker.py::TestMaskSecretAdapter::test_calling_mask_secret_adds_adaptations_for_returned_str
 PASSED                                    [ 60%]
   
tests/secrets_masker/test_secrets_masker.py::TestMaskSecretAdapter::test_calling_mask_secret_adds_adaptations_for_returned_iterable
 PASSED                               [ 61%]
   
tests/secrets_masker/test_secrets_masker.py::TestMaskSecretAdapter::test_calling_mask_secret_not_set
 PASSED                                                              [ 62%]
   
tests/secrets_masker/test_secrets_masker.py::TestMaskSecretAdapter::test_add_mask_short_secrets_and_skip_keywords[abc-False-True-short
 secret with first warning] PASSED [ 63%]
   
tests/secrets_masker/test_secrets_masker.py::TestMaskSecretAdapter::test_add_mask_short_secrets_and_skip_keywords[def-False-False-short
 secret with no warning] PASSED   [ 64%]
   
tests/secrets_masker/test_secrets_masker.py::TestMaskSecretAdapter::test_add_mask_short_secrets_and_skip_keywords[airflow-False-False-keyword
 that should be skipped] PASSED [ 65%]
   
tests/secrets_masker/test_secrets_masker.py::TestMaskSecretAdapter::test_add_mask_short_secrets_and_skip_keywords[valid_secret-True-False-valid
 secret that should be masked] PASSED [ 66%]
   
tests/secrets_masker/test_secrets_masker.py::TestStructuredVsUnstructuredMasking::test_structured_sensitive_fields_always_masked
 PASSED                                  [ 66%]
   
tests/secrets_masker/test_secrets_masker.py::TestStructuredVsUnstructuredMasking::test_unstructured_text_min_length_enforced
 PASSED                                      [ 67%]
   
tests/secrets_masker/test_secrets_masker.py::TestContainerTypesRedaction::test_kubernetes_env_var_redaction
 PASSED                                                       [ 68%]
   
tests/secrets_masker/test_secrets_masker.py::TestContainerTypesRedaction::test_deeply_nested_mixed_structures
 PASSED                                                     [ 69%]
   
tests/secrets_masker/test_secrets_masker.py::TestEdgeCases::test_circular_references
 PASSED                                                                         
     [ 70%]
   
tests/secrets_masker/test_secrets_masker.py::TestEdgeCases::test_regex_special_chars_in_secrets
 PASSED                                                                   [ 71%]
   
tests/secrets_masker/test_secrets_masker.py::TestDirectMethodCalls::test_redact_all_directly
 PASSED                                                                      [ 
72%]
   
tests/secrets_masker/test_secrets_masker.py::TestMixedDataScenarios::test_mixed_structured_unstructured_data
 PASSED                                                      [ 73%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_simple_strings[***-original_secret-password-original_secret]
 PASSED                      [ 74%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_simple_strings[new_secret-original_secret-password-new_secret]
 PASSED                    [ 75%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_simple_strings[***-original_value-normal_field-***]
 PASSED                               [ 76%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_simple_strings[new_value-original_value-normal_field-new_value]
 PASSED                   [ 77%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_simple_strings[***-original_value-None-***]
 PASSED                                       [ 78%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_simple_strings[new_value-original_value-None-new_value]
 PASSED                           [ 79%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_dictionaries[old_data0-new_data0-expected0]
 PASSED                                       [ 80%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_dictionaries[old_data1-new_data1-expected1]
 PASSED                                       [ 81%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data0-new_data0-None-expected0]
 PASSED                                   [ 82%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data1-new_data1-None-expected1]
 PASSED                                   [ 83%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data2-new_data2-password-expected2]
 PASSED                               [ 84%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data3-new_data3-normal_list-expected3]
 PASSED                            [ 85%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data4-new_data4-None-expected4]
 PASSED                                   [ 86%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data5-new_data5-None-expected5]
 PASSED                                   [ 87%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data6-new_data6-password-expected6]
 PASSED                               [ 88%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data7-new_data7-normal_tuple-expected7]
 PASSED                           [ 89%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data8-new_data8-None-expected8]
 PASSED                                   [ 90%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data9-new_data9-None-expected9]
 PASSED                                   [ 91%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data10-new_data10-password-expected10]
 PASSED                            [ 92%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_collections[old_data11-new_data11-normal_tuple-expected11]
 PASSED                        [ 93%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_mismatched_types
 PASSED                                                                  [ 94%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_with_missing_keys
 PASSED                                                                 [ 95%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_complex_redacted_structures
 PASSED                                                       [ 96%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_partially_redacted_structures
 PASSED                                                     [ 97%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_max_depth
 PASSED                                                                         
[ 98%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_enum_values
 PASSED                                                                       [ 
99%]
   
tests/secrets_masker/test_secrets_masker.py::TestSecretsMaskerMerge::test_merge_round_trip
 PASSED                                                                        
[100%]
   
   =========================================================================== 
short test summary info 
============================================================================
   XFAIL 
tests/secrets_masker/test_secrets_masker.py::TestSecretsMasker::test_exc_tb - 
Cannot filter secrets in traceback source
   ================================================================== 102 
passed, 1 xfailed, 1 warning in 1.28s 
===================================================================
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to