I am writing a python script that is used for continuous integration and test that will be called by bitten. Our unit tests use the google test framework. Each software component has a bash script that runs configuration and other required services and runs the gtest executable. The python script walks the repository looking for the bash scripts, and calls each script using the os.popen() command.
Python script (UnitTest.py)
#!/usr/bin/python
import os
import fnmatch
import sys
import subprocess
repository_location = '/home/actuv/workspace/eclipse/iccs/'
unit_test_script_name = 'RunUnitTests.sh'
def file_locator(repo, script_name):
# Function for determining all unit test scripts
test_location = []
for root, dirnames, filenames in os.walk(repo):
for filename in fnmatch.filter(filenames, script_name):
test_location.append(os.path.join(root))
return test_location
def run_tests(test_locations, script_name):
# Runs test scripts located at each test location
for tests in test_locations:
cmd = 'cd ' + tests + ';./' + script_name
print 'Running Unit Test at: ' + tests
os.popen(cmd)
################ MAIN ################
# Find Test Locations
script_locations = file_locator(repository_location, unit_test_script_name)
# Run tests located at each location
run_tests(script_locations)
# End of tests
sys.exit(0)
Bash Script
#!/bin/sh
echo "Running unit tests..."
# update the LD_LIBRARY_PATH to include paths to our shared libraries
# start the test server
# Run the tests
# wait to allow all processes to end before terminating the server
sleep 10s
When I run the bash script manually from a terminal window, it runs fine. When I have the python script call the bash script I get a segmentation fault on the TestSingleClient and TestMultiClientLA lines of the bash script.
Try replacing
with