verl_subquestion / tests /utils /test_import_utils_on_cpu.py
zswzswzsw's picture
Upload folder using huggingface_hub
66407c5 verified
# Copyright 2024 Bytedance Ltd. and/or its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import pytest
from verl.utils.import_utils import load_extern_type
# Path to the test module
TEST_MODULE_PATH = os.path.join(os.path.dirname(__file__), "_test_module.py")
def test_load_extern_type_class():
"""Test loading a class from an external file"""
TestClass = load_extern_type(TEST_MODULE_PATH, "TestClass")
# Verify the class was loaded correctly
assert TestClass is not None
assert TestClass.__name__ == "TestClass"
# Test instantiation and functionality
instance = TestClass()
assert instance.value == "default"
# Test with a custom value
custom_instance = TestClass("custom")
assert custom_instance.get_value() == "custom"
def test_load_extern_type_function():
"""Test loading a function from an external file"""
test_function = load_extern_type(TEST_MODULE_PATH, "test_function")
# Verify the function was loaded correctly
assert test_function is not None
assert callable(test_function)
# Test function execution
result = test_function()
assert result == "test_function_result"
def test_load_extern_type_constant():
"""Test loading a constant from an external file"""
constant = load_extern_type(TEST_MODULE_PATH, "TEST_CONSTANT")
# Verify the constant was loaded correctly
assert constant is not None
assert constant == "test_constant_value"
def test_load_extern_type_nonexistent_file():
"""Test behavior when file doesn't exist"""
with pytest.raises(FileNotFoundError):
load_extern_type("/nonexistent/path.py", "SomeType")
def test_load_extern_type_nonexistent_type():
"""Test behavior when type doesn't exist in the file"""
with pytest.raises(AttributeError):
load_extern_type(TEST_MODULE_PATH, "NonExistentType")
def test_load_extern_type_none_path():
"""Test behavior when file path is None"""
result = load_extern_type(None, "SomeType")
assert result is None
def test_load_extern_type_invalid_module():
"""Test behavior when module has syntax errors"""
# Create a temporary file with syntax errors
import tempfile
with tempfile.NamedTemporaryFile(suffix=".py", mode="w+", delete=False) as temp_file:
temp_file.write("This is not valid Python syntax :")
temp_path = temp_file.name
try:
with pytest.raises(RuntimeError):
load_extern_type(temp_path, "SomeType")
finally:
# Clean up the temporary file
if os.path.exists(temp_path):
os.remove(temp_path)