Skip to content

Commit

Permalink
Run CI on windows
Browse files Browse the repository at this point in the history
  • Loading branch information
Luthaf committed Sep 5, 2023
1 parent 7fe83d8 commit 9a46735
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 37 deletions.
10 changes: 4 additions & 6 deletions .github/workflows/python-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,12 @@ jobs:
matrix:
include:
- os: ubuntu-20.04
rust-target: x86_64-unknown-linux-gnu
python-version: "3.7"
- os: ubuntu-20.04
rust-target: x86_64-unknown-linux-gnu
python-version: "3.11"
- os: macos-11
rust-target: x86_64-apple-darwin
python-version: "3.11"
- os: windows-2019
python-version: "3.11"
steps:
- uses: actions/checkout@v3
Expand All @@ -39,13 +38,12 @@ jobs:
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
target: ${{ matrix.rust-target }}

- name: install python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install tox
echo "tox_version=$(tox --version | awk '{split($0, s," "); print s[1]}')" >> $GITHUB_ENV
echo "tox_version=$(python -c 'import tox; print(tox.__version__)')" >> $GITHUB_ENV
- name: Setup sccache
uses: mozilla-actions/[email protected]
Expand Down Expand Up @@ -95,7 +93,7 @@ jobs:
run: |
python -m pip install --upgrade pip
python -m pip install tox
echo "tox_version=$(tox --version | awk '{split($0, s," "); print s[1]}')" >> $GITHUB_ENV
echo "tox_version=$(python -c 'import tox; print(tox.__version__)')" >> $GITHUB_ENV
- name: cache tox environments
uses: actions/cache@v3
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/rust-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ jobs:
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} / rust ${{ matrix.rust-version }} ${{ matrix.extra-name }}
container: ${{ matrix.container }}
defaults:
run:
working-directory: ${{ matrix.working-directory }}
strategy:
matrix:
include:
Expand All @@ -24,24 +27,38 @@ jobs:
build-type: debug
test-static-lib: true
extra-name: / static C library
working-directory: /home/runner/work/rascaline/rascaline/

- os: ubuntu-20.04
rust-version: stable
rust-target: x86_64-unknown-linux-gnu
build-type: release
cargo-build-flags: --release
do-valgrind: true
extra-name: / release valgrind
working-directory: /home/runner/work/rascaline/rascaline/

# check the build on a stock Ubuntu 20.04, including cmake 3.16
- os: ubuntu-20.04
rust-version: "1.64"
container: ubuntu:20.04
rust-target: x86_64-unknown-linux-gnu
build-type: debug
extra-name: / cmake 3.16
working-directory: /__w/rascaline/rascaline

- os: macos-11
rust-version: stable
rust-target: x86_64-apple-darwin
build-type: debug
working-directory: /Users/runner/work/rascaline/rascaline/

- os: windows-2019
rust-version: stable
rust-target: x86_64-pc-windows-msvc
build-type: debug
working-directory: C:\\rascaline

steps:
- name: install dependencies in container
if: matrix.container == 'ubuntu:20.04'
Expand All @@ -50,13 +67,19 @@ jobs:
apt install -y software-properties-common
apt install -y cmake make gcc g++ git curl python3-pip python3-venv
ln -s /usr/bin/python3 /usr/bin/python
working-directory: /

- name: free disk space
if: matrix.os == 'ubuntu-20.04'
run: sudo rm -rf /usr/share/dotnet /usr/local/lib/android || true

- uses: actions/checkout@v3

- name: "copy the code to C: drive"
if: matrix.os == 'windows-2019'
run: cp -r ${{ github.workspace }} ${{ matrix.working-directory }}
working-directory: /

- name: setup Python
uses: actions/setup-python@v4
if: "!matrix.container"
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/torch-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ jobs:
python-version: "3.11"
cargo-test-flags: --release

- os: windows-2019
torch-version: 2.0.*
python-version: "3.11"
cargo-test-flags: --release

steps:
- uses: actions/checkout@v3

Expand Down
5 changes: 4 additions & 1 deletion rascaline-c-api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -191,9 +191,12 @@ if (CARGO_VERSION_CHANGED)
endforeach()
# Special case `msvcrt` to link with the debug version in Debug mode.
list(TRANSFORM stripped_lib_list REPLACE "^msvcrt$" "\$<\$<CONFIG:Debug>:msvcrtd>")
list(REMOVE_DUPLICATES stripped_lib_list)

set(CARGO_DEFAULT_LIBRARIES "${stripped_lib_list}" CACHE INTERNAL "list of implicitly linked libraries")
message(STATUS "Cargo default link libraries are: ${CARGO_DEFAULT_LIBRARIES}")
if (${RASCALINE_MAIN_PROJECT})
message(STATUS "Cargo default link libraries are: ${CARGO_DEFAULT_LIBRARIES}")
endif()
else()
message(FATAL_ERROR "could not find default static libs: `native-static-libs` not found in: `${cargo_build_error_message}`")
endif()
Expand Down
33 changes: 21 additions & 12 deletions rascaline-c-api/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ endif()
file(GLOB ALL_TESTS *.cpp)
list(REMOVE_ITEM ALL_TESTS "${CMAKE_CURRENT_SOURCE_DIR}/helpers.cpp")

# on windows, shared libraries are found in the PATH. This plays a similar role
# to `CMAKE_BUILD_RPATH` above
string(REPLACE ";" "\\;" PATH_STRING "$ENV{PATH}")
set(WINDOWS_TEST_PATH "${PATH_STRING}\;${METATENSOR_DIRECTORY}\;${RASCALINE_DIRECTORY}")

enable_testing()
foreach(_file_ ${ALL_TESTS})
get_filename_component(_name_ ${_file_} NAME_WE)
Expand All @@ -93,26 +98,30 @@ foreach(_file_ ${ALL_TESTS})
COMMAND ${TEST_COMMAND} $<TARGET_FILE:${_name_}>
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

if(WIN32)
set_tests_properties(${_name_} PROPERTIES ENVIRONMENT "PATH=${WINDOWS_TEST_PATH}")
endif()
endforeach()

# make sure example compile and run
set(XYZ_EXAMPLE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../rascaline/examples/data/water.xyz)

file(GLOB EXAMPLES ../examples/*.c)
foreach(_file_ ${EXAMPLES})
get_filename_component(_name_ ${_file_} NAME_WE)
set(_name_ example-${_name_})
set(_name_ example-c-${_name_})
add_executable(${_name_} ${_file_})
target_link_libraries(${_name_} rascaline::shared)
endforeach()

set(XYZ_EXAMPLE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../rascaline/examples/data/water.xyz)
add_test(
NAME example-c-compute-soap
COMMAND ${TEST_COMMAND} $<TARGET_FILE:example-compute-soap> ${XYZ_EXAMPLE_FILE}
)

add_test(
NAME example-c-profiling
COMMAND ${TEST_COMMAND} $<TARGET_FILE:example-profiling> ${XYZ_EXAMPLE_FILE}
)
add_test(
NAME ${_name_}
COMMAND ${TEST_COMMAND} $<TARGET_FILE:${_name_}> ${XYZ_EXAMPLE_FILE}
)

if(WIN32)
set_tests_properties(${_name_} PROPERTIES ENVIRONMENT "PATH=${WINDOWS_TEST_PATH}")
endif()
endforeach()

add_subdirectory(cxx)
21 changes: 12 additions & 9 deletions rascaline-c-api/tests/cxx/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ foreach(_file_ ${ALL_TESTS})
COMMAND ${TEST_COMMAND} $<TARGET_FILE:${_name_}>
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

if(WIN32)
set_tests_properties(${_name_} PROPERTIES ENVIRONMENT "PATH=${WINDOWS_TEST_PATH}")
endif()
endforeach()

file(GLOB EXAMPLES ../../examples/*.cpp)
Expand All @@ -18,14 +22,13 @@ foreach(_file_ ${EXAMPLES})
set(_name_ example-cxx-${_name_})
add_executable(${_name_} ${_file_})
target_link_libraries(${_name_} rascaline::shared)
endforeach()

add_test(
NAME example-cxx-compute-soap
COMMAND ${TEST_COMMAND} $<TARGET_FILE:example-cxx-compute-soap> ${XYZ_EXAMPLE_FILE}
)
add_test(
NAME ${_name_}
COMMAND ${TEST_COMMAND} $<TARGET_FILE:${_name_}> ${XYZ_EXAMPLE_FILE}
)

add_test(
NAME example-cxx-profiling
COMMAND ${TEST_COMMAND} $<TARGET_FILE:example-cxx-profiling> ${XYZ_EXAMPLE_FILE}
)
if(WIN32)
set_tests_properties(${_name_} PROPERTIES ENVIRONMENT "PATH=${WINDOWS_TEST_PATH}")
endif()
endforeach()
4 changes: 2 additions & 2 deletions rascaline-torch/include/rascaline/torch/system.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#define RASCALINE_TORCH_SYSTEM_HPP

#include <vector>
#include <unordered_map>
#include <map>

#include <torch/script.h>

Expand Down Expand Up @@ -138,7 +138,7 @@ class RASCALINE_TORCH_EXPORT SystemHolder final: public rascaline::System, publi
};

// all precomputed pairs we know about
std::unordered_map<double, PrecomputedPairs> precomputed_pairs_;
std::map<double, PrecomputedPairs> precomputed_pairs_;
// last custom requested by `compute_neighbors`
double last_cutoff_ = -1.0;
};
Expand Down
2 changes: 1 addition & 1 deletion rascaline-torch/tests/system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ TEST_CASE("Systems") {
Catch::Matchers::StartsWith(
"trying to get neighbor list with a cutoff (3.3) for which no "
"pre-computed neighbor lists has been registered (we have lists "
"for cutoff=[4.5, 3.2])"
"for cutoff=[3.2, 4.5])"
)
);

Expand Down
13 changes: 7 additions & 6 deletions rascaline/src/calculators/radial_basis/gto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,13 @@ mod tests {
let overlap = basis.overlap();

for i in 0..basis.max_radial {
assert_ulps_eq!(overlap[(i, i)], 1.0);
}

for i in 0..basis.max_radial {
for j in i..basis.max_radial {
assert!(overlap[(j, i)] > 0.0);
for j in 0..basis.max_radial {
if i == j {
assert_ulps_eq!(overlap[(i, j)], 1.0, max_ulps=10);
} else {
assert!(overlap[(i, j)] > 0.0);
assert!(overlap[(i, j)] < 1.0);
}
}
}
}
Expand Down

0 comments on commit 9a46735

Please sign in to comment.