Handle binary files when scanning metadata in python 3 (#53773) - 2.7
diff --git a/test/runner/lib/target.py b/test/runner/lib/target.py
index b363c4a0e507bc..4971c07aec3521 100644
--- a/test/runner/lib/target.py
+++ b/test/runner/lib/target.py
@@ -363,8 +363,12 @@ def analyze_integration_target_dependencies(integration_targets):
 
         for meta_path in meta_paths:
             if os.path.exists(meta_path):
-                with open(meta_path, 'r') as meta_fd:
-                    meta_lines = meta_fd.read().splitlines()
+                with open(meta_path, 'rb') as meta_fd:
+                    # try and decode the file as a utf-8 string, skip if it contains invalid chars (binary file)
+                    try:
+                        meta_lines = meta_fd.read().decode('utf-8').splitlines()
+                    except UnicodeDecodeError:
+                        continue
 
                 for meta_line in meta_lines:
                     if re.search(r'^ *#.*$', meta_line):

(cherry picked from commit c2466c545bce1c89bed5ca6536376444d01f0522)

##### SUMMARY
Backport of https://github.com/ansible/ansible/pull/53773

##### ISSUE TYPE
- Bugfix Pull Request

##### COMPONENT NAME
ansible-test