Skip to content

Метод ОтносительныйПуть + его тесты #13

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 16, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
242 changes: 242 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
// Available variables which can be used inside of strings.
// ${workspaceRoot}: the root folder of the team
// ${file}: the current opened file
// ${fileBasename}: the current opened file's basename
// ${fileDirname}: the current opened file's dirname
// ${fileExtname}: the current opened file's extension
// ${cwd}: the current working directory of the spawned process

{
"version": "2.0.0",
"_runner": "terminal",
"windows": {
"command": "cmd",
"args": ["/c", "chcp 65001 ;"]
},
"linux": {
"command": "sh",
"args": ["-c"]
},
"isShellCommand": true,
// "showOutput": "silent",
"_runner": "terminal",
"tasks": [
{
"taskName": "Testing project",
"args": [
"1testrunner",
"-runall",
"${workspaceRoot}/tests"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
// "isBuildCommand": false,
"isTestCommand": false,
"problemMatcher": {
"fileLocation": "absolute",
"pattern": {
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
"file": 1,
"location": 2,
"message": 3
}
}
},
{
"taskName": "Testing current test-file",
"args": [
"1testrunner",
"-run",
"${file}",
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": false,
"isTestCommand": true,
"problemMatcher": {
"fileLocation": "absolute",
"pattern": {
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
"file": 1,
"location": 2,
"message": 3
}
}
},
{
"taskName": "Exec all features",
"args": [
"1bdd",
"${workspaceRoot}/features",
"-fail-fast",
"-out",
"${workspaceRoot}/exec.log"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": true,
"isTestCommand": false,
"problemMatcher": {
"fileLocation": "absolute",
"pattern": {
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
"file": 1,
"location": 2,
"message": 3
}
}
},
{
"taskName": "Exec feature",
"args": [
"1bdd",
"${file}",
"-fail-fast",
"-out",
"${workspaceRoot}/exec.log"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": false,
"isTestCommand": true,
"problemMatcher": {
"fileLocation": "absolute",
"pattern": [
{
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
"file": 1,
"location": 2,
"message": 3
}
]
}
},
{
"taskName": "Exec feature for current step def",
"args": [
"1bdd",
"${fileDirname}/../${fileBasenameNoExtension}.feature",
"-fail-fast",
"-out",
"${workspaceRoot}/exec.log"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": false,
"isTestCommand": true,
"problemMatcher": {
"fileLocation": "absolute",
"pattern": [
{
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
"file": 1,
"location": 2,
"message": 3
}
]
}
},
{
"taskName": "Generate feature steps",
"args": [
"1bdd",
"gen",
"${file}",
"-out",
"${workspaceRoot}/exec.log"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": false,
"isTestCommand": false,
"problemMatcher": {
"fileLocation": "absolute",
"pattern": {
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
"file": 1,
"location": 2,
"message": 3
}
}
},
{
"taskName": "Opm: package build",
"args": [
"opm",
"build",
"${workspaceRoot}"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": false
},
{
"taskName": "OneScript: compile",
"args": [
"oscript",
"-encoding=utf-8",
"-compile",
"${file}"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": false
},
{
"taskName": "OneScript: check",
"args": [
"oscript",
"-encoding=utf-8",
"-check",
"${file}"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": false
},
{
"taskName": "OneScript: make",
"args": [
"oscript",
"-encoding=utf-8",
"-make",
"${file}",
"${fileBasename}.exe"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": false
},
{
"taskName": "OneScript: run",
"args": [
"oscript",
"-encoding=utf-8",
"${file}"
],
"echoCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"isBuildCommand": true,
"problemMatcher": {
"fileLocation": "absolute",
"pattern": {
"regexp": "^{Модуль\\s+(.*)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+(.*)}$",
"file": 1,
"location": 2,
"message": 3
}
}
}
]
}
62 changes: 62 additions & 0 deletions tests/Пути.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#Использовать asserts
#Использовать tempfiles

#Использовать ".."

Перем мМенеджерВременныхФайлов;

Функция ПолучитьСписокТестов(Знач ЮнитТестирование) Экспорт

МассивТестов = Новый Массив;
МассивТестов.Добавить("Тест_ОтносительныйПуть");
МассивТестов.Добавить("Тест_ОтносительныйПуть_ДругойСлеш");
МассивТестов.Добавить("Тест_ОтносительныйПуть_НеСвязанныеПути");
МассивТестов.Добавить("Тест_ОтносительныйПуть_РазныеСлешиВКорнеИПути");

Возврат МассивТестов;

КонецФункции

Процедура ПередЗапускомТеста() Экспорт
КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт
КонецПроцедуры

Процедура Тест_ОтносительныйПуть() Экспорт
Путь = "d:\build";
Корень = "d:\";

ОтносительныйПуть = ФС.ОтносительныйПуть(Корень, Путь);
Ожидаем.Что(ОтносительныйПуть).Равно("build");

КонецПроцедуры

Процедура Тест_ОтносительныйПуть_ДругойСлеш() Экспорт
Путь = "d:/build";
Корень = "d:/";

ОтносительныйПуть = ФС.ОтносительныйПуть(Корень, Путь);
Ожидаем.Что(ОтносительныйПуть).Равно("build");

КонецПроцедуры

Процедура Тест_ОтносительныйПуть_НеСвязанныеПути() Экспорт
Путь = "d:\build";
Корень = "w:\";

ОтносительныйПуть = ФС.ОтносительныйПуть(Корень, Путь);
Ожидаем.Что(ОтносительныйПуть).Равно(Путь);

КонецПроцедуры

Процедура Тест_ОтносительныйПуть_РазныеСлешиВКорнеИПути() Экспорт
Путь = "d:\build/path";
Корень = "d:/";

ОтносительныйПуть = ФС.ОтносительныйПуть(Корень, Путь, ПолучитьРазделительПути());

Рез = СтрШаблон("build%1path", ПолучитьРазделительПути());
Ожидаем.Что(ОтносительныйПуть).Равно(Рез);

КонецПроцедуры
34 changes: 34 additions & 0 deletions Модули/ФС.os
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,37 @@
Возврат МассивФайлов.Количество() = 0;

КонецФункции // КаталогПустой(Знач Путь)

// Возвращает путь файла относительно корневого каталога
//
// Параметры:
// ПутьКорневогоКаталога - <Строка> - путь корневого каталога
// ПутьВнутреннегоФайла - <Строка> - путь файла
// РазделительПути - Строка или Неопределено - все разделители в пути заменяются на указанный разделитель пути
// если Неопределено, то разделители пути не заменяются
//
// Возвращаемое значение:
// <Строка> - относительный путь файла
//
Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, Знач РазделительПути = Неопределено) Экспорт

Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда
ВызватьИсключение "Не указан корневой путь в методе ФС.ОтносительныйПуть";
КонецЕсли;

ФайлКорень = Новый Файл(ПутьКорневогоКаталога);
ФайлВнутреннийКаталог = Новый Файл(ПутьВнутреннегоФайла);
Рез = СтрЗаменить(ФайлВнутреннийКаталог.ПолноеИмя, ФайлКорень.ПолноеИмя, "");
Если Найти("\/", Лев(Рез, 1)) > 0 Тогда
Рез = Сред(Рез, 2);
КонецЕсли;
Если Найти("\/", Прав(Рез, 1)) > 0 Тогда
Рез = Лев(Рез, СтрДлина(Рез)-1);
КонецЕсли;
Если РазделительПути <> Неопределено Тогда
Рез = СтрЗаменить(Рез, "\", РазделительПути);
Рез = СтрЗаменить(Рез, "/", РазделительПути);
КонецЕсли;

Возврат Рез;
КонецФункции