|
3 | 3 |
|
4 | 4 | from dataclasses import dataclass |
5 | 5 |
|
| 6 | +import pytest |
6 | 7 | import torch |
7 | 8 |
|
8 | 9 | from megatron.bridge.data.base import DatasetBuildContext |
@@ -58,7 +59,7 @@ def fake_load_dataset(path, name=None, split=None, trust_remote_code=None, data_ |
58 | 59 | del path, name, trust_remote_code, data_files |
59 | 60 | calls.load_dataset += 1 |
60 | 61 | if split == "validation": |
61 | | - raise ValueError("missing split") |
| 62 | + raise ValueError("Unknown split \"validation\". Should be one of ['train', 'test'].") |
62 | 63 | return [{"text": "hello", "image": "image_0.jpg"}] |
63 | 64 |
|
64 | 65 | class _AutoImageProcessor: |
@@ -95,6 +96,21 @@ def from_pretrained(path, trust_remote_code=None): |
95 | 96 | assert calls.is_safe_repo >= 3 |
96 | 97 |
|
97 | 98 |
|
| 99 | +def test_build_datasets_propagates_non_split_value_error(monkeypatch): |
| 100 | + def fake_load_dataset(path, name=None, split=None, trust_remote_code=None, data_files=None): |
| 101 | + del path, name, split, trust_remote_code, data_files |
| 102 | + raise ValueError("Empty 'data_files': '[]'. It should be either non-empty or None (default).") |
| 103 | + |
| 104 | + provider = _make_provider() |
| 105 | + monkeypatch.setattr(provider, "_load_processors", lambda: {}) |
| 106 | + monkeypatch.setattr(provider, "_load_tokenizer", lambda: DummyTokenizer()) |
| 107 | + monkeypatch.setattr("megatron.bridge.data.megatron_mimo.hf_provider.load_dataset", fake_load_dataset) |
| 108 | + |
| 109 | + context = DatasetBuildContext(train_samples=1, valid_samples=0, test_samples=0) |
| 110 | + with pytest.raises(ValueError, match="Empty 'data_files'"): |
| 111 | + provider.build_datasets(context) |
| 112 | + |
| 113 | + |
98 | 114 | def test_get_collate_fn_returns_partial(): |
99 | 115 | provider = _make_provider() |
100 | 116 | collate_fn = provider.get_collate_fn() |
|
0 commit comments