AL/Test-AppJsonFile.ps1

function Test-AppJsonFile {
    param (
        # Source path of app code
        [Parameter(Mandatory=$false)]
        [string]
        $SourcePath = (Get-Location),
        # Do not throw an error
        [Parameter(Mandatory=$false)]
        [switch]
        $SuppressError
    )
    
    $TestDependencyExists = $null -ne (Get-AppKeyValue $SourcePath 'test')
    foreach($testapp in (Get-EnvironmentKeyValue $SourcePath 'testapps'))
    {
        if($null -ne (Get-AppKeyValue $SourcePath 'dependencies' | Where-Object appId -eq $testapp.appId)){
            $TestDependencyExists = $true
            break
        }        
    }
    if (!$TestDependencyExists){
        $TestDependencyExists = $null -ne (Get-AppKeyValue $SourcePath 'dependencies' | Where-Object {
            ($_.publisher -eq 'Microsoft') -and ($_.name -eq 'Tests-TestLibraries' -or $_.name -eq 'Library Assert')})
    }

    if ($TestDependencyExists) {
        if ($SuppressError.IsPresent) {
            return $false
        }
        else {
            throw 'app.json contains test dependencies'
        }
    }

    return $true
}