Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
package-validation.tests.ps1118 linesDownload Raw Back to linux
1# Copyright (c) Microsoft Corporation.2# Licensed under the MIT License.3 4Describe "Linux Package Name Validation" {5    BeforeAll {6        # Determine artifacts directory (GitHub Actions or Azure DevOps)7        $artifactsDir = if ($env:GITHUB_ACTIONS -eq 'true') {8            "$env:GITHUB_WORKSPACE/../packages"9        } else {10            $env:SYSTEM_ARTIFACTSDIRECTORY11        }12        13        if (-not $artifactsDir) {14            throw "Artifacts directory not found. GITHUB_WORKSPACE or SYSTEM_ARTIFACTSDIRECTORY must be set."15        }16        17        Write-Verbose "Artifacts directory: $artifactsDir" -Verbose18    }19    20    Context "RPM Package Names" {21        It "Should have valid RPM package names" {22            $rpmPackages = Get-ChildItem -Path $artifactsDir -Recurse -Filter *.rpm -ErrorAction SilentlyContinue23            24            $rpmPackages.Count | Should -BeGreaterThan 0 -Because "At least one RPM package should exist in the artifacts directory"25            26            $invalidPackages = @()27            # Regex pattern for valid RPM package names.28            # Breakdown:29            # ^powershell\-           : Starts with 'powershell-'30            # (preview-|lts-)?        : Optionally 'preview-' or 'lts-'31            # \d+\.\d+\.\d+           : Version number (e.g., 7.6.0)32            # (_[a-z]*\.\d+)?         : Optional underscore, letters, dot, and digits (e.g., _alpha.1)33            # -1\.                    : Literal '-1.'34            # (preview\.\d+\.)?       : Optional 'preview.' and digits, followed by a dot35            # (rh|cm)\.               : Either 'rh.' or 'cm.'36            # (x86_64|aarch64)\.rpm$  : Architecture and file extension37            $rpmPackageNamePattern = 'powershell\-(preview-|lts-)?\d+\.\d+\.\d+(_[a-z]*\.\d+)?-1\.(preview\.\d+\.)?(rh|cm)\.(x86_64|aarch64)\.rpm'38 39            foreach ($package in $rpmPackages) {40                if ($package.Name -notmatch $rpmPackageNamePattern) {41                    $invalidPackages += "$($package.Name) is not a valid RPM package name"42                    Write-Warning "$($package.Name) is not a valid RPM package name"43                }44            }45            46            if ($invalidPackages.Count -gt 0) {47                throw ($invalidPackages | Out-String)48            }49        }50    }51    52    Context "DEB Package Names" {53        It "Should have valid DEB package names" {54            $debPackages = Get-ChildItem -Path $artifactsDir -Recurse -Filter *.deb -ErrorAction SilentlyContinue55            56            $debPackages.Count | Should -BeGreaterThan 0 -Because "At least one DEB package should exist in the artifacts directory"57            58            $invalidPackages = @()59            # Regex pattern for valid DEB package names.60            # Valid examples:61            # - powershell-preview_7.6.0-preview.6-1.deb_amd64.deb62            # - powershell-lts_7.4.13-1.deb_amd64.deb63            # - powershell_7.4.13-1.deb_amd64.deb64            # Breakdown:65            # ^powershell            : Starts with 'powershell'66            # (-preview|-lts)?       : Optionally '-preview' or '-lts'67            # _\d+\.\d+\.\d+         : Underscore followed by version number (e.g., _7.6.0)68            # (-[a-z]+\.\d+)?        : Optional dash, letters, dot, and digits (e.g., -preview.6)69            # -1                     : Literal '-1'70            # \.deb_                 : Literal '.deb_'71            # (amd64|arm64)          : Architecture72            # \.deb$                 : File extension73            $debPackageNamePattern = '^powershell(-preview|-lts)?_\d+\.\d+\.\d+(-[a-z]+\.\d+)?-1\.deb_(amd64|arm64)\.deb$'74 75            foreach ($package in $debPackages) {76                if ($package.Name -notmatch $debPackageNamePattern) {77                    $invalidPackages += "$($package.Name) is not a valid DEB package name"78                    Write-Warning "$($package.Name) is not a valid DEB package name"79                }80            }81            82            if ($invalidPackages.Count -gt 0) {83                throw ($invalidPackages | Out-String)84            }85        }86    }87    88    Context "Tar.Gz Package Names" {89        It "Should have valid tar.gz package names" {90            $tarPackages = Get-ChildItem -Path $artifactsDir -Recurse -Filter *.tar.gz -ErrorAction SilentlyContinue91            92            $tarPackages.Count | Should -BeGreaterThan 0 -Because "At least one tar.gz package should exist in the artifacts directory"93            94            $invalidPackages = @()95            foreach ($package in $tarPackages) {96                # Pattern matches: powershell-7.6.0-preview.6-linux-x64.tar.gz or powershell-7.6.0-linux-x64.tar.gz97                # Also matches various runtime configurations98                if ($package.Name -notmatch 'powershell-(lts-)?\d+\.\d+\.\d+\-([a-z]*.\d+\-)?(linux|osx|linux-musl)+\-(x64\-fxdependent|x64|arm32|arm64|x64\-musl-noopt\-fxdependent)\.(tar\.gz)') {99                    $invalidPackages += "$($package.Name) is not a valid tar.gz package name"100                    Write-Warning "$($package.Name) is not a valid tar.gz package name"101                }102            }103            104            if ($invalidPackages.Count -gt 0) {105                throw ($invalidPackages | Out-String)106            }107        }108    }109    110    Context "Package Existence" {111        It "Should find at least one package in artifacts directory" {112            $allPackages = Get-ChildItem -Path $artifactsDir -Recurse -Include *.rpm, *.tar.gz, *.deb -ErrorAction SilentlyContinue113            114            $allPackages.Count | Should -BeGreaterThan 0 -Because "At least one package should exist in the artifacts directory"115        }116    }117}118