@@ -73,71 +73,51 @@ jobs:
73
73
}
74
74
Write-Host "Tests found at [$testsPath]"
75
75
76
- # First, check if the root tests folder contains configuration.ps1, .container.ps1 or .tests.ps1 files
77
- $hasTestFiles = Get-ChildItem -Path $testsPath -File -Recurse:$false | Where-Object {
78
- $_.Name -like '*.Configuration.ps1' -or
79
- $_.Name -like '*.Container.ps1' -or
80
- $_.Name -like '*.Tests.ps1'
81
- }
76
+ function Get-TestItemsFromFolder {
77
+ param ([string]$FolderPath)
78
+
79
+ $configFiles = Get-ChildItem -Path $FolderPath -File -Filter '*.Configuration.ps1'
80
+ if ($configFiles.Count -eq 1) {
81
+ return @($configFiles)
82
+ } elseif ($configFiles.Count -gt 1) {
83
+ throw "Multiple configuration files found in [$FolderPath]. Please separate configurations into different folders."
84
+ }
82
85
83
- # Define the test paths based on our findings
84
- $testsPaths = @()
85
- if ($hasTestFiles) {
86
- # If the tests folder directly contains test files, only use the root folder
87
- Write-Host "Test files found directly in tests folder. Using only the root tests folder."
88
- $testsPaths = @($testsPath)
89
- } else {
90
- # Otherwise, recursively search for subdirectories that might contain tests
91
- Write-Host "No test files found in root tests folder. Searching subdirectories..."
92
-
93
- # Helper function to find test directories recursively
94
- function Find-TestDirectories {
95
- param (
96
- [string]$Path
97
- )
98
-
99
- $directories = @()
100
- $childDirs = Get-ChildItem -Path $Path -Directory
101
-
102
- foreach ($dir in $childDirs) {
103
- # Check if this directory contains test files
104
- $hasTests = Get-ChildItem -Path $dir.FullName -File -Recurse:$false | Where-Object {
105
- $_.Name -like '*.Configuration.ps1' -or
106
- $_.Name -like '*.Container.ps1' -or
107
- $_.Name -like '*.Tests.ps1'
108
- }
86
+ $containerFiles = Get-ChildItem -Path $FolderPath -File -Filter '*.Container.ps1'
87
+ if ($containerFiles.Count -ge 1) {
88
+ return $containerFiles
89
+ }
109
90
110
- if ($hasTests) {
111
- $directories += $dir.FullName
112
- } else {
113
- # Recursively check subdirectories
114
- $directories += Find-TestDirectories -Path $dir.FullName
115
- }
116
- }
91
+ $testFiles = Get-ChildItem -Path $FolderPath -File -Filter '*.Tests.ps1'
92
+ return $testFiles
93
+ }
117
94
118
- return $directories
119
- }
95
+ function Find-TestDirectories {
96
+ param ([string]$Path)
120
97
121
- $testsPaths = Find-TestDirectories -Path $testsPath
98
+ $directories = @()
99
+ $childDirs = Get-ChildItem -Path $Path -Directory
122
100
123
- # If no test directories were found, default to the root tests folder
124
- if (-not $testsPaths) {
125
- Write-Host "No specific test directories found. Using the root tests folder."
126
- $testsPaths = @($testsPath)
127
- } else {
128
- Write-Host "Found test directories:"
129
- $testsPaths | ForEach-Object { Write-Host " - $_" }
101
+ foreach ($dir in $childDirs) {
102
+ $directories += $dir.FullName
103
+ $directories += Find-TestDirectories -Path $dir.FullName
130
104
}
105
+
106
+ return $directories
131
107
}
132
108
133
- # Build the test suites matrix.
134
- $testSuites = foreach ($folder in $testsPaths) {
135
- foreach ($osConfig in $osConfigs) {
136
- [pscustomobject]@{
137
- RunsOn = $osConfig.runson
138
- OSName = $osConfig.name
139
- TestFolderPath = Resolve-Path -Path $folder -Relative
140
- TestName = Split-Path -Path $folder -Leaf
109
+ $allTestFolders = @($testsPath) + (Find-TestDirectories -Path $testsPath)
110
+
111
+ $testSuites = foreach ($folder in $allTestFolders) {
112
+ $testItems = Get-TestItemsFromFolder -FolderPath $folder
113
+ foreach ($item in $testItems) {
114
+ foreach ($osConfig in $osConfigs) {
115
+ [pscustomobject]@{
116
+ RunsOn = $osConfig.runson
117
+ OSName = $osConfig.name
118
+ TestPath = Resolve-Path -Path $item.FullName -Relative
119
+ TestName = $item.BaseName
120
+ }
141
121
}
142
122
}
143
123
}
0 commit comments