diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cd1e62163..730850c96 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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: diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cf27d513..b3e3d7670 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/test/test_channel.cpp b/test/test_channel.cpp index 55a0c4a01..059215eaa 100644 --- a/test/test_channel.cpp +++ b/test/test_channel.cpp @@ -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 urls = { "conda-forge", "defaults" }; std::vector 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 res2 = calculate_channel_urls(urls, false); @@ -123,9 +131,9 @@ namespace mamba std::vector 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"); }