Travis testing (WIP) - s-leger/archipack GitHub Wiki
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