| | import os |
| |
|
| |
|
| | def main(): |
| | asset_paths = [ |
| | "Project/Assets", |
| | "DevProject/Assets", |
| | "com.unity.ml-agents", |
| | "com.unity.ml-agents.extensions", |
| | ] |
| | meta_suffix = ".meta" |
| | python_suffix = ".py" |
| | allow_list = frozenset( |
| | [ |
| | "com.unity.ml-agents/.editorconfig", |
| | "com.unity.ml-agents/.gitignore", |
| | "com.unity.ml-agents/.npmignore", |
| | "com.unity.ml-agents/.git", |
| | "com.unity.ml-agents/Tests/.tests.json", |
| | "com.unity.ml-agents/.pre-commit-config.yaml", |
| | "com.unity.ml-agents/.pre-commit-search-and-replace.yaml", |
| | "com.unity.ml-agents.extensions/.gitignore", |
| | "com.unity.ml-agents.extensions/.npmignore", |
| | "com.unity.ml-agents.extensions/Tests/.tests.json", |
| | "com.unity.ml-agents/Samples/3DBall/.sample.json", |
| | ] |
| | ) |
| | ignored_dirs = { |
| | "Documentation~", |
| | ".github", |
| | ".yamato", |
| | } |
| |
|
| | num_matched = 0 |
| |
|
| | unmatched = set() |
| |
|
| | for asset_path in asset_paths: |
| | for root, dirs, files in os.walk(asset_path): |
| | |
| | for ignored in ignored_dirs: |
| | try: |
| | dirs.remove(ignored) |
| | except ValueError: |
| | pass |
| |
|
| | dirs = set(dirs) |
| | files = set(files) |
| |
|
| | combined = dirs | files |
| | for f in combined: |
| |
|
| | if f.endswith(python_suffix): |
| | |
| | continue |
| |
|
| | full_path = os.path.join(root, f) |
| | if full_path in allow_list: |
| | continue |
| |
|
| | |
| | if f.endswith(meta_suffix): |
| | expected = f.replace(meta_suffix, "") |
| | else: |
| | expected = f + meta_suffix |
| |
|
| | if expected not in combined: |
| | unmatched.add(full_path) |
| | else: |
| | num_matched += 1 |
| |
|
| | if unmatched: |
| | raise Exception( |
| | f"Mismatch between expected files and their .meta files: {sorted(unmatched)}" |
| | ) |
| |
|
| | print(f"Found {num_matched} correctly matched files") |
| |
|
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|