Skip to content

Instantly share code, notes, and snippets.

@yokkidack
Last active April 18, 2018 11:27
Show Gist options
  • Save yokkidack/8252a55d4ce89bd88b85a948ebcbacab to your computer and use it in GitHub Desktop.
Save yokkidack/8252a55d4ce89bd88b85a948ebcbacab to your computer and use it in GitHub Desktop.
lab06

Laboratory work VI

Данная лабораторная работа посвещена изучению фреймворков для тестирования на примере Catch

$ open https://github.com/philsquared/Catch

Tasks

  • 1. Создать публичный репозиторий с названием lab06 на сервисе GitHub
  • 2. Выполнить инструкцию учебного материала
  • 3. Ознакомиться со ссылками учебного материала
  • 4. Составить отчет и отправить ссылку личным сообщением в Slack

Tutorial

$ export GITHUB_USERNAME=<имя_пользователя> //создать константу
$ alias gsed=sed # for *-nix system //создание псевдонима команды
//
$ cd ${GITHUB_USERNAME}/workspace //переходим в директорию
$ pushd . //Сохраняет имя текущего каталога для команды popd и переходит в другой каталог.
~/yokkidack/workspace ~/yokkidack/workspace
$ source scripts/activate //source выполнит содержание файла
$ git clone https://github.com/${GITHUB_USERNAME}/lab05 projects/lab06 //автоматически настраивает вашу локальную ветку master на отслеживание удалённой ветки master на сервере, с которого вы клонировали
Cloning into 'projects/lab06'...
remote: Counting objects: 32, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 32 (delta 6), reused 32 (delta 6), pack-reused 0
Unpacking objects: 100% (32/32), done.

$ cd projects/lab06 //переходим в директорию
$ git remote remove origin //git remote чтобы просмотреть, какие удалённые серверы у нас уже настроены, следует выполнить ///команду
//Для того чтобы начать отслеживать (добавить под версионный контроль) новый файл, используется команда git add
$ git remote add origin https://github.com/${GITHUB_USERNAME}/lab06 //git remote чтобы просмотреть, какие удалённые серверы у нас уже настроены, следует выполнить ///команду
//Для того чтобы начать отслеживать (добавить под версионный контроль) новый файл, используется команда git add
$ mkdir tests //создать директорию
$ wget https://github.com/philsquared/Catch/releases/download/v1.9.3/catch.hpp -O tests/catch.hpp // скачивает файлы с указанного адреса // -O чтобы записать все сообщения в лог-файл

$ cat > tests/main.cpp <<EOF // cat выведет содержимое файла
// ">" означает перенаправление вывода их строки в файл
// "<<" указывает на то что считывание будет происходить до появления слова "EOF"

#define CATCH_CONFIG_MAIN
#include "catch.hpp"
EOF
$ gsed -i '/option(BUILD_EXAMPLES "Build examples" OFF)/a\ //
option(BUILD_TESTS "Build tests" OFF)
' CMakeLists.txt //редактор потоков // -i чтобы редактировать файлы, сохранять бекапы с указанным модификатором’…’ в CMakeLists.txt
$ cat >> CMakeLists.txt <<EOF// cat выведет содержимое файла
// ">" означает перенаправление вывода их строки в файл
// "<<" указывает на то что считывание будет происходить до появления слова "EOF"

if(BUILD_TESTS)
	enable_testing()
	file(GLOB \${PROJECT_NAME}_TEST_SOURCES tests/*.cpp)
	add_executable(check \${\${PROJECT_NAME}_TEST_SOURCES})
	target_link_libraries(check \${PROJECT_NAME} \${DEPENDS_LIBRARIES})
	add_test(NAME check COMMAND check "-s" "-r" "compact" "--use-colour" "yes") 
endif()
EOF
$ cat >> tests/test1.cpp <<EOF// cat выведет содержимое файла
// ">" означает перенаправление вывода их строки в файл
// "<<" указывает на то что считывание будет происходить до появления слова "EOF"
#include "catch.hpp"
#include <print.hpp>

TEST_CASE("output values should match input values", "[file]") {
  std::string text = "hello";
  std::ofstream out("file.txt");
  
  print(text, out);
  out.close();
  
  std::string result;
  std::ifstream in("file.txt");
  in >> result;
  
  REQUIRE(result == text);
}
EOF
$ cmake -H. -B_build -DBUILD_TESTS=ON //подготовливаеи процесс построения проекта, проверяем работоспособность и записываем результат в файл //-D создает значение в кеше cmake
$ cmake --build _build // создаем бинарное дерево сгенерированного cmake'ом проекта
$ cmake --build _build --target test  // создаем бинарное дерево сгенерированного cmake'ом проекта --target построить <…> вместо целей по умолчанию
$ _build/check -s -r compact
$ cmake --build _build --target test -- ARGS=--verbose // создаем бинарное дерево сгенерированного cmake'ом проекта //--target построить test вместо целей по умолчанию //
$ gsed -i 's/lab05/lab06/g' README.md //редактор потоков // -i чтобы редактировать файлы, сохранять бекапы с указанным модификатором’…’ в <>
$ gsed -i 's/\(DCMAKE_INSTALL_PREFIX=_install\)/\1 -DBUILD_TESTS=ON/' .travis.yml//редактор потоков // -i чтобы редактировать файлы, сохранять бекапы с указанным модификатором’…’ в <>
$ gsed -i '/cmake --build _build --target install/a\
- cmake --build _build --target test -- ARGS=--verbose
' .travis.yml//редактор потоков // -i чтобы редактировать файлы, сохранять бекапы с указанным модификатором’…’ в <…>
$ travis lint //проверяет файл на предмет возможных ошибок
$ git add . // добавить (начать отслеживать) все файлы из директории
$ git commit -m"added tests" //сделать коммит, -m чтобы добавить сообщение
$ git push origin master //отправить на удаленный сервер
$ travis login --auto  //клиент попытается найти токен и будет его использовать
We need your GitHub login to identify you.
This information will not be sent to Travis CI, only to api.github.com.
The password will not be displayed.

Try running with --github-token or --auto if you don't want to enter your password anyway.

Username: yokkidack
Password for yokkidack: ********************************
Successfully logged in as yokkidack!
$ travis enable //подключаем травис к проекту из репозитория

Detected repository as yokkidack/lab06, is this correct? |yes| y
yokkidack/lab06: enabled :)
$ mkdir artifacts // создать директорию
$ sleep 20s && gnome-screenshot --file artifacts/screenshot.png // ждать 20 долгих секунд а потом сделать скриншот с помощью gnome-screenshot и сохранить в artifacts/screenshot.png
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
gnome-screenshot
0 upgraded, 1 newly installed, 0 to remove and 49 not upgraded.
Need to get 52,5 kB of archives.
After this operation, 283 kB of additional disk space will be used.
Get:1 http://ru.archive.ubuntu.com/ubuntu artful/main amd64 gnome-screenshot amd64 3.25.0-0ubuntu2 [52,5 kB]
Fetched 52,5 kB in 1s (41,7 kB/s)
Selecting previously unselected package gnome-screenshot.
(Reading database ... 178835 files and directories currently installed.)
Preparing to unpack .../gnome-screenshot_3.25.0-0ubuntu2_amd64.deb ...
Unpacking gnome-screenshot (3.25.0-0ubuntu2) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu3) ...
Processing triggers for libglib2.0-0:amd64 (2.54.1-1ubuntu1) ...
Setting up gnome-screenshot (3.25.0-0ubuntu2) ...
Processing triggers for man-db (2.7.6.1-2) ...
yokkidack@yokkidack-VirtualBox:~/yokkidack/workspace/projects/lab06$ sleep 20s && gnome-screenshot --file artifacts/screenshot.png

** (gnome-screenshot:13913): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
** Message: Unable to use GNOME Shell's builtin screenshot interface, resorting to fallback X11.

# for macOS: $ screencapture -T 20 artifacts/screenshot.png
# open https://github.com/${GITHUB_USERNAME}/lab06 //open - чтобы открыть файл

Report

$ popd //Изменяет текущий в каталог на каталог, сохраненный командой pushd.
~/yokkidack/workspace
$ export LAB_NUMBER=06 //создать константу
$ git clone https://github.com/tp-labs/lab${LAB_NUMBER} tasks/lab${LAB_NUMBER} //автоматически настраивает вашу локальную ветку master на отслеживание удалённой ветки master на сервере, с которого вы клонировали
Cloning into 'tasks/lab06'...
remote: Counting objects: 77, done.
remote: Total 77 (delta 0), reused 0 (delta 0), pack-reused 77
Unpacking objects: 100% (77/77), done.
$ mkdir reports/lab${LAB_NUMBER} //создать директорию
$ cp tasks/lab${LAB_NUMBER}/README.md reports/lab${LAB_NUMBER}/REPORT.md //копируем из <> в <>
$ cd reports/lab${LAB_NUMBER} //переходим в директорию
$ edit REPORT.md
$ gistup -m "lab${LAB_NUMBER}"//создать гист

Links

Copyright (c) 2017 Братья Вершинины
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment