Travis testing (WIP) - s-leger/archipack GitHub Wiki

Ref

Foder structure

tests/
  addon/
    addon.test.blend
    addon.test.py

Tests:

import unittest

# import the already loaded addon
import blenderPolygons

class TestAddon(unittest.TestCase):
    def test_addon_enabled(self):
        # test if addon got loaded correctly
        # every addon must provide the "bl_info" dict
        self.assertIsNotNone(blenderPolygons.bl_info)

# we have to manually invoke the test runner here, as we cannot use the CLI
suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestAddon)
unittest.TextTestRunner().run(suite)

Runner:

import os
import glob
import subprocess
import sys

blenderExecutable = 'blender'

# allow override of blender executable (important for CI!)
if len(sys.argv) > 1:
    blenderExecutable = sys.argv[1]

# iterate over each *.test.blend file in the "tests" directory
# and open up blender with the .test.blend file and the corresponding .test.py python script
for file in glob.glob('./tests/**/*.test.blend'):
  # change 'io_xplane2blender' to match your addon
  subprocess.call([blenderExecutable, '--addons', 'blenderPolygons', '--factory-startup', '-noaudio', '-b', file, '--python', file.replace('.blend', '.py')])

.travis.yml

# this is essential to make python work out of the box
language: python

# Define which python version to build against.
# As blender comes bundled with it's own python you can use just one version if you like
python:
  - "3.5"

before_install:
  # update apt-gets repository sources
  - sudo apt-get update -qq

  # install blender from official sources.
  # This will most propably install an outdated blender version,
  # but it will resolve all system dependencies blender has to be able to run.
  - sudo apt-get install blender

install:
  # create temp directory where we store a recent blender version
  - mkdir tmp && cd tmp

  # download the blender version you want to test against
  - wget http://download.blender.org/release/Blender2.78/blender-2.78c-linux-glibc219-x86_64.tar.bz2

  # Extract the archive
  - tar jxf blender-2.78c-linux-glibc219-x86_64.tar.bz2

  # rename the extracted folder to "blender" for easier reference
  - mv blender-2.78c-linux-glibc211-x86_64 blender

  # remove the archive, we do not need it anymore
  - rm blender-2.78c-linux-glibc211-x86_64.tar.bz2

  # go back to root directory
  - cd ..

  # now create a symlink to the addon within blenders addons directory
  # this is important, because otherwhise blender would not be able to load the addon
  - sudo ln -s ${PWD}/blenderPolygons ${PWD}/tmp/blender/2.78/scripts/addons/blenderPolygons

# Finally start our test runner passing it the blender executable from the downloaded blender release
script: python tests.py ./tmp/blender/blender