Skip to content

Commit

Permalink
test: Add tests for the new root path exploration
Browse files Browse the repository at this point in the history
  • Loading branch information
Julfried committed Jan 27, 2025
1 parent e82a796 commit 0cb1caa
Showing 1 changed file with 58 additions and 1 deletion.
59 changes: 58 additions & 1 deletion tests/unit/sagemaker/test_studio.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,71 @@
# language governing permissions and limitations under the License.
# language governing permissions and limitations under the License.
from __future__ import absolute_import

import os
from pathlib import Path
from sagemaker._studio import (
_append_project_tags,
_find_config,
_load_config,
_parse_tags,
)

def test_find_config_cross_platform(tmpdir):
"""Test _find_config works correctly across different platforms."""
# Create a completely separate directory for isolated tests
import tempfile
with tempfile.TemporaryDirectory() as isolated_root:
# Setup test directory structure for positive tests
config = tmpdir.join(".sagemaker-code-config")
config.write('{"sagemakerProjectId": "proj-1234"}')

# Test 1: Direct parent directory
working_dir = tmpdir.mkdir("sub")
found_path = _find_config(working_dir)
assert found_path == config

# Test 2: Deeply nested directories
nested_dir = tmpdir.mkdir("deep").mkdir("nested").mkdir("path")
found_path = _find_config(nested_dir)
assert found_path == config

# Test 3: Start from root directory
import os
root_dir = os.path.abspath(os.sep)
found_path = _find_config(root_dir)
assert found_path is None

# Test 4: No config file in path - using truly isolated directory
isolated_path = Path(isolated_root) / "nested" / "path"
isolated_path.mkdir(parents=True)
found_path = _find_config(isolated_path)
assert found_path is None

def test_find_config_path_separators(tmpdir):
"""Test _find_config handles different path separator styles.
Tests:
1. Forward slashes
2. Backslashes
3. Mixed separators
"""
# Setup
config = tmpdir.join(".sagemaker-code-config")
config.write('{"sagemakerProjectId": "proj-1234"}')
base_path = str(tmpdir)

# Test different path separator styles
paths = [
os.path.join(base_path, "dir1", "dir2"), # OS native
"/".join([base_path, "dir1", "dir2"]), # Forward slashes
"\\".join([base_path, "dir1", "dir2"]), # Backslashes
base_path + "/dir1\\dir2" # Mixed
]

for path in paths:
os.makedirs(path, exist_ok=True)
found_path = _find_config(path)
assert found_path == config

def test_find_config(tmpdir):
path = tmpdir.join(".sagemaker-code-config")
Expand Down

0 comments on commit 0cb1caa

Please sign in to comment.