|
2 | 2 |
|
3 | 3 | set -e |
4 | 4 |
|
5 | | -PY_DOCKER_IMAGES=("2.7.16-slim" "3.7.4-slim") |
6 | 5 | DOCKERFILE_TEMPLATE="tests/Dockerfile.template" |
7 | 6 |
|
8 | | -PACKAGES=() |
| 7 | +PY_DOCKER_IMAGES=() |
| 8 | +PY_DOCKER_IMAGES+=("2.7.16-slim") |
| 9 | +PY_DOCKER_IMAGES+=("3.7.4-slim") |
| 10 | +PY_DOCKER_IMAGES+=("3.8-slim") |
| 11 | +PY_DOCKER_IMAGES+=("3.9-slim") |
| 12 | +PY_DOCKER_IMAGES+=("3.10-slim") |
| 13 | +PY_DOCKER_IMAGES+=("3.11-slim") |
9 | 14 |
|
10 | | -# Install packages from sources |
11 | | -PACKAGES+=(".") |
12 | | -# PyPI package |
13 | | -PACKAGES+=("editorconfig-checker") |
| 15 | +create_docker_file() { |
| 16 | + local package="$1" |
14 | 17 |
|
15 | | -echo -e "Running tests...\n\n" |
| 18 | + # Generate a valid Dockerfile from a template file |
| 19 | + local dockerfile="tests/Dockerfile-$py_docker_image-$package" |
| 20 | + cp "$DOCKERFILE_TEMPLATE" "$dockerfile" |
16 | 21 |
|
17 | | -for py_docker_image in "${PY_DOCKER_IMAGES[@]}"; do |
18 | | - for package in "${PACKAGES[@]}"; do |
19 | | - is_local="0" |
20 | | - if [[ "$package" == "." ]]; then |
21 | | - package_pp="local" |
22 | | - is_local="1" |
23 | | - elif [[ "$package" == "editorconfig-checker" ]]; then |
24 | | - package_pp="pypi" |
25 | | - else |
26 | | - echo "Unknown package '$package'. Valid values are '.' and 'editorconfig-checker'." |
27 | | - exit 1 |
28 | | - fi |
| 22 | + # Replace docker image |
| 23 | + sed -i "s/\$IMAGE/$py_docker_image/g" "$dockerfile" |
29 | 24 |
|
30 | | - echo "docker image: $py_docker_image ~ package: $package ($package_pp)" |
| 25 | + # Replace package name |
| 26 | + if [[ "$package" == "local" ]]; then |
| 27 | + package="." |
| 28 | + fi |
| 29 | + sed -i "s/\$PACKAGE/$package/g" "$dockerfile" |
31 | 30 |
|
32 | | - # Generate a valid Dockerfile from a template file |
33 | | - dockerfile="tests/Dockerfile-$py_docker_image-$package_pp" |
34 | | - cp "$DOCKERFILE_TEMPLATE" "$dockerfile" |
35 | | - sed -i "s/\$IMAGE/$py_docker_image/g" "$dockerfile" |
36 | | - sed -i "s/\$PACKAGE/$package/g" "$dockerfile" |
| 31 | + echo "$dockerfile" |
| 32 | +} |
37 | 33 |
|
38 | | - echo "Building docker image based on \"$dockerfile\". It could take some time..." |
| 34 | +build_docker_image_and_run() { |
| 35 | + local py_docker_image="$1" |
| 36 | + local package="$2" |
| 37 | + local dockerfile="$3" |
39 | 38 |
|
40 | | - # Build & run |
41 | | - docker_image="editorconfig-checker-$py_docker_image-$package_pp:latest" |
42 | | - docker build -t "$docker_image" -f "$dockerfile" --no-cache --quiet . |
43 | | - docker run --rm "$docker_image" |
| 39 | + # Build |
| 40 | + local docker_image="editorconfig-checker-$py_docker_image-$package:latest" |
| 41 | + docker build -t "$docker_image" -f "$dockerfile" --no-cache --quiet . |
44 | 42 |
|
45 | | - # Run coding style tools |
46 | | - if [[ "$is_local" == "1" ]]; then |
47 | | - docker run --rm "$docker_image" make coding-style |
48 | | - fi |
| 43 | + # Run `editorconfig-checker` |
| 44 | + docker run --rm "$docker_image" ec -version |
| 45 | +} |
49 | 46 |
|
50 | | - # Run `editorconfig-checker` |
51 | | - docker run --rm "$docker_image" ec -version |
| 47 | +main() { |
| 48 | + echo -e "Running tests...\n\n" |
52 | 49 |
|
53 | | - # Remove the created image |
54 | | - docker image rm "$docker_image" &> /dev/null |
| 50 | + for py_docker_image in "${PY_DOCKER_IMAGES[@]}"; do |
| 51 | + for package in local editorconfig-checker; do |
| 52 | + local dockerfile=$(create_docker_file "$package") |
| 53 | + echo "Dockerfile created at \"$dockerfile\" (\"$py_docker_image\" image and \"$package\" package)" |
55 | 54 |
|
56 | | - echo -e "\n" |
| 55 | + echo "Building docker image. It could take some time..." |
| 56 | + build_docker_image_and_run "$py_docker_image" "$package" "$dockerfile" |
| 57 | + |
| 58 | + # docker image rm "$docker_image" &> /dev/null |
| 59 | + |
| 60 | + echo -e "\n" |
| 61 | + done |
57 | 62 | done |
58 | | -done |
| 63 | +} |
| 64 | + |
| 65 | +main |
0 commit comments