Це команда tesh, яку можна запустити в постачальнику безкоштовного хостингу OnWorks, використовуючи одну з наших численних безкоштовних онлайн-робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS
ПРОГРАМА:
ІМ'Я
tesh - тестова оболонка
СИНТАКСИС
теш [ВАРІАНТ]... [Фото]...
ОПИС
Це інструмент TESH. Він являє собою тестову оболонку, тобто свого роду оболонку, що спеціалізується на
запустити тести. Список дій, які потрібно виконати, аналізується з файлів, які називаються testsuite.
ВАРІАНТИ
--cd some/directory : попросити tesh змінити робочий каталог раніше
запуск тестів
--setenv var=value : встановити конкретну змінну середовища
--cfg arg : додати параметр --cfg=arg до кожного командного рядка
--enable-coverage: ігнорувати вихідні рядки, які починаються з "profiling:"
ТЕШ Фото СИНТАКС
Ось синтаксис цих файлів:
Тип кожного рядка визначається першим символом (другий символ має бути порожнім і є
проігноровано):
Команда `$' для запуску на передньому плані
Команда `&' для запуску у фоновому режимі
`<' введення для переходу до команди
`>' очікуваний вихід від команди
`!' метакоманда, яка може бути однією з:
`тайм-аут' |ні
`очікувати сигнал'
`очікувати повернення'
`вихід'
`setenv = '
`p' рядок для друку
`P' рядок для друку на КРИТИЧНОМУ рівні (спрощене ведення журналу grepping)
Якщо очікуваний результат не відповідає тому, що видає команда, TESH видасть помилку
показуючи різницю (див. ВИХОД нижче).
IO ЗАМОВЛЕННЯ
Рядки < і > додають IO до команди, визначеної в поточному блоці (блоки розділені
по пустих рядках). Ці рядки можна розмістити як після команди, так і перед.
Різниця між двома наведеними нижче частинами в основному є косметичною у ваших тестових наборах,
TESH байдуже. (див. IO-orders.tesh)
$ кіт
< TOTO
> ТОТО
> ТОТО
$ кіт
< TOTO
Тим не менш, в одному блоці можна мати кілька команд, але жодної з них
може мати будь-який вихід. Це може здатися дещо обмеженим, оскільки можна сказати, що команда отримує
весь IO до наступної команди, але я боюся таких помилок, як такі:
$ cd тото
> ТОТО
$ mkfile файл
TOTO буде передано команді cd, де користувач явно хоче передати його до
вбудована команда mkfile (див. нижче).
ПОТІК ПЕРЕСпрямування
Перенаправлення потоків (конструкції ">", "<" і "|" в sh) ще не реалізовані в tesh.
Це трохи обмежує, але добре, виправлення вітається...
Ситуація, в якій це переважно проблематично, - це створити тимчасовий файл. The
рішення полягає у використанні вбудованої команди "mkfile", як у наступному прикладі: $ mkfile
myFile > деякий вміст > у файл
Це створить файл під назвою myFile (перший аргумент команди mkfile). Його зміст
буде весь вхід, наданий команді.
ПОВЕРНЕННЯ КОД
TESH видає відповідне повідомлення про помилку, коли дитина не повертає 0 як код повернення (див.
catch-return.tesh), а сам повертає код+40.
Також можна вказати, що дана команда повинна повертати інше значення. Для цього,
використовуйте метакоманду "очікуйте повернення", яка приймає ціле число як аргумент. Тільки зміна
застосувати до наступної команди (пор. set-return.tesh).
СИГНАЛИ
TESH розпізнає, коли дитина вбита сигналом (як при segfaults), і виплює
відповідне повідомлення про помилку (пор. catch-signal.tesh).
Також можна вказати, що дана команда повинна викликати заданий сигнал. Для цього,
використовуйте метакоманду "очікувати сигнал". Він приймає назву сигналу як аргумент. Тільки зміна
застосувати до наступної команди (пор. set-signal.tesh).
ТАЙМ-АУТИ
За замовчуванням всім командам дається 5 секунд на виконання (пор. catch-timeout.tesh). Ти можеш
змінити це за допомогою "тайм-ауту", який приймає ціле число як аргумент. Зміни застосовуються лише
до наступної команди (пор. set-timeout.tesh). Якщо ви передаєте «ні» як аргумент, команда
не може тайм-аут.
ВИХІД
За замовчуванням вихід команд збігається з очікуваним, і виникає помилка
піднято через невідповідність. Метакоманди, щоб змінити це:
"вихід ігнорувати" -> вихід повністю відхилено
"відображення вихідних даних" -> вихід відображений (але не перевірено)
"output sort" -> сортує дисплей перед його перевіркою (див. нижче)
СОРТУВАННЯ ВИХІД
Сортування виводу здається дивною ідеєю, але воно є обов’язковим у SimGrid, оскільки
процеси виходять з ладу в будь-якій точці планування (тобто всі процеси, готові до виконання
змодельований час t виконується паралельно). Щоб переконатися, що вихідні дані симулятора збігаються, ми
необхідно відсортувати вихідні дані, перш ніж їх порівнювати.
Ми очікуємо, що симулятори працюватимуть із цим аргументом форматування журналу:
--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n Потім tesh сортує рядок за 19 перших символів
тільки і є стабільним, коли початки рядків рівні. Це повинно гарантувати, що:
(1) tesh ефективний (без хибнопозитивних, без помилково негативних)
(2) пункти розкладу відокремлені один від одного
(3) у кожній точці планування процеси відокремлені один від одного
(4) порядок того, що говорить даний процес у заданому розкладі
точка збережена.
Це, звичайно, дуже орієнтоване на SimGrid, порушуючи загальність tesh, але кого це хвилює,
насправді?
Якщо ви хочете змінити довжину префікса, який використовується для сортування, просто вкажіть його після
директива сортування вихідних даних, наприклад:
! сортування виходу 22
НАВКОЛИШНЄ СЕРЕДОВИЩЕ
Ви можете додати деякий вміст до середовища перевірених процесів за допомогою метакоманди setenv.
Це працює, як очікувалося. Наприклад:
"setenv PATH=/ bin"
Використовуйте tesh онлайн за допомогою служб onworks.net