aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--circle.yml108
-rwxr-xr-xscripts/tests.sh29
2 files changed, 100 insertions, 37 deletions
diff --git a/circle.yml b/circle.yml
index f97b619a..e29f3e4a 100644
--- a/circle.yml
+++ b/circle.yml
@@ -4,6 +4,32 @@ defaults:
filters:
tags:
only: /.*/
+ - setup_prerelease_commit_hash: &setup_prerelease_commit_hash
+ name: Store commit hash and prerelease
+ command: |
+ if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" ]; then echo -n > prerelease.txt; else date -u +"nightly.%Y.%-m.%-d" > prerelease.txt; fi
+ echo -n "$CIRCLE_SHA1" > commit_hash.txt
+ - run_build: &run_build
+ name: Build
+ command: |
+ mkdir -p build
+ cd build
+ cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ make -j4
+ - run_tests: &run_tests
+ name: Tests
+ command: scripts/tests.sh --junit_report test_results
+ environment:
+ TERM: dumb
+ - solc_artifact: &solc_artifact
+ path: build/solc/solc
+ destination: solc
+ - all_artifacts: &all_artifacts
+ root: build
+ paths:
+ - solc/solc
+ - test/soltest
+ - test/tools/solfuzzer
version: 2
jobs:
@@ -87,7 +113,7 @@ jobs:
command: |
. /usr/local/nvm/nvm.sh
test/externalTests.sh /tmp/workspace/soljson.js || test/externalTests.sh /tmp/workspace/soljson.js
- build_x86:
+ build_x86_linux:
docker:
- image: buildpack-deps:artful
steps:
@@ -97,29 +123,31 @@ jobs:
command: |
apt-get -qq update
apt-get -qy install cmake libboost-regex-dev libboost-filesystem-dev libboost-test-dev libboost-system-dev libboost-program-options-dev libz3-dev
+ - run: *setup_prerelease_commit_hash
+ - run: *run_build
+ - store_artifacts: *solc_artifact
+ - persist_to_workspace: *all_artifacts
+
+ build_x86_mac:
+ macos:
+ xcode: "9.0"
+ steps:
+ - checkout
- run:
- name: Store commit hash and prerelease
- command: |
- if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" ]; then echo -n > prerelease.txt; else date -u +"nightly.%Y.%-m.%-d" > prerelease.txt; fi
- echo -n "$CIRCLE_SHA1" > commit_hash.txt
- - run:
- name: Build
+ name: Install build dependencies
command: |
- mkdir -p build
- cd build
- cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
- make -j4
- - store_artifacts:
- path: build/solc/solc
- destination: solc
- - persist_to_workspace:
- root: build
- paths:
- - solc/solc
- - test/soltest
- - test/tools/solfuzzer
+ brew update
+ brew upgrade
+ brew unlink python
+ brew install z3
+ brew install boost
+ brew install cmake
+ - run: *setup_prerelease_commit_hash
+ - run: *run_build
+ - store_artifacts: *solc_artifact
+ - persist_to_workspace: *all_artifacts
- test_x86:
+ test_x86_linux:
docker:
- image: buildpack-deps:artful
steps:
@@ -132,9 +160,26 @@ jobs:
apt-get -qq update
apt-get -qy install libz3-dev libleveldb1v5
- run: mkdir -p test_results
+ - run: *run_tests
+ - store_test_results:
+ path: test_results/
+
+ test_x86_mac:
+ macos:
+ xcode: "9.0"
+ steps:
+ - checkout
+ - attach_workspace:
+ at: build
- run:
- name: Tests
- command: scripts/tests.sh --junit_report test_results
+ name: Install dependencies
+ command: |
+ brew update
+ brew upgrade
+ brew unlink python
+ brew install z3
+ - run: mkdir -p test_results
+ - run: *run_tests
- store_test_results:
path: test_results/
@@ -148,11 +193,7 @@ jobs:
command: |
apt-get -qq update
apt-get -qy install python-sphinx
- - run:
- name: Store commit hash and prerelease
- command: |
- if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" ]; then echo -n > prerelease.txt; else date -u +"nightly.%Y.%-m.%-d" > prerelease.txt; fi
- echo -n "$CIRCLE_SHA1" > commit_hash.txt
+ - run: *setup_prerelease_commit_hash
- run:
name: Build documentation
command: ./scripts/docs.sh
@@ -173,9 +214,14 @@ workflows:
<<: *build_on_tags
requires:
- build_emscripten
- - build_x86: *build_on_tags
- - test_x86:
+ - build_x86_linux: *build_on_tags
+ - build_x86_mac: *build_on_tags
+ - test_x86_linux:
+ <<: *build_on_tags
+ requires:
+ - build_x86_linux
+ - test_x86_mac:
<<: *build_on_tags
requires:
- - build_x86
+ - build_x86_mac
- docs: *build_on_tags
diff --git a/scripts/tests.sh b/scripts/tests.sh
index 38073bf3..d63c1fe4 100755
--- a/scripts/tests.sh
+++ b/scripts/tests.sh
@@ -30,6 +30,17 @@ set -e
REPO_ROOT="$(dirname "$0")"/..
+IPC_ENABLED=true
+if [[ "$OSTYPE" == "darwin"* ]]
+then
+ SMT_FLAGS="--no-smt"
+ if [ "$CIRCLECI" ]
+ then
+ IPC_ENABLED=false
+ IPC_FLAGS="--no-ipc"
+ fi
+fi
+
if [ "$1" = --junit_report ]
then
if [ -z "$2" ]
@@ -98,8 +109,11 @@ function run_eth()
sleep 2
}
-download_eth
-ETH_PID=$(run_eth /tmp/test)
+if [ "$IPC_ENABLED" = true ];
+then
+ download_eth
+ ETH_PID=$(run_eth /tmp/test)
+fi
progress="--show-progress"
if [ "$CIRCLECI" ]
@@ -131,7 +145,7 @@ do
log=--logger=JUNIT,test_suite,$log_directory/noopt_$vm.xml $testargs_no_opt
fi
fi
- "$REPO_ROOT"/build/test/soltest $progress $log -- --testpath "$REPO_ROOT"/test "$optimize" --evm-version "$vm" --ipcpath /tmp/test/geth.ipc
+ "$REPO_ROOT"/build/test/soltest $progress $log -- --testpath "$REPO_ROOT"/test "$optimize" --evm-version "$vm" $SMT_FLAGS $IPC_FLAGS --ipcpath /tmp/test/geth.ipc
done
done
@@ -141,6 +155,9 @@ then
exit 1
fi
-pkill "$ETH_PID" || true
-sleep 4
-pgrep "$ETH_PID" && pkill -9 "$ETH_PID" || true
+if [ "$IPC_ENABLED" = true ]
+then
+ pkill "$ETH_PID" || true
+ sleep 4
+ pgrep "$ETH_PID" && pkill -9 "$ETH_PID" || true
+fi