|
| 1 | +# Copyright (c) Microsoft Corporation. All rights reserved. |
| 2 | +# Licensed under the MIT License. |
| 3 | + |
| 4 | +$ErrorActionPreference = 'Stop' |
| 5 | +. (Join-Path $PSScriptRoot 'Sync-Versions.ps1') |
| 6 | + |
| 7 | +function Assert-Equal($Expected, $Actual) |
| 8 | +{ |
| 9 | + if ($Expected -cne $Actual) |
| 10 | + { |
| 11 | + throw "Expected '$Expected', got '$Actual'." |
| 12 | + } |
| 13 | +} |
| 14 | + |
| 15 | +$clientVersions = Read-Versions @' |
| 16 | +# Released version precedes the development version. |
| 17 | +com.azure:azure-core;1.2.3;1.3.0-beta.1 |
| 18 | +com.azure.v2:azure-client-sdk-parent;2.0.0-beta.2;2.0.0-beta.3 |
| 19 | +io.clientcore:core;1.0.0-beta.11;1.0.0-beta.12 |
| 20 | +'@ |
| 21 | +$externalVersions = Read-Versions @' |
| 22 | +com.azure:azure-core;0.9.0 |
| 23 | +testdep_net.bytebuddy:byte-buddy;1.17.7 |
| 24 | +org.mockito:mockito-core;5.0.0 |
| 25 | +'@ |
| 26 | +$packages = Read-Versions @' |
| 27 | +com.azure:azure-core |
| 28 | +com.azure.v2:azure-client-sdk-parent |
| 29 | +io.clientcore:core |
| 30 | +net.bytebuddy:byte-buddy |
| 31 | +org.mockito:mockito-core;4.11.0 |
| 32 | +'@ |
| 33 | +$versions = Resolve-Versions $packages @($clientVersions, $externalVersions) |
| 34 | +Assert-Equal '1.2.3' $versions['com.azure:azure-core'] |
| 35 | +Assert-Equal '1.0.0-beta.11' $versions['io.clientcore:core'] |
| 36 | +Assert-Equal '1.17.7' $versions['net.bytebuddy:byte-buddy'] |
| 37 | +Assert-Equal '4.11.0' $versions['org.mockito:mockito-core'] |
| 38 | + |
| 39 | +$failed = $false |
| 40 | +try |
| 41 | +{ |
| 42 | + Resolve-Versions (Read-Versions 'missing:dependency') @($clientVersions, $externalVersions) |
| 43 | +} |
| 44 | +catch |
| 45 | +{ |
| 46 | + if ($_.Exception.Message -notlike '*missing:dependency*') { throw } |
| 47 | + $failed = $true |
| 48 | +} |
| 49 | +Assert-Equal $true $failed |
| 50 | + |
| 51 | +$root = Join-Path ([System.IO.Path]::GetTempPath()) "java-version-sync-$([guid]::NewGuid())" |
| 52 | +try |
| 53 | +{ |
| 54 | + $generator = Join-Path $root 'generator' |
| 55 | + $module = Join-Path $generator 'http-client-generator-core' |
| 56 | + $resources = Join-Path $module 'src\main\resources' |
| 57 | + $javaDirectory = Join-Path $module 'src\main\java\com\microsoft\typespec\http\client\generator\core\model\projectmodel' |
| 58 | + $target = Join-Path $module 'target' |
| 59 | + $customization = Join-Path $generator 'http-client-generator-test\customization' |
| 60 | + foreach ($directory in @($resources, $javaDirectory, $target, $customization)) |
| 61 | + { |
| 62 | + $null = New-Item -ItemType Directory -Path $directory -Force |
| 63 | + } |
| 64 | + $pom = @' |
| 65 | +<project> |
| 66 | + <!-- <groupId>com.azure</groupId><artifactId>azure-core</artifactId><version>comment</version> --> |
| 67 | + <parent> |
| 68 | + <groupId>com.microsoft.typespec</groupId> |
| 69 | + <artifactId>typespec-java-generator</artifactId> |
| 70 | + <version>1.0.0-beta.1</version> |
| 71 | + </parent> |
| 72 | + <dependencies> |
| 73 | + <dependency> |
| 74 | + <groupId>com.azure</groupId> |
| 75 | + <!-- Keep this comment and the original formatting. --> |
| 76 | + <artifactId>azure-core</artifactId> |
| 77 | + <version>old</version> |
| 78 | + <exclusions> |
| 79 | + <exclusion><groupId>io.clientcore</groupId><artifactId>core</artifactId></exclusion> |
| 80 | + </exclusions> |
| 81 | + </dependency> |
| 82 | + <dependency> |
| 83 | + <groupId>unlisted</groupId><artifactId>library</artifactId><version>old</version> |
| 84 | + </dependency> |
| 85 | + <dependency> |
| 86 | + <groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>old</version> |
| 87 | + </dependency> |
| 88 | + </dependencies> |
| 89 | +</project> |
| 90 | +'@ |
| 91 | + $pom = $pom.Replace("`r`n", "`n").Replace("`n", "`r`n") |
| 92 | + $pomFiles = @( |
| 93 | + (Join-Path $generator 'pom.xml'), |
| 94 | + (Join-Path $module 'pom.xml'), |
| 95 | + (Join-Path $resources 'pom.xml'), |
| 96 | + (Join-Path $customization 'pom.xml') |
| 97 | + ) |
| 98 | + foreach ($file in $pomFiles + (Join-Path $target 'pom.xml')) |
| 99 | + { |
| 100 | + [System.IO.File]::WriteAllText($file, $pom) |
| 101 | + } |
| 102 | + $javaFile = Join-Path $javaDirectory 'Project.java' |
| 103 | + $java = " AZURE_CORE(`"com.azure`", `"azure-core`", `"old`"),`n" + |
| 104 | + " AZURE_CLIENT_SDK_PARENT_V2(`"com.azure.v2`", `"azure-client-sdk-parent`", `"old-v2`"),`n" + |
| 105 | + " CLIENTCORE(`"io.clientcore`", `"core`", `"old`");`n" |
| 106 | + [System.IO.File]::WriteAllText($javaFile, $java) |
| 107 | + |
| 108 | + Update-VersionFiles -Root $root -Versions $versions -WhatIf |
| 109 | + Assert-Equal $pom ([System.IO.File]::ReadAllText($pomFiles[0])) |
| 110 | + Assert-Equal $java ([System.IO.File]::ReadAllText($javaFile)) |
| 111 | + |
| 112 | + Update-VersionFiles -Root $root -Versions $versions |
| 113 | + $expected = $pom.Replace(" <version>old</version>", " <version>1.2.3</version>") |
| 114 | + $expected = $expected.Replace('<artifactId>mockito-core</artifactId><version>old</version>', |
| 115 | + '<artifactId>mockito-core</artifactId><version>4.11.0</version>') |
| 116 | + foreach ($file in $pomFiles) |
| 117 | + { |
| 118 | + Assert-Equal $expected ([System.IO.File]::ReadAllText($file)) |
| 119 | + } |
| 120 | + Assert-Equal $pom ([System.IO.File]::ReadAllText((Join-Path $target 'pom.xml'))) |
| 121 | + Assert-Equal ($java.Replace('"old"),', '"1.2.3"),').Replace('"old");', '"1.0.0-beta.11");').Replace('"old-v2"', '"2.0.0-beta.2"')) ` |
| 122 | + ([System.IO.File]::ReadAllText($javaFile)) |
| 123 | + |
| 124 | + $modified = (Get-Item $javaFile).LastWriteTimeUtc |
| 125 | + Update-VersionFiles -Root $root -Versions $versions |
| 126 | + Assert-Equal $modified (Get-Item $javaFile).LastWriteTimeUtc |
| 127 | + Write-Host 'Version sync tests passed.' |
| 128 | +} |
| 129 | +finally |
| 130 | +{ |
| 131 | + if (Test-Path -LiteralPath $root) |
| 132 | + { |
| 133 | + Remove-Item -LiteralPath $root -Recurse -Force |
| 134 | + } |
| 135 | +} |
0 commit comments