ls & cd#4
Conversation
|
Удобным было то, что команды наследуются от общего интерфейса, их было легко реализовать. Тесты тоже наследуются от базового, даже создан тестовый файл. Сильно неудобным было то, что нельзя поменять рабочую директорию и получается, что при запуске cd мы на самом деле просто сохраняем базовый путь, и мне пришлось поменять класс FileStream, а так же добавить этот базовый путь в exec в ExternalCommand. Также я заметил, что реализация ExternalCommand не умеет принимать аргументы, что мне показалось странным. |
ottergottaott
left a comment
There was a problem hiding this comment.
В целом, ок, поправьте мелочи, пока 9 баллов
| errorStream.writeLine("not a directory: \"$path\"") | ||
| return 3 | ||
| } | ||
| System.setProperty("user.dir", file.getAbsolutePath()) |
There was a problem hiding this comment.
file.agbsolutePath, это же котлин
| override fun execute(): Int { | ||
| logger.finest("Running cd with arguments $args") | ||
| if (args.isEmpty()) { | ||
| val path = System.getProperty("user.home") |
There was a problem hiding this comment.
Вообще кажется плохой идеей так менять рабочую директорию, т.к. потом элементарно сложнее тестировать. Если это переменная окружения, то окружение можно замокать, а System.getProperty уже вряд ли.
Сейчас не видно проблему, т.к. тесты не юнит, а все-таки интеграционные, но если бы они были юнит-тестами, то быстро бы всплыло, что от запуска одного теста к запуску другого приходилось бы танцевать с бубном, чтобы тесты правильно работали
| parent = System.getProperty("user.dir") | ||
| } | ||
| val file = File(parent, path).getAbsoluteFile() | ||
| val files = file.list() |
There was a problem hiding this comment.
Чего-то не понял почему мы сначала пытаемся list взять, а только потом проверяем существует ли вообще файл
| val path = System.getProperty("user.dir") | ||
| return lsPath(path) | ||
| } else if (args.count() == 1) { | ||
| return lsPath(args.get(0)) |
|
9 баллов окончательные |
No description provided.