diff --git a/map/skk2ktrans b/map/skk2ktrans index 4908d65..a00157e 100755 --- a/map/skk2ktrans +++ b/map/skk2ktrans @@ -1,8 +1,22 @@ -#!/usr/bin/env bash +#!/bin/bash set -euo pipefail -iconv -f EUC-JP -t UTF-8 "$@" | awk ' +transcode() +{ + local file + + if (( $# == 0 )); then + iconv -f EUC-JP -t UTF-8 + return + fi + for file in "$@"; do + iconv -f EUC-JP -t UTF-8 "$file" + printf '\n' + done +} + +transcode "$@" | awk ' function fail(s) { print "skk2ktrans: " FILENAME ":" FNR ": " s >"/dev/stderr" bad = 1 diff --git a/tests/skk2ktrans_test.py b/tests/skk2ktrans_test.py index 90abc72..100cc04 100755 --- a/tests/skk2ktrans_test.py +++ b/tests/skk2ktrans_test.py @@ -43,6 +43,16 @@ class Skk2KtransTest(unittest.TestCase): self.assertNotEqual(result.returncode, 0) self.assertIn(b"expression candidates are unsupported", result.stderr) + def test_files_have_distinct_row_boundaries(self): + with tempfile.TemporaryDirectory() as directory: + first = Path(directory) / "first.skk" + second = Path(directory) / "second.skk" + first.write_bytes(b"a /A/") + second.write_bytes(b"b /B/\n") + result = subprocess.run( + [CONVERTER, first, second], capture_output=True, check=False) + self.assertEqual(result.returncode, 0, result.stderr.decode()) + self.assertEqual(result.stdout, b"a\tA\nb\tB\n") if __name__ == "__main__": unittest.main()