AMD64
no language set
Git
wikimedia/pywikibot:.travis.yml@fa67405
# See tests/README.rst for instructions for using travis with developer builds.

language: python

python:
  - '3.5'
  - '3.6'
  - '3.7'
  - '3.8'
  - '3.9'
  - '3.10-dev'

# OSX builds do not yet support Python
os: linux

dist: xenial  # required for Python >= 3.7

addons:
  apt:
    packages:
      - djvulibre-bin

before_install:
  # When PYSETUP_TEST_EXTRAS is not enabled, do not allow the
  # default 'install' step to install all dependencies listed in
  # requirements.txt to verify that a minimal install works as expected.
  # Instead install requests in the before_script step below.
  - if [[ "$PYSETUP_TEST_EXTRAS" != '1' ]]; then
      printf "# Empty requirements with PYSETUP_TEST_EXTRA" > requirements.txt ;
    fi

  # When the env variable USE_NOSE or USE_PYTEST is set, the appropriate
  # tool is used, else PYTEST is taken as the default
  - if [[ "$PYSETUP_TEST_EXTRAS" != '1' && "$USE_NOSE" != '1' && "$USE_PYTEST" != '1' ]]; then
      export USE_PYTEST=1 ;
    fi

  - if [[ "$PYWIKIBOT_SITE_ONLY" == "1" ]]; then
      echo "Running site tests only code ${LANGUAGE} on family ${FAMILY}" ;
    fi

  - export GITHUB_USER=`echo $TRAVIS_REPO_SLUG | cut -d '/' -f 1`
  - mkdir ~/.python-eggs
  - chmod 700 ~/.python-eggs

  - if [[ "$GITHUB_USER" != "wikimedia" ]]; then
      export PYWIKIBOT_TEST_WRITE_FAIL=1 ;
    fi

install:
  - pip install -U setuptools
  # Make Travis reinstall default pytest (T255349)
  - pip uninstall -y pytest
  - pip install -r dev-requirements.txt
  - pip install -r requirements.txt

before_script:
  - if [[ "$PYSETUP_TEST_EXTRAS" != '1' ]]; then
      pip install -e .[mwoauth];
    fi

script:
  - mkdir ~/.pywikibot

  - python pwb.py generate_family_file 'https://wiki.musicbrainz.org/' musicbrainz 'n'
  - if [[ $FAMILY == 'wpbeta' ]]; then
      python -m generate_family_file 'http://'$LANGUAGE'.wikipedia.beta.wmflabs.org/' 'wpbeta' 'y' ;
    fi
  - if [[ $FAMILY == 'wsbeta' ]]; then
      python -m generate_family_file 'http://'$LANGUAGE'.wikisource.beta.wmflabs.org/' 'wsbeta' 'y' ;
    fi
  - if [[ $FAMILY == 'portalwiki' ]]; then
      python -m generate_family_file 'https://theportalwiki.com/wiki/Main_Page' 'portalwiki' 'y' ;
    fi

  - python -W error::UserWarning -m generate_user_files -dir:~/.pywikibot/ -family:$FAMILY -lang:$LANGUAGE -v -user:"$PYWIKIBOT_USERNAME"

  - if [[ -n "$USER_PASSWORD" && -n "$PYWIKIBOT_USERNAME" ]]; then
      printf "usernames['wikipedia']['en'] = '%q'\n" "$PYWIKIBOT_USERNAME" >> ~/.pywikibot/user-config.py ;
      printf "usernames['wikipedia']['test'] = '%q'\n" "$PYWIKIBOT_USERNAME" >> ~/.pywikibot/user-config.py ;
      printf "usernames['wikidata']['test'] = '%q'\n" "$PYWIKIBOT_USERNAME" >> ~/.pywikibot/user-config.py ;
      printf "usernames['commons']['commons'] = '%q'\n" "$PYWIKIBOT_USERNAME" >> ~/.pywikibot/user-config.py ;
      printf "usernames['meta']['meta'] = '%q'\n" "$PYWIKIBOT_USERNAME" >> ~/.pywikibot/user-config.py ;
      printf "usernames['wikisource']['zh'] = '%q'\n" "$PYWIKIBOT_USERNAME" >> ~/.pywikibot/user-config.py ;
      printf "('%q', '%q')\n" "$PYWIKIBOT_USERNAME" "$USER_PASSWORD" > ~/.pywikibot/passwordfile ;
      echo "import os" >> ~/.pywikibot/user-config.py ;
      echo "password_file = os.path.expanduser('~/.pywikibot/passwordfile')" >> ~/.pywikibot/user-config.py ;
    fi

  - if [[ -n "$OAUTH_DOMAIN" ]]; then
      if [[ -n "$OAUTH_PYWIKIBOT_USERNAME" ]]; then
        printf "usernames['${FAMILY}']['${LANGUAGE}'] = '%q'\n" "$OAUTH_PYWIKIBOT_USERNAME" >> ~/.pywikibot/user-config.py ;
      fi ;
      oauth_token_var="OAUTH_TOKENS_${FAMILY^^}_${LANGUAGE^^}" ;
      if [[ -n "${!oauth_token_var}" ]]; then
        printf "authenticate['${OAUTH_DOMAIN}'] = ('%s')\n" "${!oauth_token_var//:/\', \'}" >> ~/.pywikibot/user-config.py ;
      fi ;
    fi
  - echo "authenticate['wiki.musicbrainz.org'] = ('NOTSPAM', 'NOTSPAM')" >> ~/.pywikibot/user-config.py ;

  - echo "max_retries = 2" >> ~/.pywikibot/user-config.py
  - echo "maximum_GET_length = 5000" >> ~/.pywikibot/user-config.py
  - echo "console_encoding = 'utf8'" >> ~/.pywikibot/user-config.py

  - python -c "import setuptools; print(setuptools.__version__)"

  - if [[ "$USE_NOSE" == "1" ]]; then
      nosetests --version ;
      if [[ "$PYWIKIBOT_SITE_ONLY" == "1" ]]; then
        python setup.py nosetests --tests tests --verbosity=2 -a "family=$FAMILY,code=$LANGUAGE" --with-trim --with-coverage --cover-package=. ;
      else
        python setup.py nosetests --tests tests --verbosity=2 --with-trim --with-coverage --cover-package=. ;
      fi ;
    elif [[ "$USE_PYTEST" == "1" ]]; then
      if [[ "$PYWIKIBOT_SITE_ONLY" == "1" ]]; then
        python setup.py pytest --addopts="-vvv -s --timeout=$TEST_TIMEOUT --cov=. -rsxX -a \"family=='$FAMILY' and code=='$LANGUAGE'\"" ;
      else
        python setup.py pytest --addopts="-vvv -s --timeout=$TEST_TIMEOUT --cov=. -rsxX" ;
      fi
    else
      coverage run -m unittest discover -vv -p "*_tests.py" ;
    fi

after_script:
    codecov

env:
  global:
    - TEST_TIMEOUT=300
    - PYWIKIBOT_NO_L10N_TESTS=1
    - PYWIKIBOT_TESTS_RUNNING=1

  matrix:
    - LANGUAGE=en FAMILY=wikipedia PYWIKIBOT_TEST_PROD_ONLY=1
    - LANGUAGE=zh FAMILY=wikisource PYSETUP_TEST_EXTRAS=1 PYWIKIBOT_TEST_PROD_ONLY=1 PYWIKIBOT_TEST_NO_RC=1

matrix:
  include:
    - python: '3.5_with_system_site_packages'
      env: LANGUAGE=nb FAMILY=wikipedia PYSETUP_TEST_EXTRAS=1 PYWIKIBOT_TEST_NO_RC=1
      addons:
        apt:
          packages:
            - djvulibre-bin
            - graphviz
    - python: '3.6'
      env: LANGUAGE=en FAMILY=wpbeta PYWIKIBOT_SITE_ONLY=1 OAUTH_DOMAIN="en.wikipedia.beta.wmflabs.org"
    - python: '3.6'
      env: LANGUAGE=zh FAMILY=wpbeta PYWIKIBOT_SITE_ONLY=1 OAUTH_DOMAIN="zh.wikipedia.beta.wmflabs.org"
    - python: '3.5'
      env: LANGUAGE=en FAMILY=wsbeta PYWIKIBOT_SITE_ONLY=1
    - python: '3.5'
      env: LANGUAGE=en FAMILY=musicbrainz PYWIKIBOT_SITE_ONLY=1
    - python: '3.7'
      env: LANGUAGE=test FAMILY=wikipedia PYWIKIBOT_SITE_ONLY=1 OAUTH_DOMAIN="test.wikipedia.org"
    - python: '3.7'
      env: LANGUAGE=test FAMILY=wikidata PYWIKIBOT_SITE_ONLY=1
    - python: '3.9'
      env: LANGUAGE=ar FAMILY=wiktionary PYWIKIBOT_TEST_NO_RC=1
    - python: '3.6'
      env: LANGUAGE=wikidata FAMILY=wikidata PYWIKIBOT_SITE_ONLY=1
    - python: '3.8'
      env: LANGUAGE=uk FAMILY=wowwiki PYWIKIBOT_TEST_NO_RC=1
    - python: '3.8'
      env: LANGUAGE=en FAMILY=portalwiki
  allow_failures:
    - python: '3.8'
      env: LANGUAGE=uk FAMILY=wowwiki PYWIKIBOT_TEST_NO_RC=1

notifications:
  email:
    recipients:
      - pywikibot-commits@lists.wikimedia.org
    on_success: always
    on_failure: always
  irc:
    channels:
      - "chat.freenode.net#pywikibot"
    on_success: change
    on_failure: change
    template:
      - "%{repository_slug}#%{build_number} (%{branch} - %{commit} : %{author}): %{message} %{build_url}"
Build Config
{
  "env": {
    "global": [
      "ARTIFACTS_S3_REGION=us-east-1",
      "ARTIFACTS_S3_BUCKET=travis-rubies",
      "ARTIFACTS_PERMISSIONS=public-read",
      {
        "secure": "ULn72j3IX7DRzhyxMSY+HNB+4rObVgIFScVsgGesazDk7vTXGTt14J3H3B6knALMTGz+KNIcyqXLrr2DF0O5LGFBBjAjQxjv69wOOxA/CnyZGHJcMspKhRntXDy66vvB7jcfYYa94ekVJ440QEaTlw9hjal/Wl2CsqUVSHvFadY="
      },
      {
        "secure": "lhCm8NxZ6OTj/Mb/P2BNQiF8+3y5IWnWlBQ+FwpiU1/ITITzVXlcZN9JXwSnGQ0ir7JSw/sApJAMOlgwYVh8q+GU4XOpX1AtwT5iF/ZfPUk3Oma2jibMO7I9gj4ie3f40cT76NmfPoqXvuT9Ha72hXOWA2PN/3jEeeU9hiJ+feU="
      }
    ]
  },
  "matrix": {
    "include": [
      {
        "os": "linux",
        "dist": "precise",
        "sudo": "required",
        "group": "edge",
        "before_script": "gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3"
      },
      {
        "os": "linux",
        "group": "edge",
        "services": "docker",
        "before_script": "gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3"
      },
      {
        "os": "osx",
        "osx_image": "xcode6.4"
      },
      {
        "os": "osx"
      }
    ],
    "fast_finish": true,
    "allow_failures": [
      {
        "services": "docker"
      },
      {
        "os": "osx"
      }
    ]
  },
  "script": [
    "unset JRUBY_OPTS",
    "./build.sh"
  ],
  "language": "c",
  "after_failure": [
    "pushd /Users/travis/.rvm/src/ruby-head && otool -L miniruby && popd",
    "find $rvm_path/log/ -type f | xargs ls -t | head -n 1 | xargs cat"
  ],
  "notifications": {
    "email": false
  }
}