diff --git a/.travis.yml b/.travis.yml index 27928a8..101b8be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ language: objective-c -osx_image: beta-xcode6.2 +osx_image: xcode7.3 + +sudo: false git: depth: 10 @@ -19,7 +21,11 @@ notifications: script: sh build-package.sh env: + global: - APM_TEST_PACKAGES="language-marko language-html-swig language-svg language-d mavensmate-atom" + matrix: + - ATOM_CHANNEL=stable + - ATOM_CHANNEL=beta cache: - pip: true diff --git a/build-package.sh b/build-package.sh index 02457dd..b135968 100644 --- a/build-package.sh +++ b/build-package.sh @@ -1,27 +1,61 @@ #!/bin/sh echo "Downloading latest Atom release..." -curl -s -L "https://atom.io/download/mac" \ - -H 'Accept: application/octet-stream' \ - -o atom.zip +ATOM_CHANNEL="${ATOM_CHANNEL:=stable}" + +if [ "$TRAVIS_OS_NAME" = "osx" ]; then + curl -s -L "https://atom.io/download/mac?channel=$ATOM_CHANNEL" \ + -H 'Accept: application/octet-stream' \ + -o "atom.zip" + mkdir atom + unzip -q atom.zip -d atom + if [ "$ATOM_CHANNEL" = "stable" ]; then + export ATOM_APP_NAME="Atom.app" + export ATOM_SCRIPT_NAME="atom.sh" + export ATOM_SCRIPT_PATH="./atom/${ATOM_APP_NAME}/Contents/Resources/app/atom.sh" + else + export ATOM_APP_NAME="Atom ${ATOM_CHANNEL}.app" + export ATOM_SCRIPT_NAME="atom-${ATOM_CHANNEL}" + export ATOM_SCRIPT_PATH="./atom-${ATOM_CHANNEL}" + ln -s "./atom/${ATOM_APP_NAME}/Contents/Resources/app/atom.sh" "${ATOM_SCRIPT_PATH}" + fi + export PATH="$PWD/atom/${ATOM_APP_NAME}/Contents/Resources/app/apm/bin:$PATH" + export ATOM_PATH="./atom" + export APM_SCRIPT_PATH="./atom/${ATOM_APP_NAME}/Contents/Resources/app/apm/node_modules/.bin/apm" +else + curl -s -L "https://atom.io/download/deb?channel=$ATOM_CHANNEL" \ + -H 'Accept: application/octet-stream' \ + -o "atom.deb" + /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 + export DISPLAY=":99" + dpkg-deb -x atom.deb "$HOME/atom" + if [ "$ATOM_CHANNEL" = "stable" ]; then + export ATOM_SCRIPT_NAME="atom" + export APM_SCRIPT_NAME="apm" + else + export ATOM_SCRIPT_NAME="atom-$ATOM_CHANNEL" + export APM_SCRIPT_NAME="apm-$ATOM_CHANNEL" + fi + export ATOM_SCRIPT_PATH="$HOME/atom/usr/bin/$ATOM_SCRIPT_NAME" + export APM_SCRIPT_PATH="$HOME/atom/usr/bin/$APM_SCRIPT_NAME" +fi -mkdir atom -unzip -q atom.zip -d atom -export PATH=$PWD/atom/Atom.app/Contents/Resources/app/apm/bin:$PATH echo "Using Atom version:" -ATOM_PATH=./atom ./atom/Atom.app/Contents/Resources/app/atom.sh -v +"$ATOM_SCRIPT_PATH" -v +echo "Using APM version:" +"$APM_SCRIPT_PATH" -v echo "Downloading package dependencies..." -atom/Atom.app/Contents/Resources/app/apm/node_modules/.bin/apm clean -atom/Atom.app/Contents/Resources/app/apm/node_modules/.bin/apm install +"$APM_SCRIPT_PATH" clean +"$APM_SCRIPT_PATH" install TEST_PACKAGES="${APM_TEST_PACKAGES:=none}" if [ "$TEST_PACKAGES" != "none" ]; then echo "Installing atom package dependencies..." for pack in $TEST_PACKAGES ; do - atom/Atom.app/Contents/Resources/app/apm/node_modules/.bin/apm install $pack + "$APM_SCRIPT_PATH" install $pack done fi @@ -29,16 +63,20 @@ if [ -f ./node_modules/.bin/coffeelint ]; then if [ -d ./src ]; then echo "Linting package..." ./node_modules/.bin/coffeelint src - rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi + rc=$?; if [ $rc -ne 0 ]; then exit $rc; fi fi if [ -d ./spec ]; then echo "Linting package specs..." ./node_modules/.bin/coffeelint spec - rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi + rc=$?; if [ $rc -ne 0 ]; then exit $rc; fi fi fi -echo "Running specs..." -ATOM_PATH=./atom atom/Atom.app/Contents/Resources/app/apm/node_modules/.bin/apm test --path atom/Atom.app/Contents/Resources/app/atom.sh - +if [ -d ./spec ]; then + echo "Running specs..." + "$ATOM_SCRIPT_PATH" --test spec +else + echo "Missing spec folder! Please consider adding a test suite in `./spec`" + exit 1 +fi exit