|
4 | 4 |
|
5 | 5 | from dstack._internal.core.errors import ConfigurationError |
6 | 6 | from dstack._internal.core.models.common import RegistryAuth |
7 | | -from dstack._internal.core.models.configurations import RepoSpec, parse_run_configuration |
| 7 | +from dstack._internal.core.models.configurations import ( |
| 8 | + DevEnvironmentConfigurationParams, |
| 9 | + RepoSpec, |
| 10 | + parse_run_configuration, |
| 11 | +) |
8 | 12 | from dstack._internal.core.models.resources import Range |
9 | 13 |
|
10 | 14 |
|
@@ -139,3 +143,49 @@ def test_registry_auth_hashable(): |
139 | 143 | """ |
140 | 144 | registry_auth = RegistryAuth(username="username", password="password") |
141 | 145 | hash(registry_auth) |
| 146 | + |
| 147 | + |
| 148 | +class TestDevEnvironmentConfigurationParams: |
| 149 | + def test_windsurf_version_valid_format(self): |
| 150 | + params = DevEnvironmentConfigurationParams( |
| 151 | + ide="windsurf", version="1.106.0@8951cd3ad688e789573d7f51750d67ae4a0bea7d" |
| 152 | + ) |
| 153 | + assert params.ide == "windsurf" |
| 154 | + assert params.version == "1.106.0@8951cd3ad688e789573d7f51750d67ae4a0bea7d" |
| 155 | + |
| 156 | + def test_windsurf_version_valid_short_commit(self): |
| 157 | + params = DevEnvironmentConfigurationParams(ide="windsurf", version="1.0.0@abc123") |
| 158 | + assert params.version == "1.0.0@abc123" |
| 159 | + |
| 160 | + def test_windsurf_version_empty_allowed(self): |
| 161 | + params = DevEnvironmentConfigurationParams(ide="windsurf", version=None) |
| 162 | + assert params.ide == "windsurf" |
| 163 | + assert params.version is None |
| 164 | + |
| 165 | + def test_windsurf_version_invalid_missing_at(self): |
| 166 | + with pytest.raises(ValueError, match="Invalid Windsurf version format"): |
| 167 | + DevEnvironmentConfigurationParams(ide="windsurf", version="1.106.0") |
| 168 | + |
| 169 | + def test_windsurf_version_invalid_missing_commit(self): |
| 170 | + with pytest.raises(ValueError, match="Invalid Windsurf version format"): |
| 171 | + DevEnvironmentConfigurationParams(ide="windsurf", version="1.106.0@") |
| 172 | + |
| 173 | + def test_windsurf_version_invalid_missing_version(self): |
| 174 | + with pytest.raises(ValueError, match="Invalid Windsurf version format"): |
| 175 | + DevEnvironmentConfigurationParams( |
| 176 | + ide="windsurf", version="@8951cd3ad688e789573d7f51750d67ae4a0bea7d" |
| 177 | + ) |
| 178 | + |
| 179 | + def test_windsurf_version_invalid_non_hex_commit(self): |
| 180 | + with pytest.raises(ValueError, match="Invalid Windsurf version format"): |
| 181 | + DevEnvironmentConfigurationParams(ide="windsurf", version="1.106.0@ghijklmnop") |
| 182 | + |
| 183 | + def test_vscode_version_not_validated(self): |
| 184 | + params = DevEnvironmentConfigurationParams(ide="vscode", version="1.80.0") |
| 185 | + assert params.ide == "vscode" |
| 186 | + assert params.version == "1.80.0" |
| 187 | + |
| 188 | + def test_cursor_version_not_validated(self): |
| 189 | + params = DevEnvironmentConfigurationParams(ide="cursor", version="0.40.0") |
| 190 | + assert params.ide == "cursor" |
| 191 | + assert params.version == "0.40.0" |
0 commit comments