diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index a2788ffa..eba707c4 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -26,7 +26,7 @@ jobs: build_deps: scripts/workflows/provision-darwin-build.sh steps: - uses: actions/checkout@master - + - uses: actions/cache@v3 with: path: | @@ -83,6 +83,8 @@ jobs: path: /usr/local/bin - name: Setup quill binary run: chmod +x /usr/local/bin/quill + - name: Install dfx + uses: dfinity/setup-dfx@main - name: Provision Darwin if: ${{ contains(matrix.os, 'macos') }} run: bash scripts/workflows/provision-darwin-e2e.sh diff --git a/e2e/utils/_.bash b/e2e/utils/_.bash index 75b2dbfc..deb75dac 100644 --- a/e2e/utils/_.bash +++ b/e2e/utils/_.bash @@ -17,11 +17,23 @@ standard_setup() { x=$(mktemp -d -t dfx-e2e-XXXXXXXX) export DFX_E2E_TEMP_DIR="$x" + if [ "$(uname)" == "Darwin" ]; then + project_relative_path="Library/Application Support/org.dfinity.dfx" + elif [ "$(uname)" == "Linux" ]; then + project_relative_path=".local/share/dfx" + fi + mkdir "$x/working-dir" mkdir "$x/cache-root" mkdir "$x/config-root" mkdir "$x/home-dir" + # we need to configure dfxvm in the isolated home directory + default_dfx_version="$(dfxvm default)" + # don't re-download dfx for every test + mkdir -p "$x/home-dir/$project_relative_path" + ln -s "$HOME/$project_relative_path/versions" "$x/home-dir/$project_relative_path/versions" + cd "$x/working-dir" || exit export HOME="$x/home-dir" @@ -29,12 +41,10 @@ standard_setup() { export DFX_CONFIG_ROOT="$x/config-root" export RUST_BACKTRACE=1 export PEM_LOCATION="${BATS_TEST_DIRNAME}/../assets" - if [ "$(uname)" == "Darwin" ]; then - export E2E_SHARED_LOCAL_NETWORK_DATA_DIRECTORY="$HOME/Library/Application Support/org.dfinity.dfx/network/local" - elif [ "$(uname)" == "Linux" ]; then - export E2E_SHARED_LOCAL_NETWORK_DATA_DIRECTORY="$HOME/.local/share/dfx/network/local" - fi + export E2E_SHARED_LOCAL_NETWORK_DATA_DIRECTORY="$HOME/$project_relative_path/network/local" export E2E_NETWORKS_JSON="$DFX_CONFIG_ROOT/.config/dfx/networks.json" + + dfxvm default "$default_dfx_version" } standard_nns_setup() { diff --git a/scripts/workflows/provision-darwin-e2e.sh b/scripts/workflows/provision-darwin-e2e.sh index da0c88cc..eee19001 100755 --- a/scripts/workflows/provision-darwin-e2e.sh +++ b/scripts/workflows/provision-darwin-e2e.sh @@ -9,9 +9,6 @@ pushd /tmp brew install coreutils -# install dfx -sh -ci "$(curl -fsSL https://internetcomputer.org/install.sh)" - # Install Bats. if [ "$(uname -r)" = "19.6.0" ]; then brew unlink bats diff --git a/scripts/workflows/provision-linux-e2e.sh b/scripts/workflows/provision-linux-e2e.sh index badbc91f..74843d2f 100755 --- a/scripts/workflows/provision-linux-e2e.sh +++ b/scripts/workflows/provision-linux-e2e.sh @@ -7,9 +7,6 @@ export # Enter temporary directory. pushd /tmp -# install dfx -sh -ci "$(curl -fsSL https://internetcomputer.org/install.sh)" - # Install Bats. sudo apt-get install --yes bats