11import pytest
2- from pathlib import Path
3- from unittest .mock import patch , MagicMock
2+ import transformers
43from transformers import PreTrainedTokenizerBase
54
65from guidellm .utils .hf_transformers import check_load_processor
76
7+
88class DummyTokenizer (PreTrainedTokenizerBase ):
9- def __init__ (self ):
10- pass
11-
12- @patch ("guidellm.utils.hf_transformers.AutoTokenizer.from_pretrained" , return_value = DummyTokenizer ())
13- def test_check_load_processor_with_tokenizer_instance (mock_from_pretrained ):
14- tokenizer = DummyTokenizer ()
15- result = check_load_processor (tokenizer , None , "test" )
16- assert isinstance (result , PreTrainedTokenizerBase )
17-
18- @patch ("guidellm.utils.hf_transformers.AutoTokenizer.from_pretrained" , return_value = DummyTokenizer ())
19- def test_check_load_processor_with_tokenizer_name (mock_from_pretrained ):
20- result = check_load_processor ("bert-base-uncased" , None , "test" )
21- assert isinstance (result , PreTrainedTokenizerBase )
22-
23- @patch ("guidellm.utils.hf_transformers.AutoTokenizer.from_pretrained" , return_value = DummyTokenizer ())
24- def test_check_load_processor_with_tokenizer_path (mock_from_pretrained , tmp_path ):
25- result = check_load_processor (tmp_path , None , "test" )
26- assert isinstance (result , PreTrainedTokenizerBase )
27-
28- def test_check_load_processor_none_raises ():
29- with pytest .raises (ValueError , match = "Processor/Tokenizer is required" ):
9+ pass
10+
11+
12+ def test_processor_is_none ():
13+ with pytest .raises (ValueError , match = "Processor/Tokenizer is required for test." ):
3014 check_load_processor (None , None , "test" )
3115
32- def test_check_load_processor_invalid_type_raises ():
33- with pytest .raises (ValueError , match = "Invalid processor/Tokenizer" ):
34- check_load_processor (123 , None , "test" )
16+
17+ def test_processor_not_isinstance ():
18+ with pytest .raises (ValueError , match = "Invalid processor/Tokenizer for test." ):
19+ check_load_processor (123 , None , "test" ) # type: ignore
20+
21+
22+ def test_processor_load_by_path (monkeypatch , tmp_path ):
23+ monkeypatch .setattr (
24+ transformers .AutoTokenizer ,
25+ "from_pretrained" ,
26+ lambda * args , ** kwargs : DummyTokenizer (),
27+ )
28+ tokenizer = check_load_processor (tmp_path , None , "test" )
29+ assert isinstance (tokenizer , PreTrainedTokenizerBase )
30+
31+
32+ def test_processor_load_error (monkeypatch ):
33+ def raise_error (* args , ** kwargs ):
34+ raise RuntimeError ("test error" )
35+
36+ monkeypatch .setattr ("transformers.AutoTokenizer.from_pretrained" , raise_error )
37+ with pytest .raises (
38+ ValueError , match = "Failed to load processor/Tokenizer for test."
39+ ):
40+ check_load_processor ("gpt2" , None , "test" )
0 commit comments