Не удается запустить модульные тесты с целью i686-linux-android - PullRequest
0 голосов
/ 17 декабря 2018

Я запускаю Rust (toolchain stable-x86_64-unknown-linux-gnu) на локальной машине Linux.Моя библиотека собирается и работает нормально с моим приложением для Android.Но я не могу запустить какие-либо юнит-тесты, если укажу i686-linux-android target.

Я могу воспроизвести его в пустом проекте.

Я создал новыйпроект ржавчины

cargo new android_test --lib

Установить Android NDK ar и компоновщик через / android_test / .cargo / config

[target.i686-linux-android]
ar = "ndk/x86/bin/i686-linux-android-ar"
linker = "ndk/x86/bin/i686-linux-android-clang"

Простое тестирование будет успешным.

cargo test

Но оно не будет выполнено, если я задаю целевую тройку.

cargo test --target i686-linux-android

Запуск target / i686-linux-android / debug /Ошибка deps / android_test-a71bf7c418798cd7: не удалось выполнить процесс /home/zellius/Projects/android_test/target/i686-linux-android/debug/deps/android_test-a71bf7c418798cd7 (никогда не выполнялся) Причина: нет такого файла или каталога (ошибка os 2)

Модульные тесты будут запускаться и проходить, если я нажму android_test-a71bf7c418798cd7 файл на мой эмулятор Android вручную через adb.

Я пытался создать собственный бегун.Но результат тот же.

android_runner.sh

#!/bin/sh

set -e
adb push "$1" "/data/local/tmp/$1"
adb shell "/data/local/tmp/$1"

* / android_test / .cargo / config

[target.i686-linux-android]
ar = "ndk/x86/bin/i686-linux-android-ar"
linker = "ndk/x86/bin/i686-linux-android-clang"
runner = ["android_runner.sh"]

Я что-то упустил?Могу ли я использовать грузовой тест для запуска тестов на эмуляторе?Или я должен просто использовать скрипт для этой цели?

1 Ответ

0 голосов
/ 17 декабря 2018

Как обычно ошибка была маленькой и глупой.

В моем случае я должен исправить путь к скрипту бегуна.

Структура моего проекта:

  • /. Груз

    • config
  • ndk

  • android_runner.ш

  • другие файлы и каталоги

/ android_test / .cargo / config

[target.i686-linux-android]
ar = "./ndk/x86/bin/i686-linux-android-ar"
linker = "./ndk/x86/bin/i686-linux-android-clang"
# change android_runner.sh to ./android_runner.sh
runner = ["./android_runner.sh"]

Также я исправляю скрипт.Теперь я извлекаю двоичное имя файла из пути (например, / home / zellius / Projects / android_test / target / i686-linux-android / debug / deps / android_test-a71bf7c418798cd7 ) и нажимаюэто где-то на устройстве.Без этого adb попытается переместить его в гораздо более длинный каталог.

/ data / local / tmp // home / zellius / Projects / android_test / target / i686-linux-android / debug / deps/ android_test-a71bf7c418798cd7 *

/ android_test / android_runner.sh

#!/bin/sh

test_file_name=$(basename -- "$1")
adb push "$1" "/data/local/tmp/$test_file_name"
adb shell "/data/local/tmp/$test_file_name"

Теперь я могу запустить тест на моем локальном x86эмулятор с помощью Грузовой тест - цель i686-linux-android .

Возможно, есть лучший способ сделать это, но пока он работает для моего случая.

...