machine:
  node:
    version: 10.0.0
  environment:
    SOURCE_MAP_SUPPORT: false

dependencies:
  pre:
    - cd /usr/local && sudo rm -rf go && curl https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz | sudo tar -xz && sudo chmod a+w go/src/path/filepath
  post:
    - mv ./gopherjs $HOME/bin
    - npm install --global node-gyp
    - npm install # install our (dev) dependencies from package.json
    - cd node-syscall && node-gyp rebuild && mkdir -p ~/.node_libraries/ && cp build/Release/syscall.node ~/.node_libraries/syscall.node

test:
  override:
    - go generate github.com/gopherjs/gopherjs/compiler/prelude
    - diff -u <(echo -n) <(git status --porcelain)
    - diff -u <(echo -n) <(gofmt -d .)
    - go tool vet *.go                                                   # Go package in root directory.
    - for d in */; do echo $d; done | grep -v tests/ | grep -v third_party/ | xargs go tool vet # All subdirectories except "tests", "third_party".
    - diff -u <(echo -n) <(go list ./compiler/natives/src/...) # All those packages should have // +build js.
    - gopherjs install -v net/http # Should build successfully (can't run tests, since only client is supported).
    - >
      ulimit -s 10000 && gopherjs test --minify -v --short
      github.com/gopherjs/gopherjs/tests
      github.com/gopherjs/gopherjs/tests/main
      github.com/gopherjs/gopherjs/js
      archive/tar
      archive/zip
      bufio
      bytes
      compress/bzip2
      compress/flate
      compress/gzip
      compress/lzw
      compress/zlib
      container/heap
      container/list
      container/ring
      crypto/aes
      crypto/cipher
      crypto/des
      crypto/dsa
      crypto/ecdsa
      crypto/elliptic
      crypto/hmac
      crypto/md5
      crypto/rand
      crypto/rc4
      crypto/rsa
      crypto/sha1
      crypto/sha256
      crypto/sha512
      crypto/subtle
      crypto/x509
      database/sql
      database/sql/driver
      debug/dwarf
      debug/elf
      debug/macho
      debug/pe
      encoding/ascii85
      encoding/asn1
      encoding/base32
      encoding/base64
      encoding/binary
      encoding/csv
      encoding/gob
      encoding/hex
      encoding/json
      encoding/pem
      encoding/xml
      errors
      expvar
      flag
      fmt
      go/ast
      go/constant
      go/doc
      go/format
      go/parser
      go/printer
      go/scanner
      go/token
      hash/adler32
      hash/crc32
      hash/crc64
      hash/fnv
      html
      html/template
      image
      image/color
      image/draw
      image/gif
      image/jpeg
      image/png
      index/suffixarray
      io
      io/ioutil
      math
      math/big
      math/bits
      math/cmplx
      math/rand
      mime
      mime/multipart
      mime/quotedprintable
      net/http/cookiejar
      net/http/fcgi
      net/mail
      net/rpc/jsonrpc
      net/textproto
      net/url
      os/user
      path
      path/filepath
      reflect
      regexp
      regexp/syntax
      sort
      strconv
      strings
      sync
      sync/atomic
      testing/quick
      text/scanner
      text/tabwriter
      text/template
      text/template/parse
      time
      unicode
      unicode/utf16
      unicode/utf8
    - go test -v -race ./...
    - gopherjs test -v fmt # No minification should work.
