add cpp tests installed through micromamba

This commit is contained in:
Wolf Vollprecht 2020-07-01 17:10:18 +02:00
parent 3127f0f981
commit aca55168ca
3 changed files with 69 additions and 25 deletions

View File

@ -9,13 +9,61 @@ on:
- master
jobs:
test_cpp_micromamba:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v2
- name: free disk space
if: matrix.os == 'ubuntu-latest'
run: |
sudo swapoff -a
sudo rm -f /swapfile
sudo apt clean
docker rmi $(docker image ls -aq)
df -h
- name: install micromamba
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
wget -qO- https://api.anaconda.org/download/conda-forge/micromamba/0.4.0/linux-64/micromamba-0.4.0-hc2cb875_0.tar.bz2 | tar -xvj bin/micromamba --strip-components=1
else
wget -qO- https://anaconda.org/conda-forge/micromamba/0.4.0/download/osx-64/micromamba-0.4.0-h8680c10_1.tar.bz2 | tar -xvj bin/micromamba
mv bin/micromamba ./micromamba
fi
./micromamba shell init -s bash -p ~/micromamba
- name: install deps
shell: bash -l {0}
run: |
export MAMBA_ROOT_PREFIX=~/micromamba
export MAMBA_EXE=$(pwd)/micromamba
. $MAMBA_ROOT_PREFIX/etc/profile.d/mamba.sh
micromamba create -y -p ~/build_env pybind11 libsolv libarchive libcurl nlohmann_json cxx-compiler cmake gtest "cpp-tabulate>=1.2" -c conda-forge
env:
PYTHON_VERSION: ${{ matrix.python-version }}
- name: build tests
shell: bash -l {0}
run: |
export MAMBA_ROOT_PREFIX=~/micromamba
export MAMBA_EXE=$(pwd)/micromamba
. $MAMBA_ROOT_PREFIX/etc/profile.d/mamba.sh
micromamba activate ~/build_env
mkdir -p ~/.conda
touch ~/.conda/environments.txt
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DENABLE_TESTS=ON
make test -j2
build_unix:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
python-version: [ '3.6', '3.8' ]
python-version: [ '3.8' ]
steps:
- uses: actions/checkout@v2
@ -57,18 +105,6 @@ jobs:
py.test test
mamba create -n test_env xtensor -c conda-forge -y
mamba env create -f test.yml
- name: Run C++ tests OS X and Linux
shell: bash -l {0}
run: |
if [ "$(uname)" == "Darwin" ]; then
exit 0;
fi
source "$CONDA/etc/profile.d/conda.sh"
conda activate mamba-tests
mkdir cmake_build
cd cmake_build
cmake .. -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DENABLE_TESTS=ON
make test -j2
build_win:
runs-on: ${{ matrix.os }}
strategy:

View File

@ -80,7 +80,7 @@ if (LINK_STATIC)
endforeach(LIB)
set (MAMBA_STATIC_LIBS "${FINAL_LIBS}")
elseif (UNIX)
set(MAMBA_FORCE_DYNAMIC_LIBS rt dl c resolv)
set(MAMBA_FORCE_DYNAMIC_LIBS rt dl resolv)
endif()
add_link_options(-static-libstdc++ -static-libgcc)

View File

@ -8,6 +8,14 @@ namespace fs = ghc::filesystem;
namespace mamba
{
#ifdef __linux__
std::string platform("linux-64");
#elif __APPLE__
std::string platform("osx-64");
#elif _WIN32
std::string platform("win-64");
#endif
TEST(ChannelContext, init)
{
// ChannelContext builds its custom channels with
@ -49,19 +57,19 @@ namespace mamba
EXPECT_EQ(c.name(), "conda-forge");
EXPECT_EQ(c.platform(), "");
std::string value2 = "https://repo.anaconda.com/pkgs/main/linux-64";
std::string value2 = "https://repo.anaconda.com/pkgs/main/" + platform;
Channel& c2 = make_channel(value2);
EXPECT_EQ(c2.scheme(), "https");
EXPECT_EQ(c2.location(), "repo.anaconda.com");
EXPECT_EQ(c2.name(), "pkgs/main");
EXPECT_EQ(c2.platform(), "linux-64");
EXPECT_EQ(c2.platform(), platform);
std::string value3 = "https://conda.anaconda.org/conda-forge/linux-64";
std::string value3 = "https://conda.anaconda.org/conda-forge/" + platform;
Channel& c3 = make_channel(value3);
EXPECT_EQ(c3.scheme(), c.scheme());
EXPECT_EQ(c3.location(), c.location());
EXPECT_EQ(c3.name(), c.name());
EXPECT_EQ(c3.platform(), "linux-64");
EXPECT_EQ(c3.platform(), platform);
std::string value4 = "/home/mamba/test/channel_b";
Channel& c4 = make_channel(value4);
@ -70,12 +78,12 @@ namespace mamba
EXPECT_EQ(c4.name(), "channel_b");
EXPECT_EQ(c4.platform(), "");
std::string value5 = "/home/mamba/test/channel_b/linux-64";
std::string value5 = "/home/mamba/test/channel_b/" + platform;
Channel& c5 = make_channel(value5);
EXPECT_EQ(c5.scheme(), "file");
EXPECT_EQ(c5.location(), "/home/mamba/test");
EXPECT_EQ(c5.name(), "channel_b");
EXPECT_EQ(c5.platform(), "linux-64");
EXPECT_EQ(c5.platform(), platform);
}
TEST(Channel, urls)
@ -103,11 +111,11 @@ namespace mamba
std::vector<std::string> urls = { "conda-forge", "defaults" };
std::vector<std::string> res = calculate_channel_urls(urls, true);
EXPECT_EQ(res.size(), 6u);
EXPECT_EQ(res[0], "https://conda.anaconda.org/conda-forge/linux-64");
EXPECT_EQ(res[0], "https://conda.anaconda.org/conda-forge/" + platform);
EXPECT_EQ(res[1], "https://conda.anaconda.org/conda-forge/noarch");
EXPECT_EQ(res[2], "https://repo.anaconda.com/pkgs/main/linux-64");
EXPECT_EQ(res[2], "https://repo.anaconda.com/pkgs/main/" + platform);
EXPECT_EQ(res[3], "https://repo.anaconda.com/pkgs/main/noarch");
EXPECT_EQ(res[4], "https://repo.anaconda.com/pkgs/r/linux-64");
EXPECT_EQ(res[4], "https://repo.anaconda.com/pkgs/r/" + platform);
EXPECT_EQ(res[5], "https://repo.anaconda.com/pkgs/r/noarch");
std::vector<std::string> res2 = calculate_channel_urls(urls, false);
@ -123,9 +131,9 @@ namespace mamba
std::vector<std::string> local_res = calculate_channel_urls(local_urls, false);
std::string current_dir = "file://" + fs::current_path().string() + '/';
EXPECT_EQ(local_res.size(), 4u);
EXPECT_EQ(local_res[0], current_dir + "channel_b/linux-64");
EXPECT_EQ(local_res[0], current_dir + "channel_b/" + platform);
EXPECT_EQ(local_res[1], current_dir + "channel_b/noarch");
EXPECT_EQ(local_res[2], current_dir + "channel_a/linux-64");
EXPECT_EQ(local_res[2], current_dir + "channel_a/" + platform);
EXPECT_EQ(local_res[3], current_dir + "channel_a/noarch");
}