Skip to content

Commit 186fca0

Browse files
authored
Merge pull request #14 from UCL-ARC/enable-codespaces
Enable codespaces and fix ep 5
2 parents e67b9dd + f79e6bf commit 186fca0

File tree

14 files changed

+64
-59
lines changed

14 files changed

+64
-59
lines changed

.devcontainer/devcontainer.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"name": "fortran-unit-test",
3+
"image": "ghcr.io/ucl-arc/fortran-unit-testing-exercises:main",
4+
"customizations": {
5+
"vscode": {
6+
"extensions": [
7+
"ms-vscode.cpptools-extension-pack",
8+
"ms-vscode.cpptools",
9+
"bierner.markdown-checkbox",
10+
"bierner.markdown-emoji",
11+
"kejun.markdown-alert",
12+
"bierner.markdown-preview-github-styles",
13+
"fortran-lang.linter-gfortran",
14+
],
15+
"commands": [
16+
"workbench.action.terminal.new"
17+
],
18+
"settings": {
19+
"workbench.editorAssociations": {
20+
"*.md": "vscode.markdown.preview.editor"
21+
}
22+
}
23+
}
24+
},
25+
"remoteUser": "vscode",
26+
"postCreateCommand": "code README.md"
27+
}

docker/Dockerfile.ep-1

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises-parent:main
1+
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises:main
22

3-
COPY episodes/1-into-to-unit-tests /1-into-to-unit-tests
3+
COPY --chown=vscode episodes/1-into-to-unit-tests /home/vscode/1-into-to-unit-tests
44

5-
WORKDIR /1-into-to-unit-tests/challenge
5+
WORKDIR /home/vscode/1-into-to-unit-tests/challenge
66

77
# test challenge with fpm
88
RUN fpm test

docker/Dockerfile.ep-2

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises-parent:main
1+
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises:main
22

3-
COPY episodes/2-intro-to-fortran-unit-tests /2-intro-to-fortran-unit-tests
3+
COPY --chown=vscode episodes/2-intro-to-fortran-unit-tests /home/vscode/2-intro-to-fortran-unit-tests
44

5-
WORKDIR /2-intro-to-fortran-unit-tests/solution
5+
WORKDIR /home/vscode/2-intro-to-fortran-unit-tests/solution
66

77
# test with fpm
88
RUN fpm test

docker/Dockerfile.ep-3

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises-parent:main
1+
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises:main
22

3-
COPY episodes/3-fortran-unit-test-syntax /3-fortran-unit-test-syntax
3+
COPY --chown=vscode episodes/3-fortran-unit-test-syntax /home/vscode/3-fortran-unit-test-syntax
44

5-
WORKDIR /3-fortran-unit-test-syntax/solution
5+
WORKDIR /home/vscode/3-fortran-unit-test-syntax/solution
66

77
# build tests inc veggies with cmake
88
RUN sed -i -E 's/.*add_subdirectory\(\"test\/test-drive\"\)/#add_subdirectory\(\"test\/test-drive\"\)/g' CMakeLists.txt && \
99
sed -i -E 's/.*add_subdirectory\(\"test\/pfunit\"\)/#add_subdirectory\(\"test\/pfunit\"\)/g' CMakeLists.txt && \
1010
sed -i -E 's/.*add_subdirectory\(\"test\/veggies\"\)/add_subdirectory\(\"test\/veggies\"\)/g' CMakeLists.txt && \
11-
cmake -B build-cmake-veggies -DCMAKE_PREFIX_PATH=/pfunit/build/installed && \
11+
cmake -B build-cmake-veggies -DCMAKE_PREFIX_PATH=/home/vscode/pfunit/build/installed && \
1212
cmake --build build-cmake-veggies
1313

1414
# build tests without veggies with cmake
1515
RUN sed -i -E 's/.*add_subdirectory\(\"test\/test-drive\"\)/add_subdirectory\(\"test\/test-drive\"\)/g' CMakeLists.txt && \
1616
sed -i -E 's/.*add_subdirectory\(\"test\/pfunit\"\)/add_subdirectory\(\"test\/pfunit\"\)/g' CMakeLists.txt && \
1717
sed -i -E 's/.*add_subdirectory\(\"test\/veggies\"\)/#add_subdirectory\(\"test\/veggies\"\)/g' CMakeLists.txt && \
18-
cmake -B build-cmake -DCMAKE_PREFIX_PATH=/pfunit/build/installed && \
18+
cmake -B build-cmake -DCMAKE_PREFIX_PATH=/home/vscode/pfunit/build/installed && \
1919
cmake --build build-cmake
2020

2121
# test veggies with ctest

docker/Dockerfile.ep-4

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises-parent:main
1+
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises:main
22

3-
COPY episodes/4-debugging-a-broken-test /4-debugging-a-broken-test
3+
COPY --chown=vscode episodes/4-debugging-a-broken-test /home/vscode/4-debugging-a-broken-test
44

5-
WORKDIR /4-debugging-a-broken-test/challenge
5+
WORKDIR /home/vscode/4-debugging-a-broken-test/challenge
66

77
# Fix intentional bug in code
88
RUN sed -i -E 's/.*matrix\(row, col\) = temp_matrix\(row, col\)/matrix\(col, row\) = temp_matrix\(row, col\)/g' src/matrix_transforms.f90
@@ -11,14 +11,14 @@ RUN sed -i -E 's/.*matrix\(row, col\) = temp_matrix\(row, col\)/matrix\(col, row
1111
RUN sed -i -E 's/.*add_subdirectory\(\"test\/test-drive\"\)/#add_subdirectory\(\"test\/test-drive\"\)/g' CMakeLists.txt && \
1212
sed -i -E 's/.*add_subdirectory\(\"test\/pfunit\"\)/#add_subdirectory\(\"test\/pfunit\"\)/g' CMakeLists.txt && \
1313
sed -i -E 's/.*add_subdirectory\(\"test\/veggies\"\)/add_subdirectory\(\"test\/veggies\"\)/g' CMakeLists.txt && \
14-
cmake -B build-cmake-veggies -DCMAKE_PREFIX_PATH=/pfunit/build/installed && \
14+
cmake -B build-cmake-veggies -DCMAKE_PREFIX_PATH=/home/vscode/pfunit/build/installed && \
1515
cmake --build build-cmake-veggies
1616

1717
# build tests without veggies with cmake
1818
RUN sed -i -E 's/.*add_subdirectory\(\"test\/test-drive\"\)/add_subdirectory\(\"test\/test-drive\"\)/g' CMakeLists.txt && \
1919
sed -i -E 's/.*add_subdirectory\(\"test\/pfunit\"\)/add_subdirectory\(\"test\/pfunit\"\)/g' CMakeLists.txt && \
2020
sed -i -E 's/.*add_subdirectory\(\"test\/veggies\"\)/#add_subdirectory\(\"test\/veggies\"\)/g' CMakeLists.txt && \
21-
cmake -B build-cmake -DCMAKE_PREFIX_PATH=/pfunit/build/installed && \
21+
cmake -B build-cmake -DCMAKE_PREFIX_PATH=/home/vscode/pfunit/build/installed && \
2222
cmake --build build-cmake
2323

2424
# test veggies with ctest

docker/Dockerfile.ep-5

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,16 @@
1-
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises-parent:main
1+
FROM ghcr.io/ucl-arc/fortran-unit-testing-exercises:main
22

3-
COPY episodes/5-testing-parallel-code /5-testing-parallel-code
3+
COPY --chown=vscode episodes/5-testing-parallel-code /home/vscode/5-testing-parallel-code
44

5-
# Create a non-root user grant access totest dir and change to user
6-
# This is require to prevent running MPI as root
7-
RUN useradd -ms /bin/bash testuser
8-
RUN chown -R testuser:testuser /5-testing-parallel-code
9-
USER testuser
10-
11-
WORKDIR /5-testing-parallel-code/challenge
5+
WORKDIR /home/vscode/5-testing-parallel-code/challenge
126

137
# Fix intentional bug in code
148
RUN mv ../solution/test_find_steady_state.pf ./test/ && \
159
sed -i -E 's/.*LINK_LIBRARIES sut.*/LINK_LIBRARIES sut MAX_PES 8/g' test/CMakeLists.txt
1610

1711
# build tests with cmake
18-
RUN cmake -B build-cmake -DCMAKE_PREFIX_PATH=/pfunit/build/installed && \
12+
RUN cmake -B build-cmake -DCMAKE_PREFIX_PATH=/home/vscode/pfunit/build/installed && \
1913
cmake --build build-cmake
2014

2115
# test with ctest, allowing MPI to oversubscribe
22-
RUN PRTE_MCA_rmaps_default_mapping_policy=":oversubscribe" ctest --test-dir build-cmake --output-on-failure
16+
RUN ctest --test-dir build-cmake --output-on-failure

docker/Dockerfile.parent

Lines changed: 0 additions & 15 deletions
This file was deleted.

episodes/5-testing-parallel-code/challenge/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ project(
88
DESCRIPTION "Conway's game of life"
99
)
1010

11+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none")
12+
1113
# OpenMP
1214
find_package(OpenMP)
1315
find_package(MPI COMPONENTS Fortran REQUIRED)

episodes/5-testing-parallel-code/challenge/test/CMakeLists.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
find_package(PFUNIT REQUIRED)
22
enable_testing()
33

4-
set(CMAKE_Fortran_FLAGS "-fopenmp")
4+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fopenmp")
55

66
# Ensure test data is available at runtime
7+
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test")
78
file(CREATE_LINK "${PROJECT_SOURCE_DIR}/test/models"
8-
"${CMAKE_CURRENT_BINARY_DIR}/test-models" SYMBOLIC)
9+
"${CMAKE_CURRENT_BINARY_DIR}/test/models" SYMBOLIC)
910

1011
# Filter out the main.f90 files. We can only have one main() function in our tests
1112
set(PROJ_SRC_FILES_EXEC_MAIN ${PROJ_SRC_FILES})
@@ -15,16 +16,16 @@ list(FILTER PROJ_SRC_FILES_EXEC_MAIN EXCLUDE REGEX ".*main.f90")
1516
add_library (sut STATIC ${PROJ_SRC_FILES_EXEC_MAIN})
1617

1718
set(TO_LINK_TO_SRC MPI::MPI_Fortran)
18-
list(APPEND TO_LINK_TO_SRC OpenMP::OpenMP_Fortran)
1919
if(OpenMP_Fortran_FOUND)
20+
list(APPEND TO_LINK_TO_SRC OpenMP::OpenMP_Fortran)
2021
endif()
2122

2223
target_link_libraries(sut "${TO_LINK_TO_SRC}")
2324

2425
# List all test files
2526
file(GLOB
2627
test_srcs
27-
"${PROJECT_SOURCE_DIR}/test/pfunit/*.pf"
28+
"${PROJECT_SOURCE_DIR}/test/*.pf"
2829
)
2930

3031
#########################

episodes/5-testing-parallel-code/challenge/test-models/empty_-10_10.dat renamed to episodes/5-testing-parallel-code/challenge/test/models/empty_-10_10.dat

File renamed without changes.

0 commit comments

Comments
 (0)