|
13 | 13 | from pathlib import Path |
14 | 14 | from typing import Any, Set |
15 | 15 |
|
16 | | -import aiofiles |
17 | 16 | import pytest |
18 | 17 | from pydantic import BaseModel |
19 | 18 |
|
@@ -125,9 +124,7 @@ class Input(BaseModel): |
125 | 124 | async def test_parse_data_exception(self, filename, want): |
126 | 125 | pathname = Path(__file__).parent.parent.parent / "data/output_parser" / filename |
127 | 126 | assert pathname.exists() |
128 | | - async with aiofiles.open(str(pathname), mode="r") as reader: |
129 | | - data = await reader.read() |
130 | | - |
| 127 | + data = await aread(filename=pathname) |
131 | 128 | result = OutputParser.parse_data(data=data) |
132 | 129 | assert want in result |
133 | 130 |
|
@@ -198,12 +195,25 @@ async def test_read_file_block(self): |
198 | 195 |
|
199 | 196 | @pytest.mark.asyncio |
200 | 197 | async def test_read_write(self): |
201 | | - pathname = Path(__file__).parent / uuid.uuid4().hex / "test.tmp" |
| 198 | + pathname = Path(__file__).parent / f"../../../workspace/unittest/{uuid.uuid4().hex}" / "test.tmp" |
202 | 199 | await awrite(pathname, "ABC") |
203 | 200 | data = await aread(pathname) |
204 | 201 | assert data == "ABC" |
205 | 202 | pathname.unlink(missing_ok=True) |
206 | 203 |
|
| 204 | + @pytest.mark.asyncio |
| 205 | + async def test_read_write_error_charset(self): |
| 206 | + pathname = Path(__file__).parent / f"../../../workspace/unittest/{uuid.uuid4().hex}" / "test.txt" |
| 207 | + content = "中国abc123\u27f6" |
| 208 | + await awrite(filename=pathname, data=content) |
| 209 | + data = await aread(filename=pathname) |
| 210 | + assert data == content |
| 211 | + |
| 212 | + content = "GB18030 是中国国家标准局发布的新一代中文字符集标准,是 GBK 的升级版,支持更广泛的字符范围。" |
| 213 | + await awrite(filename=pathname, data=content, encoding="gb2312") |
| 214 | + data = await aread(filename=pathname, encoding="utf-8") |
| 215 | + assert data == content |
| 216 | + |
207 | 217 |
|
208 | 218 | if __name__ == "__main__": |
209 | 219 | pytest.main([__file__, "-s"]) |
0 commit comments