|
8 | 8 | description: 'Image to run smoke test in'
|
9 | 9 | required: true
|
10 | 10 | default: 'none'
|
| 11 | + user: |
| 12 | + description: 'User in container image to use for smoke test' |
| 13 | + required: true |
| 14 | + default: 'vscode' |
11 | 15 |
|
12 | 16 | runs:
|
13 | 17 | using: composite
|
@@ -38,29 +42,41 @@ runs:
|
38 | 42 | id: test_image
|
39 | 43 | shell: bash
|
40 | 44 | run: |
|
| 45 | + # Run test script for image if one exists |
| 46 | +
|
41 | 47 | if [ "${{ inputs.image }}" = "none" ]; then
|
42 |
| - echo "Image not specified. Skipping test." |
| 48 | + echo "Image not specified. Aborting test." |
43 | 49 | exit 0
|
44 | 50 | fi
|
45 | 51 |
|
46 | 52 | set -e
|
47 | 53 |
|
48 |
| - # Fake out existance of extensions, VS Code server |
49 |
| - dev_container_relative_path="/containers/${{ inputs.definition }}/.devcontainer" |
| 54 | + # Start container |
| 55 | + container_name="vscdc-test-container" |
| 56 | + docker run -d --name ${container_name} --rm --init --privileged -v "$(pwd)/containers/${{ inputs.definition }}:/workspace" ${{ inputs.image }} /bin/sh -c 'while sleep 1000; do :; done' |
| 57 | +
|
| 58 | + # Fake out existence of extensions, VS Code Server |
| 59 | + echo "(*) Stubbing out extensions and VS Code Server..." |
| 60 | + dev_container_relative_path="containers/${{ inputs.definition }}/.devcontainer" |
50 | 61 | mkdir -p "/tmp/${dev_container_relative_path}"
|
51 |
| - cp -f $(pwd)/${dev_container_relative_path}/devcontainer.json "/tmp/${dev_container_relative_path}/" |
| 62 | + cp -f "$(pwd)/${dev_container_relative_path}/devcontainer.json" "/tmp/${dev_container_relative_path}/" |
52 | 63 | dev_container_tmp="/tmp/${dev_container_relative_path}/devcontainer.json"
|
53 | 64 | sed -i'.bak' -e "s/\\/\\/.*/ /g" "${dev_container_tmp}"
|
54 |
| - extensions="$(jq '.extensions' --compact-output "${dev_container_tmp}" | tr -d '[' | tr -d ']' | tr ',' ' ') 2>/dev/null || echo ''" |
55 |
| - docker run --rm --init --privileged -u "${{ inputs.user }}" "${{ inputs.image }}" /bin/sh -c "\ |
56 |
| - mkdir -p \"\$HOME/.vscode-test-server/extensions\" \ |
57 |
| - cd \"\$HOME/.vscode-test-server/extensions\" \ |
58 |
| - if [ \"${extensions}\" != '' ]; then echo \"${extensions}\" | xargs -n 1 mkdir -p; fi" |
| 65 | + extensions="$(jq '.extensions' --compact-output "${dev_container_tmp}" | tr -d '[' | tr -d ']' | tr ',' '\n' 2>/dev/null || echo -n '')" |
| 66 | + echo "(*) Extensions in devcontainer.json: ${extensions}" |
| 67 | + docker exec -u "${{ inputs.user }}" ${container_name} /bin/sh -c "\ |
| 68 | + echo \"(*) Creating folders in \$HOME...\" \ |
| 69 | + && mkdir -p \$HOME/.vscode-server/bin \$HOME/.vscode-server/extensions \ |
| 70 | + && cd \$HOME/.vscode-server/extensions \ |
| 71 | + && if [ \"${extensions}\" != '' ]; then echo \"${extensions}\" | xargs -n 1 mkdir -p; fi" |
59 | 72 |
|
60 | 73 | # Run actual test
|
61 |
| - docker run --rm --init --privileged -u "${{ inputs.user }}" -v "$(pwd)/containers/${{ inputs.definition }}:/workspace" "${{ inputs.image }}" /bin/sh -c '\ |
62 |
| - set -e |
63 |
| - cd /workspace \ |
| 74 | + echo "(*) Running test..." |
| 75 | + docker exec -u "${{ inputs.user }}" ${container_name} /bin/sh -c '\ |
| 76 | + set -e \ |
| 77 | + && id \ |
| 78 | + && echo "$HOME" \ |
| 79 | + && cd /workspace \ |
64 | 80 | && if [ -f "test-project/test.sh" ]; then \
|
65 | 81 | cd test-project \
|
66 | 82 | && if [ "$(id -u)" = "0" ]; then \
|
|
0 commit comments