mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-11-03 20:55:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			141 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
DATABASE=./storage/database/database.sqlite
 | 
						|
DATABASECOPY=./storage/database/databasecopy.sqlite
 | 
						|
ORIGINALENV=./.env
 | 
						|
BACKUPENV=./.env.current
 | 
						|
TESTINGENV=./.env.testing
 | 
						|
 | 
						|
# do something with flags:
 | 
						|
resetTestFlag=''
 | 
						|
testflag=''
 | 
						|
coverageflag=''
 | 
						|
 | 
						|
featureflag=''
 | 
						|
featuretestclass=''
 | 
						|
 | 
						|
unitflag=''
 | 
						|
unittestclass=''
 | 
						|
 | 
						|
verbalflag=''
 | 
						|
testsuite=''
 | 
						|
configfile='phpunit.xml';
 | 
						|
 | 
						|
while getopts 'vcrtf:u:s:' flag; do
 | 
						|
  case "${flag}" in
 | 
						|
    r)
 | 
						|
        resetTestFlag='true'
 | 
						|
    ;;
 | 
						|
    t)
 | 
						|
        testflag='true'
 | 
						|
    ;;
 | 
						|
    c)
 | 
						|
        coverageflag='true'
 | 
						|
        configfile='phpunit.coverage.xml';
 | 
						|
    ;;
 | 
						|
    v)
 | 
						|
        verbalflag=' -v --debug'
 | 
						|
        echo "Will be verbal about it"
 | 
						|
    ;;
 | 
						|
    f)
 | 
						|
        featureflag='true'
 | 
						|
        featuretestclass=./tests/Feature/$OPTARG
 | 
						|
        echo "Will only run Feature test $OPTARG"
 | 
						|
    ;;
 | 
						|
    u)
 | 
						|
        unitflag='true'
 | 
						|
        unittestclass=./tests/Unit/$OPTARG
 | 
						|
        echo "Will only run Unit test $OPTARG"
 | 
						|
    ;;
 | 
						|
    s)
 | 
						|
        testsuite="--testsuite $OPTARG"
 | 
						|
        echo "Will only run test suite '$OPTARG'"
 | 
						|
    ;;
 | 
						|
    *) error "Unexpected option ${flag}" ;;
 | 
						|
  esac
 | 
						|
done
 | 
						|
 | 
						|
if [[ $coverageflag == "true" && ($featureflag == "true" || $unitflag == "true") ]]
 | 
						|
then
 | 
						|
    echo "Use config file specific.xml"
 | 
						|
    configfile='phpunit.coverage.specific.xml'
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
# backup current config (if it exists):
 | 
						|
if [ -f $ORIGINALENV ]; then
 | 
						|
    mv $ORIGINALENV $BACKUPENV
 | 
						|
fi
 | 
						|
 | 
						|
# enable testing config
 | 
						|
cp $TESTINGENV $ORIGINALENV
 | 
						|
 | 
						|
# reset database (optional)
 | 
						|
if [[ $resetTestFlag == "true" ]]
 | 
						|
then
 | 
						|
    echo "Must reset database"
 | 
						|
 | 
						|
    # touch files to make sure they exist.
 | 
						|
    touch $DATABASE
 | 
						|
    touch $DATABASECOPY
 | 
						|
 | 
						|
    # truncate original database file
 | 
						|
    truncate $DATABASE --size 0
 | 
						|
 | 
						|
    # run migration
 | 
						|
    php artisan migrate:refresh --seed
 | 
						|
 | 
						|
    # call test data generation script
 | 
						|
    $(which php) /sites/FF3/test-data/artisan generate:data local sqlite
 | 
						|
 | 
						|
    # also run upgrade routine:
 | 
						|
    $(which php) /sites/FF3/firefly-iii/artisan firefly:upgrade-database
 | 
						|
 | 
						|
    # copy new database over backup (resets backup)
 | 
						|
    cp $DATABASE $DATABASECOPY
 | 
						|
 | 
						|
    # copy new database to test-data repository:
 | 
						|
    cp $DATABASE /sites/FF3/test-data/storage/database.sqlite
 | 
						|
fi
 | 
						|
 | 
						|
# do not reset database (optional)
 | 
						|
if [[ $resetTestFlag == "" ]]
 | 
						|
then
 | 
						|
    echo "Will not reset database"
 | 
						|
fi
 | 
						|
 | 
						|
echo "Copy test database over original"
 | 
						|
# take database from copy:
 | 
						|
cp $DATABASECOPY $DATABASE
 | 
						|
 | 
						|
echo "clear caches and what-not.."
 | 
						|
php artisan cache:clear
 | 
						|
php artisan config:clear
 | 
						|
php artisan route:clear
 | 
						|
php artisan twig:clean
 | 
						|
php artisan view:clear
 | 
						|
 | 
						|
# run PHPUnit
 | 
						|
if [[ $testflag == "" ]]
 | 
						|
then
 | 
						|
    echo "Must not run PHPUnit"
 | 
						|
else
 | 
						|
    echo "Must run PHPUnit"
 | 
						|
 | 
						|
    if [[ $coverageflag == "" ]]
 | 
						|
    then
 | 
						|
        echo "Must run PHPUnit without coverage:"
 | 
						|
 | 
						|
        echo "phpunit $verbalflag --configuration $configfile $featuretestclass $unittestclass $testsuite"
 | 
						|
        phpunit $verbalflag  --configuration $configfile $featuretestclass $unittestclass $testsuite
 | 
						|
    else
 | 
						|
        echo "Must run PHPUnit with coverage"
 | 
						|
        echo "phpunit $verbalflag --configuration $configfile $featuretestclass $unittestclass $testsuite"
 | 
						|
        phpunit $verbalflag --configuration $configfile $featuretestclass $unittestclass $testsuite
 | 
						|
    fi
 | 
						|
fi
 | 
						|
 | 
						|
# restore current config:
 | 
						|
if [ -f $BACKUPENV ]; then
 | 
						|
    mv $BACKUPENV $ORIGINALENV
 | 
						|
fi |