## Testing # Set the language to Ruby so that we can run sass-spec tests. language: ruby # Note: we're currently pinned to Dart 2.0.0-dev.36.0 because dart2js doesn't # support configuration-specific imports with the new front-end. env: # Language specs, defined in sass/sass-spec - TASK=specs DART_CHANNEL=dev DART_VERSION=2.0.0-dev.36.0 - TASK=specs DART_CHANNEL=stable DART_VERSION=latest - TASK=specs DART_CHANNEL=stable DART_VERSION=latest ASYNC=true # Unit tests, defined in test/. - TASK=tests DART_CHANNEL=dev DART_VERSION=2.0.0-dev.36.0 - TASK=tests DART_CHANNEL=stable DART_VERSION=latest - TASK=tests DART_CHANNEL=dev DART_VERSION=2.0.0-dev.36.0 NODE_VERSION=stable - TASK=tests DART_CHANNEL=dev DART_VERSION=2.0.0-dev.36.0 NODE_VERSION=v6.9.1 - TASK=tests DART_CHANNEL=dev DART_VERSION=2.0.0-dev.36.0 NODE_VERSION=v4.6.2 # Miscellaneous checks. - TASK=analyze DART_CHANNEL=dev DART_VERSION=2.0.0-dev.36.0 - TASK=format DART_CHANNEL=dev DART_VERSION=2.0.0-dev.36.0 rvm: - 2.3.1 # Only building master means that we don't run two builds for each pull request. branches: only: [master, "/^feature\\..*/", "/^\\d+\\.\\d+\\.\\d+([+-].*)?$/"] cache: directories: - $HOME/.pub-cache install: - bold=$(tput bold) - none=$(tput sgr0) # Install the Dart SDK. - curl -o dart.zip "https://storage.googleapis.com/dart-archive/channels/$DART_CHANNEL/release/$DART_VERSION/sdk/dartsdk-linux-x64-release.zip" - unzip dart.zip - export PATH="$PATH:`pwd`/dart-sdk/bin" - pub get # Install the Node SDK if we're running Node tests. - if-node() { if [ ! -z "$NODE_VERSION" ]; then "$@"; fi } - if-node . "$HOME/.nvm/nvm.sh" - if-node nvm install "$NODE_VERSION" - if-node nvm use "$NODE_VERSION" - if-node pub run grinder before_test # Download sass-spec and install its dependencies if we're running specs. - if-specs() { if [ "$TASK" = specs ]; then "$@"; fi } - if-specs export sass_spec_ref=`tool/sass-spec-ref.sh` - if-specs git init sass-spec - if-specs git -C sass-spec fetch git://github.com/sass/sass-spec "$sass_spec_ref" --depth 1 - if-specs git -C sass-spec checkout FETCH_HEAD - if-specs bundle install --gemfile=sass-spec/Gemfile --jobs=3 --retry=3 script: - if [ "$TASK" = analyze ]; then echo "${bold}Analzing Dart code.$none"; dartanalyzer --fatal-warnings lib/ test/ tool/; elif [ "$TASK" = format ]; then echo "${bold}Ensuring Dart code is formatted.$none"; ./tool/assert-formatted.sh; elif [ "$TASK" = tests ]; then if [ -z "$NODE_VERSION" ]; then echo "${bold}Running Dart tests against $(dart --version &> /dev/stdout).$none"; if [ "$DART_CHANNEL" = dev ]; then pub run test -p vm -x node; else pub run test -p vm -x dart2 -x node; fi else echo "${bold}Running Node tests against Node $(node --version).$none"; if [ "$DART_CHANNEL" = dev ]; then pub run test -j 2 -t node; else pub run test -j 2 -x dart2 -t node; fi fi; else echo "${bold}Running sass-spec against $(dart --version &> /dev/stdout).$none"; if [ "$ASYNC" = true ]; then extra_args=--dart-args --async; fi; (cd sass-spec; bundle exec sass-spec.rb --dart .. $extra_args); fi ## Deployment jobs: include: - stage: deploy if: (type IN (push, api)) AND (repo = sass/dart-sass) AND tag =~ ^\d+\.\d+\.\d+([+-].*)?$ env: DART_CHANNEL=dev DART_VERSION=2.0.0-dev.36.0 script: skip # Don't run tests deploy: # Deploy to GitHub, npm, pub, Homebrew, and Chocolatey. provider: script script: tool/deploy.sh # Don't clean up the Dart SDK. skip_cleanup: true # This causes the deploy to only be build when a tag is pushed. This # is because the `tag` attribute in `if:` statements has a different # understanding of the "current tag" than this, which uses the # `TRAVIS_TAG` environment variable. `if:` statements check whether a # tag exists that refers to the current commit, whereas `TRAVIS_TAG` # checks whether the current build was caused by a tag. # # We check `if:` because it avoids unnecessary build steps, and # `on: {tags: true}` ensures that we only deploy on the build caused # by pushing a tag, not the build caused by pushing master. on: {tags: true}