# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.

# https://docs.travis-ci.com/user/languages/python/
language: python
python:
  - "2.7"
  - "3.5"
# command to install dependencies
# install: "pip install -r requirements.txt"
# command to run tests

# Invoke ScanCode tests
script: ./scancode/test.sh
