tests: add run-tests script, plug it into travis
Also, replace subproces.call with a mockup, as notify-send is not available on travis.
This commit is contained in:
		
							parent
							
								
									5dfcf06ef4
								
							
						
					
					
						commit
						07be216a0d
					
				
							
								
								
									
										3
									
								
								.coveragerc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.coveragerc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
[run]
 | 
			
		||||
source = qubesagent
 | 
			
		||||
omit = qubesagent/test*
 | 
			
		||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -4,3 +4,5 @@ deb/*
 | 
			
		||||
*.pyo
 | 
			
		||||
*~
 | 
			
		||||
*.o
 | 
			
		||||
.coverage
 | 
			
		||||
*.egg-info
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								.travis.yml
									
									
									
									
									
								
							@ -1,6 +1,7 @@
 | 
			
		||||
sudo: required
 | 
			
		||||
dist: trusty
 | 
			
		||||
language: generic
 | 
			
		||||
language: python
 | 
			
		||||
python: '3.5'
 | 
			
		||||
install: git clone https://github.com/QubesOS/qubes-builder ~/qubes-builder
 | 
			
		||||
script: ~/qubes-builder/scripts/travis-build
 | 
			
		||||
env:
 | 
			
		||||
@ -8,3 +9,22 @@ env:
 | 
			
		||||
 - DISTS_VM=fc24 USE_QUBES_REPO_VERSION=3.2 USE_QUBES_REPO_TESTING=1
 | 
			
		||||
 - DISTS_VM=jessie USE_QUBES_REPO_VERSION=3.2 USE_QUBES_REPO_TESTING=1
 | 
			
		||||
 - DISTS_VM=stretch USE_QUBES_REPO_VERSION=3.2 USE_QUBES_REPO_TESTING=1
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  include:
 | 
			
		||||
    - python: '3.5'
 | 
			
		||||
      install: pip install --quiet -r ci/requirements.txt
 | 
			
		||||
      env: TESTS_ONLY=1
 | 
			
		||||
      script:
 | 
			
		||||
       - ./run-tests
 | 
			
		||||
      after_success:
 | 
			
		||||
       - codecov
 | 
			
		||||
    - stage: deploy
 | 
			
		||||
      python: '3.5'
 | 
			
		||||
      env: DIST_DOM0=fc25 TESTS_ONLY=
 | 
			
		||||
      script: ~/qubes-builder/scripts/travis-deploy
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
branches:
 | 
			
		||||
  except:
 | 
			
		||||
    - /.*_.*/
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								ci/requirements.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ci/requirements.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
# WARNING: those requirements are used only for travis-ci.org
 | 
			
		||||
# they SHOULD NOT be used under normal conditions; use system package manager
 | 
			
		||||
docutils
 | 
			
		||||
pylint
 | 
			
		||||
codecov
 | 
			
		||||
python-daemon
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
import logging
 | 
			
		||||
import operator
 | 
			
		||||
from unittest import TestCase
 | 
			
		||||
from unittest.mock import patch
 | 
			
		||||
 | 
			
		||||
import qubesagent.firewall
 | 
			
		||||
 | 
			
		||||
@ -150,6 +151,11 @@ class TestIptablesWorker(TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(TestIptablesWorker, self).setUp()
 | 
			
		||||
        self.obj = IptablesWorker()
 | 
			
		||||
        self.subprocess_patch = patch('subprocess.call')
 | 
			
		||||
        self.subprocess_mock = self.subprocess_patch.start()
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        self.subprocess_patch.stop()
 | 
			
		||||
 | 
			
		||||
    def test_000_chain_for_addr(self):
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
@ -296,6 +302,11 @@ class TestNftablesWorker(TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(TestNftablesWorker, self).setUp()
 | 
			
		||||
        self.obj = NftablesWorker()
 | 
			
		||||
        self.subprocess_patch = patch('subprocess.call')
 | 
			
		||||
        self.subprocess_mock = self.subprocess_patch.start()
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        self.subprocess_patch.stop()
 | 
			
		||||
 | 
			
		||||
    def test_000_chain_for_addr(self):
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
@ -465,6 +476,12 @@ class TestFirewallWorker(TestCase):
 | 
			
		||||
                self.obj.qdb.entries[
 | 
			
		||||
                    '/qubes-firewall/{}/{}'.format(addr, key)] = value
 | 
			
		||||
 | 
			
		||||
        self.subprocess_patch = patch('subprocess.call')
 | 
			
		||||
        self.subprocess_mock = self.subprocess_patch.start()
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        self.subprocess_patch.stop()
 | 
			
		||||
 | 
			
		||||
    def test_read_rules(self):
 | 
			
		||||
        expected_rules1 = [
 | 
			
		||||
            {'proto': 'tcp', 'dstports': '80-80', 'action': 'drop'},
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								run-tests
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								run-tests
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
: "${PYTHON:=python3}"
 | 
			
		||||
: "${ROOTDIR:=.}"
 | 
			
		||||
: "${TESTPYTHONPATH:=$ROOTDIR/test-packages}"
 | 
			
		||||
 | 
			
		||||
PYTHONPATH="${TESTPYTHONPATH}:${PYTHONPATH}"
 | 
			
		||||
export PYTHONPATH
 | 
			
		||||
 | 
			
		||||
[ -r version ] || ln -s ${ROOTDIR}/version ./
 | 
			
		||||
[ -r setup.py ] || ln -s ${ROOTDIR}/setup.py ./
 | 
			
		||||
"${PYTHON}" ./setup.py egg_info --egg-base "${TESTPYTHONPATH}"
 | 
			
		||||
"${PYTHON}" -m coverage run -m unittest discover -p '*.py' -v "$@"
 | 
			
		||||
							
								
								
									
										0
									
								
								test-packages/qubesdb.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								test-packages/qubesdb.py
									
									
									
									
									
										Normal file
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user