Nano Hash - криптовалюты, майнинг, программирование

Использование Travis CI для тестирования сценариев оболочки UNIX

Предыстория:

Я использую Travis CI для своих PHP-проектов, и мне очень нравится, как они дают вам ссылку на картинку, показывающую статус текущей сборки вашего проекта.

В настоящее время я создаю множество инструментов, используя сценарии оболочки UNIX, и хотел бы использовать Travis CI для тестирования своих сценариев UNIX.

Я искал в Интернете, пытаясь узнать, как этого добиться. Я зашел на главный сайт, поискал в Stackoverflow, а также немного поискал в Google.

Кажется, это невозможно.

В настоящее время я использую shunit2 для тестирования своих сценариев и функций оболочки.

Мой(е) вопрос(ы):

  1. Можно ли использовать Travis CI для тестирования сценариев оболочки?
  2. Если нет, есть ли какие-либо альтернативы, которые я мог бы использовать для этого плагина в GitHub?
  3. Как лучше всего выполнить интеграционное тестирование сценариев оболочки?

Ответы:


1

Абсолютно.

Я сделал простой тест здесь: https://travis-ci.org/soulseekah/test-shunit2-travis

Мой .travis.yml файл:

language: bash

before_script:
    - curl -L "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/shunit2/shunit2-2.1.6.tgz" | tar zx

script:
    - bash equality_test.sh

Репозиторий: https://github.com/soulseekah/test-shunit2-travis

08.12.2013
  • Большое спасибо. Это именно то, что я искал. На веб-сайте Travis CI действительно сложно ориентироваться. У меня возник дополнительный вопрос. В основном я создаю включаемые файлы, и я хочу, чтобы файлы запускали тесты, когда включение запускается как скрипт, но чтобы избежать запуска тестов, когда они получены. Каков ваш метод для этого? В настоящее время я использую что-то вроде scriptName=$(basename $_); if [[ "$scriptName" = "$0" ]]. Прошу прощения за то, что в данный момент у меня нет с собой фактического кода. Чуть позже обновлю. 08.12.2013
  • Если я правильно понял ваш вопрос, я считаю, что вы можете просто проверить одну из констант, определенных при запуске shunit: shunit2.googlecode.com/svn/trunk/source/2.1/doc/ 08.12.2013
  • Думаю, я искал ответ, более похожий на этот чтобы определить, исходит ли скрипт">stackoverflow.com/questions/2683279/ , но, как говорится в комментариях, $_ and $0 очень хрупкие. Я хотел знать, есть ли у тебя какой-то особый способ справиться с этим. Причина в том, что я хочу протестировать и проверить все свои сценарии, но, поскольку они включены, я не хочу, чтобы тесты запускались при получении сценариев. 08.12.2013
  • Но всегда ли этот скрипт выходит из 0? Если это так, Travis-CI всегда будет считать ваши тесты пройденными, даже если некоторые из них не пройдены. Просматривая документы shunit2, я не вижу способа определить, сколько (и если вообще) тестов не удалось. 05.05.2016
  • К вашему сведению, я получаю глобальный статус выхода, добавляя [[ $? == 1 ]] && exitStatus=1 в каждой функции после каждого утверждения, где exitStatus — это глобальная переменная, которую я устанавливаю в 0 в начале скрипта, а затем выхожу из скрипта с выходом $exitStatus в конце. 05.05.2016

  • 2

    Я свернул все в Makefile, а затем вызвал make test...

    language: bash
    script: make test
    

    Я использую assert.sh, поэтому before_script не нужен. Вы можете проверить это на https://github.com/wmluke/dokku-domains-plugin.

    27.01.2014

    3

    Если вам нужна последняя версия shUnit2, вам может потребоваться получить ее из ветки master.

    У меня это работает так:

    ---
    language: bash
    before_script: "sudo curl -o /usr/local/bin/shunit2 https://raw.githubusercontent.com/kward/shunit2/master/shunit2"
    script: "bash shunit2/test_example.sh"
    

    См. также мой пример репозитория shunit2 здесь.

    18.09.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..