Holger Frey
6 years ago
6 changed files with 264 additions and 146 deletions
@ -1,21 +0,0 @@ |
|||||||
#!/usr/bin/env python |
|
||||||
# -*- coding: utf-8 -*- |
|
||||||
|
|
||||||
"""Tests for `s2rename` package.""" |
|
||||||
|
|
||||||
import pytest |
|
||||||
|
|
||||||
from click.testing import CliRunner |
|
||||||
|
|
||||||
from s2rename import cli |
|
||||||
|
|
||||||
|
|
||||||
def test_command_line_interface(): |
|
||||||
"""Test the CLI.""" |
|
||||||
runner = CliRunner() |
|
||||||
result = runner.invoke(cli.main) |
|
||||||
assert result.exit_code == 0 |
|
||||||
assert "s2rename.cli.main" in result.output |
|
||||||
help_result = runner.invoke(cli.main, ["--help"]) |
|
||||||
assert help_result.exit_code == 0 |
|
||||||
assert "--help Show this message and exit." in help_result.output |
|
@ -0,0 +1,182 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
"""Tests for `s2rename` package.""" |
||||||
|
|
||||||
|
import pytest |
||||||
|
|
||||||
|
from pathlib import Path |
||||||
|
|
||||||
|
|
||||||
|
sensovation_source_list = [ |
||||||
|
Path("some thing_A1_1.tif"), |
||||||
|
Path("some thing_A02_2.tif"), |
||||||
|
Path("A03_3.tif"), |
||||||
|
Path("some thing_A10_4"), |
||||||
|
Path("some thing_A11_5.csv"), |
||||||
|
Path("some thing_A12_6.xml"), |
||||||
|
Path("some thing_B01_1.tif"), |
||||||
|
Path("some thing_C01_1.tif"), |
||||||
|
Path("some thing_D01_1.tif"), |
||||||
|
Path("some thing_E01_1.tif"), |
||||||
|
Path("some thing_F01_1.tif"), |
||||||
|
Path("some thing_G01_1.tif"), |
||||||
|
Path("some thing_H01_1.tif"), |
||||||
|
Path("some thing_I01_1.tif"), |
||||||
|
Path("some thing_FF01_1.tif"), |
||||||
|
Path("some thing_F21_1.tif"), |
||||||
|
Path("some thing_F00_1.tif"), |
||||||
|
Path("some thing_F0_1.tif"), |
||||||
|
Path("some thing_F13_1.tif"), |
||||||
|
Path("some thing_F08.tif"), |
||||||
|
Path(".some thing_F09_1.tif"), |
||||||
|
] |
||||||
|
|
||||||
|
scienion_source_list = [ |
||||||
|
Path("A1_1_some thing.tif"), |
||||||
|
Path("A02_2_some thing.tif"), |
||||||
|
Path("A03_3.tif"), |
||||||
|
Path("A10_4_some thing"), |
||||||
|
Path("A11_5_some thing.csv"), |
||||||
|
Path("A12_6_some thing.xml"), |
||||||
|
Path("B01_1_some thing.tif"), |
||||||
|
Path("C01_1_some thing.tif"), |
||||||
|
Path("D01_1_some thing.tif"), |
||||||
|
Path("E01_1_some thing.tif"), |
||||||
|
Path("F01_1_some thing.tif"), |
||||||
|
Path("G01_1_some thing.tif"), |
||||||
|
Path("H01_1_some thing.tif"), |
||||||
|
Path("I01_1_some thing.tif"), |
||||||
|
Path("FF01_1_some thing.tif"), |
||||||
|
Path("F21_1_some thing.tif"), |
||||||
|
Path("F00_1_some thing.tif"), |
||||||
|
Path("F0_1_some thing.tif"), |
||||||
|
Path("F13_1_some thing.tif"), |
||||||
|
Path("F08_some thing.tif"), |
||||||
|
Path(".F09_1_some thing.tif"), |
||||||
|
] |
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("sources", [sensovation_source_list, scienion_source_list]) |
||||||
|
def test_parse_source_list_sensovation(sources): |
||||||
|
from s2rename.helpers import RE_SENSOVATION, RE_SCIENION, parse_source_list |
||||||
|
|
||||||
|
regex = RE_SENSOVATION if sources == sensovation_source_list else RE_SCIENION |
||||||
|
result = list(parse_source_list(sources, regex)) |
||||||
|
|
||||||
|
assert len(result) == 13 |
||||||
|
assert {r.row for r in result} == set("ABCDEFGH") |
||||||
|
assert {r.col for r in result} == {1, 2, 3, 10, 11, 12} |
||||||
|
assert {r.channel for r in result} == set("123456") |
||||||
|
assert {r.ext for r in result} == {".tif", ".csv", ".xml", ""} |
||||||
|
assert {r.stem for r in result} == {"some thing", ""} |
||||||
|
|
||||||
|
|
||||||
|
def test_get_source_list(): |
||||||
|
from s2rename.helpers import get_source_list |
||||||
|
|
||||||
|
result = list(get_source_list(".")) |
||||||
|
|
||||||
|
assert {p.name for p in result} == { |
||||||
|
"LICENSE", |
||||||
|
"Pipfile", |
||||||
|
"requirements_dev.txt", |
||||||
|
"setup.cfg", |
||||||
|
"Makefile", |
||||||
|
"README.md", |
||||||
|
"setup.py", |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("path", ["/i/hope/this/doesnt/exist", "setup.py"]) |
||||||
|
def test_get_source_list_raises_error(path): |
||||||
|
from s2rename.helpers import get_source_list, S2IOError |
||||||
|
|
||||||
|
with pytest.raises(S2IOError): |
||||||
|
get_source_list(path) |
||||||
|
|
||||||
|
|
||||||
|
def test_get_source_list_with_type(): |
||||||
|
from s2rename.helpers import get_source_list |
||||||
|
|
||||||
|
result = get_source_list(".", ".txt") |
||||||
|
|
||||||
|
assert {p.name for p in result} == {"requirements_dev.txt"} |
||||||
|
|
||||||
|
|
||||||
|
def test_filter_source_list_type(): |
||||||
|
from s2rename.helpers import filter_source_list |
||||||
|
|
||||||
|
result = list(filter_source_list(sensovation_source_list, ".csv")) |
||||||
|
|
||||||
|
assert len(result) == 1 |
||||||
|
assert result[0].name == "some thing_A11_5.csv" |
||||||
|
|
||||||
|
|
||||||
|
def test_get_new_name_simple(): |
||||||
|
from s2rename.helpers import get_new_name, Renamable, template_sensovation |
||||||
|
|
||||||
|
r = Renamable( |
||||||
|
path=Path("x.csv"), stem="some_name", row="A", col=2, channel=3, ext=".csv" |
||||||
|
) |
||||||
|
result = get_new_name(r, template_sensovation, digits=2) |
||||||
|
|
||||||
|
assert result == "some_name_A02_3.csv" |
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize( |
||||||
|
"tpl,stem,row,col,channel,digits,ext,expected", |
||||||
|
[ |
||||||
|
("sen", "some_name", "A", 1, 2, 1, ".xls", "some_name_A1_2.xls"), |
||||||
|
("sen", "some_name", "A", 1, 2, 2, ".xls", "some_name_A01_2.xls"), |
||||||
|
("sen", "some_name", "A", 1, 2, 3, ".xls", "some_name_A001_2.xls"), |
||||||
|
("sen", "some_name", "B", 1, 2, 2, ".xls", "some_name_B01_2.xls"), |
||||||
|
("sen", "some_name", "A", 2, 2, 2, ".xls", "some_name_A02_2.xls"), |
||||||
|
("sen", "some_name", "A", 1, 3, 2, ".xls", "some_name_A01_3.xls"), |
||||||
|
("sen", "some_name", "A", 1, 3, 2, ".tif", "some_name_A01_3.tif"), |
||||||
|
("sen", "", "A", 1, 3, 2, ".xls", "A01_3.xls"), |
||||||
|
("sci", "some_name", "A", 1, 2, 1, ".xls", "A1_2_some_name.xls"), |
||||||
|
("sci", "some_name", "A", 1, 2, 2, ".xls", "A01_2_some_name.xls"), |
||||||
|
("sci", "some_name", "A", 1, 2, 3, ".xls", "A001_2_some_name.xls"), |
||||||
|
("sci", "some_name", "B", 1, 2, 2, ".xls", "B01_2_some_name.xls"), |
||||||
|
("sci", "some_name", "A", 2, 2, 2, ".xls", "A02_2_some_name.xls"), |
||||||
|
("sci", "some_name", "A", 1, 3, 2, ".xls", "A01_3_some_name.xls"), |
||||||
|
("sci", "some_name", "A", 1, 3, 2, ".tif", "A01_3_some_name.tif"), |
||||||
|
("sci", "", "A", 1, 3, 2, ".xls", "A01_3.xls"), |
||||||
|
], |
||||||
|
) |
||||||
|
def test_get_new_name(tpl, stem, row, col, channel, digits, ext, expected): |
||||||
|
from s2rename.helpers import ( |
||||||
|
get_new_name, |
||||||
|
Renamable, |
||||||
|
template_sensovation, |
||||||
|
template_scienion, |
||||||
|
) |
||||||
|
|
||||||
|
path = Path("x" + ext) |
||||||
|
r = Renamable(path=path, stem=stem, row=row, col=col, channel=channel, ext=ext) |
||||||
|
tpl = template_sensovation if tpl == "sen" else template_scienion |
||||||
|
result = get_new_name(r, tpl, digits=digits) |
||||||
|
|
||||||
|
assert result == expected |
||||||
|
|
||||||
|
|
||||||
|
def test_rename_files(): |
||||||
|
from s2rename.helpers import rename_files, Renamable, template_sensovation |
||||||
|
|
||||||
|
old_path = Path("old.txt") |
||||||
|
new_path = Path("new_A001_2.xxx") |
||||||
|
renamable_item = Renamable( |
||||||
|
path=old_path, stem="new", row="A", col=1, channel=2, ext=".xxx" |
||||||
|
) |
||||||
|
with open(old_path, "w") as fh: |
||||||
|
fh.write("\n") |
||||||
|
assert old_path.is_file() |
||||||
|
assert not new_path.is_file() |
||||||
|
|
||||||
|
rename_files([renamable_item], template_sensovation, 3) |
||||||
|
|
||||||
|
assert not old_path.is_file() |
||||||
|
assert new_path.is_file() |
||||||
|
|
||||||
|
new_path.unlink() |
@ -1,111 +0,0 @@ |
|||||||
#!/usr/bin/env python |
|
||||||
# -*- coding: utf-8 -*- |
|
||||||
|
|
||||||
"""Tests for `s2rename` package.""" |
|
||||||
|
|
||||||
import pytest |
|
||||||
|
|
||||||
from pathlib import Path |
|
||||||
|
|
||||||
|
|
||||||
sensovation_source_list = [ |
|
||||||
Path("some prefix thing_A1_1.tif"), |
|
||||||
Path("some prefix thing_A02_2.tif"), |
|
||||||
Path("A03_3.tif"), |
|
||||||
Path("some prefix thing_A10_4"), |
|
||||||
Path("some prefix thing_A11_5.csv"), |
|
||||||
Path("some prefix thing_A12_6.xml"), |
|
||||||
Path("some prefix thing_B01_1.tif"), |
|
||||||
Path("some prefix thing_C01_1.tif"), |
|
||||||
Path("some prefix thing_D01_1.tif"), |
|
||||||
Path("some prefix thing_E01_1.tif"), |
|
||||||
Path("some prefix thing_F01_1.tif"), |
|
||||||
Path("some prefix thing_G01_1.tif"), |
|
||||||
Path("some prefix thing_H01_1.tif"), |
|
||||||
Path("some prefix thing_I01_1.tif"), |
|
||||||
Path("some prefix thing_FF01_1.tif"), |
|
||||||
Path("some prefix thing_F21_1.tif"), |
|
||||||
Path("some prefix thing_F00_1.tif"), |
|
||||||
Path("some prefix thing_F0_1.tif"), |
|
||||||
Path("some prefix thing_F13_1.tif"), |
|
||||||
Path("some prefix thing_F08.tif"), |
|
||||||
Path(".some prefix thing_F09_1.tif"), |
|
||||||
] |
|
||||||
|
|
||||||
scienion_source_list = [ |
|
||||||
Path("A1_1_some suffix thing.tif"), |
|
||||||
Path("A02_2_some suffix thing.tif"), |
|
||||||
Path("A03_3.tif"), |
|
||||||
Path("A10_3_some suffix thing"), |
|
||||||
Path("A11_4_some suffix thing.csv"), |
|
||||||
Path("A12_5_some suffix thing.xml"), |
|
||||||
Path("B01_1_some suffix thing.tif"), |
|
||||||
Path("C01_1_some suffix thing.tif"), |
|
||||||
Path("D01_1_some suffix thing.tif"), |
|
||||||
Path("E01_1_some suffix thing.tif"), |
|
||||||
Path("F01_1_some suffix thing.tif"), |
|
||||||
Path("G01_1_some suffix thing.tif"), |
|
||||||
Path("H01_1_some suffix thing.tif"), |
|
||||||
Path("I01_1_some suffix thing.tif"), |
|
||||||
Path("FF01_1_some suffix thing.tif"), |
|
||||||
Path("F21_1_some suffix thing.tif"), |
|
||||||
Path("F00_1_some suffix thing.tif"), |
|
||||||
Path("F0_1_some suffix thing.tif"), |
|
||||||
Path("F13_1_some suffix thing.tif"), |
|
||||||
Path("F08_some suffix thing.tif"), |
|
||||||
Path(".F09_1_some suffix thing.tif"), |
|
||||||
] |
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("sources", [sensovation_source_list, scienion_source_list]) |
|
||||||
def test_parse_source_list_sensovation(sources): |
|
||||||
from s2rename import s2rename |
|
||||||
|
|
||||||
if sources == sensovation_source_list: |
|
||||||
regex = s2rename.RE_SENSOVATION |
|
||||||
else: |
|
||||||
regex = s2rename.RE_SCIENION |
|
||||||
|
|
||||||
result = list(s2rename.parse_source_list(sensovation_source_list, regex)) |
|
||||||
assert len(result) == 14 |
|
||||||
assert {r.row for r in result} == set("ABCDEFGH") |
|
||||||
assert {r.col for r in result} == set([1, 2, 3, 9, 10, 11, 12]) |
|
||||||
|
|
||||||
|
|
||||||
def test_get_source_list(): |
|
||||||
from s2rename import s2rename |
|
||||||
|
|
||||||
result = list(s2rename.get_source_list(".")) |
|
||||||
assert {p.name for p in result} == { |
|
||||||
"LICENSE", |
|
||||||
"Pipfile", |
|
||||||
"requirements_dev.txt", |
|
||||||
"setup.cfg", |
|
||||||
"Makefile", |
|
||||||
"README.md", |
|
||||||
"setup.py", |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("path", ["/i/hope/this/doesnt/exist", "setup.py"]) |
|
||||||
def test_get_source_list_raises_error(path): |
|
||||||
from s2rename import s2rename |
|
||||||
|
|
||||||
with pytest.raises(s2rename.S2IOError): |
|
||||||
result = s2rename.get_source_list(path) |
|
||||||
|
|
||||||
|
|
||||||
def test_get_source_list_with_type(): |
|
||||||
from s2rename import s2rename |
|
||||||
|
|
||||||
result = s2rename.get_source_list(".", ".txt") |
|
||||||
assert {p.name for p in result} == {"requirements_dev.txt"} |
|
||||||
|
|
||||||
|
|
||||||
def test_filter_source_list_type(): |
|
||||||
from s2rename import s2rename |
|
||||||
|
|
||||||
result = list(s2rename.filter_source_list(sensovation_source_list, ".csv")) |
|
||||||
assert len(result) == 1 |
|
||||||
assert result[0].name == "some prefix thing_A11_5.csv" |
|
||||||
|
|
Reference in new issue