Tests/PSModuleBuilder.Integration.ps1

function Get-StatusOfThings {
  param([string]$path, [string]$module="")

  Write-Host @"
 
  *******
  * Module $module Contents:
  *
"@


  Get-ChildItem "$path\$module" | Foreach-Object {
    
    Write-Host " * - $($_.FullName)"
    
    If (Test-Path $_.FullName -PathType Container){
      Get-ChildItem $_.FullName | %{ Write-Host " * - $($_.Name)" }
    }
    
  }

  Write-Host @"
  *
  *******
 
"@

}

function Show-Everything {
    param([string]$path, [string]$module="")

  Get-ChildItem "$path\$module" -Recurse -Depth 3 | Foreach-Object {

    If (Test-Path $_.FullName -PathType Container){
      Write-Host @"
 
    Inside of $($_.Name)/ Directory...
 
"@

    }

    Write-Host @"
 
    *******
    * File $($_.BaseName)\$($_.Name) Contents:
    *
"@


    Get-Content $_.FullName
    
    Write-Host @"
    *
    *******
 
"@

    
  }
}

Write-Host @"
 
**********************************
Starting the create phase...
**********************************
 
"@

return
Write-Host "Importing Public function files..."
Get-ChildItem "$PSscriptRoot\..\Public\" -Exclude "*.Tests.ps1" | Foreach-Object {
  . $_.FullName
}

Write-Host "Getting the default module builder path..."
$mbPath = Get-PsModuleBuilderPath
Write-Host "PsModuleBuilderPath: $mbPath"

Write-Host "Setting the module builder path to an accessible location..."
New-Item -Path "IntegrationTesting\Modules" -ItemType Directory -Force | Out-Null
Set-PsModuleBuilderPath "IntegrationTesting\Modules"

Write-Host "Getting the newly set module builder path..."
$mbPath = Get-PsModuleBuilderPath
Write-Host "PsModuleBuilderPath: $mbPath"

Get-StatusOfThings $mbPath

$module = "IntegrationTestModule"
Write-Host "WhatIf: Creating new module $module..."
New-PsModule $module -WhatIf

Write-Host "Creating new module $module..."
New-PsModule $module
Get-StatusOfThings $mbPath $module

$func = "Write-IntegrationStuff"
Write-Host "WhatIf: Creating new function in for $($module): $func..."
New-PsFunction $module $func "Public" -WhatIf

Write-Host "Creating new function in for $($module): $func..."
New-PsFunction $module $func "Public"
Get-StatusOfThings $mbPath $module

$funcInternal = "Write-InternalIntegrationStuff"
Write-Host "WhatIf: Creating new internal function in for $($module): $funcInternal..."
New-PsFunction $module $funcInternal "Internal" -WhatIf

Write-Host "Creating new internal function in for $($module): $funcInternal..."
New-PsFunction $module $funcInternal "Internal"
Get-StatusOfThings $mbPath $module

$scriptName = "Write-ScriptStuff"
Write-Host "WhatIf: Creating new script: $scriptName..."
New-PsScript $scriptName -WhatIf

Write-Host "Creating new script: $scriptName..."
New-PsScript $scriptName
Get-StatusOfThings $mbPath $module

Write-Host @"
 
**********************************
Show Everything...
**********************************
 
"@


# Show-Everything $mbPath $module

Write-Host @"
 
**********************************
Starting the clean up phase...
**********************************
 
"@


Get-StatusOfThings $mbPath $module

Write-Host "WhatIf: Removing function in for $($module): $func..."
Remove-PsFunction $module $func -WhatIf

Write-Host "Removing function in for $($module): $func..."
Remove-PsFunction $module $func
Get-StatusOfThings $mbPath $module

Write-Host "WhatIf: Removing internal function in for $($module): $funcInternal..."
Remove-PsFunction $module $funcInternal -WhatIf

Write-Host "Removing internal function in for $($module): $funcInternal..."
Remove-PsFunction $module $funcInternal
Get-StatusOfThings $mbPath $module

Write-Host "WhatIf: Removing new module $module..."
Remove-PsModule $module -WhatIf

Write-Host "Removing new module $module..."
Remove-PsModule $module
Get-StatusOfThings $mbPath

# Write-Host "WhatIf: Removing script: $scriptName..."
# Remove-PsScript $scriptName -WhatIf

# Write-Host "Removing script: $scriptName..."
# Remove-PsScript $scriptName
# Get-StatusOfThings $mbPath $module

Write-Host @"
 
**********************************
Finished the script!
**********************************
 
"@