Skip to content

Commit ad9da35

Browse files
niheavense35710
authored andcommitted
fix(depends): Keep bucket in 'Get-Dependency()' (ScoopInstaller#4673)
1 parent 9accb38 commit ad9da35

3 files changed

Lines changed: 95 additions & 55 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
### Code Refactoring
2525

2626
- **depends:** Rewrite 'depends.ps1' ([#4638](https://github.com/ScoopInstaller/Scoop/issues/4638))
27+
- **depends:** Keep bucket in 'Get-Dependency()' ([#4673](https://github.com/ScoopInstaller/Scoop/issues/4673))
2728

2829
### Builds
2930

lib/depends.ps1

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,11 @@ function Get-Dependency {
5555
}
5656

5757
$Unresolved = $Unresolved -ne $AppName
58-
$Resolved += $AppName
58+
if ($bucket) {
59+
$Resolved += "$bucket/$AppName"
60+
} else {
61+
$Resolved += $AppName
62+
}
5963
if ($Unresolved.Length -eq 0) {
6064
return $Resolved
6165
} else {
@@ -95,16 +99,10 @@ function Get-InstallationHelper {
9599
}
96100
process {
97101
$url = arch_specific 'url' $Manifest $Architecture
98-
if (!$url) {
99-
$url = ''
100-
}
101102
$pre_install = arch_specific 'pre_install' $Manifest $Architecture
102103
$installer = arch_specific 'installer' $Manifest $Architecture
103104
$post_install = arch_specific 'post_install' $Manifest $Architecture
104105
$script = $pre_install + $installer.script + $post_install
105-
if (!$script) {
106-
$script = ''
107-
}
108106
if (((Test-7zipRequirement -Uri $url) -or ($script -like '*Expand-7zipArchive *')) -and !(get_config 7ZIPEXTRACT_USE_EXTERNAL)) {
109107
$helper += '7zip'
110108
}
@@ -138,6 +136,7 @@ function Test-7zipRequirement {
138136
[OutputType([Boolean])]
139137
param (
140138
[Parameter(Mandatory = $true)]
139+
[AllowNull()]
141140
[String[]]
142141
$Uri
143142
)
@@ -151,6 +150,7 @@ function Test-ZstdRequirement {
151150
[OutputType([Boolean])]
152151
param (
153152
[Parameter(Mandatory = $true)]
153+
[AllowNull()]
154154
[String[]]
155155
$Uri
156156
)
@@ -162,6 +162,7 @@ function Test-LessmsiRequirement {
162162
[OutputType([Boolean])]
163163
param (
164164
[Parameter(Mandatory = $true)]
165+
[AllowNull()]
165166
[String[]]
166167
$Uri
167168
)

test/Scoop-Depends.Tests.ps1

Lines changed: 86 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,56 +3,94 @@
33
. "$psscriptroot\..\lib\install.ps1"
44
. "$psscriptroot\..\lib\manifest.ps1"
55

6-
Describe 'Requirement function' -Tag 'Scoop' {
7-
It 'Test 7zip requirement' {
8-
Test-7zipRequirement -Uri 'test.xz' | Should -BeTrue
9-
Test-7zipRequirement -Uri 'test.bin' | Should -BeFalse
10-
Test-7zipRequirement -Uri @('test.xz', 'test.bin') | Should -BeTrue
6+
Describe 'Package Dependencies' -Tag 'Scoop' {
7+
Context 'Requirement function' {
8+
It 'Test 7zip requirement' {
9+
Test-7zipRequirement -Uri 'test.xz' | Should -BeTrue
10+
Test-7zipRequirement -Uri 'test.bin' | Should -BeFalse
11+
Test-7zipRequirement -Uri @('test.xz', 'test.bin') | Should -BeTrue
12+
}
13+
It 'Test Zstd requirement' {
14+
Test-ZstdRequirement -Uri 'test.zst' | Should -BeTrue
15+
Test-ZstdRequirement -Uri 'test.bin' | Should -BeFalse
16+
Test-ZstdRequirement -Uri @('test.zst', 'test.bin') | Should -BeTrue
17+
}
18+
It 'Test lessmsi requirement' {
19+
Mock get_config { $true }
20+
Test-LessmsiRequirement -Uri 'test.msi' | Should -BeTrue
21+
Test-LessmsiRequirement -Uri 'test.bin' | Should -BeFalse
22+
Test-LessmsiRequirement -Uri @('test.msi', 'test.bin') | Should -BeTrue
23+
}
24+
It 'Allow $Uri be $null' {
25+
Test-7zipRequirement -Uri $null | Should -BeFalse
26+
Test-ZstdRequirement -Uri $null | Should -BeFalse
27+
Test-LessmsiRequirement -Uri $null | Should -BeFalse
28+
}
1129
}
12-
It 'Test Zstd requirement' {
13-
Test-ZstdRequirement -Uri 'test.zst' | Should -BeTrue
14-
Test-ZstdRequirement -Uri 'test.bin' | Should -BeFalse
15-
Test-ZstdRequirement -Uri @('test.zst', 'test.bin') | Should -BeTrue
16-
}
17-
It 'Test lessmsi requirement' {
18-
Mock get_config { $true }
19-
Test-LessmsiRequirement -Uri 'test.msi' | Should -BeTrue
20-
Test-LessmsiRequirement -Uri 'test.bin' | Should -BeFalse
21-
Test-LessmsiRequirement -Uri @('test.msi', 'test.bin') | Should -BeTrue
22-
}
23-
}
2430

25-
Describe 'InstallationHelper function' -Tag 'Scoop' {
26-
BeforeAll {
27-
$working_dir = setup_working 'format/formated'
28-
$manifest1 = parse_json (Join-Path $working_dir '3-array-with-single-and-multi.json')
29-
$manifest2 = parse_json (Join-Path $working_dir '4-script-block.json')
30-
Mock Test-HelperInstalled { $false }
31-
}
32-
It 'Get helpers from URL' {
33-
Mock get_config { $true }
34-
Get-InstallationHelper -Manifest $manifest1 -Architecture '32bit' | Should -Be @('lessmsi')
31+
Context 'InstallationHelper function' {
32+
BeforeAll {
33+
$working_dir = setup_working 'format/formated'
34+
$manifest1 = parse_json (Join-Path $working_dir '3-array-with-single-and-multi.json')
35+
$manifest2 = parse_json (Join-Path $working_dir '4-script-block.json')
36+
Mock Test-HelperInstalled { $false }
37+
}
38+
It 'Get helpers from URL' {
39+
Mock get_config { $true }
40+
Get-InstallationHelper -Manifest $manifest1 -Architecture '32bit' | Should -Be @('lessmsi')
41+
}
42+
It 'Get helpers from script' {
43+
Mock get_config { $false }
44+
Get-InstallationHelper -Manifest $manifest2 -Architecture '32bit' | Should -Be @('7zip')
45+
}
46+
It 'Helpers reflect config changes' {
47+
Mock get_config { $false } -ParameterFilter { $name -eq 'MSIEXTRACT_USE_LESSMSI' }
48+
Mock get_config { $true } -ParameterFilter { $name -eq '7ZIPEXTRACT_USE_EXTERNAL' }
49+
Get-InstallationHelper -Manifest $manifest1 -Architecture '32bit' | Should -BeNullOrEmpty
50+
Get-InstallationHelper -Manifest $manifest2 -Architecture '32bit' | Should -BeNullOrEmpty
51+
}
52+
It 'Not return installed helpers' {
53+
Mock get_config { $true } -ParameterFilter { $name -eq 'MSIEXTRACT_USE_LESSMSI' }
54+
Mock get_config { $false } -ParameterFilter { $name -eq '7ZIPEXTRACT_USE_EXTERNAL' }
55+
Mock Test-HelperInstalled { $true }-ParameterFilter { $Helper -eq '7zip' }
56+
Mock Test-HelperInstalled { $false }-ParameterFilter { $Helper -eq 'Lessmsi' }
57+
Get-InstallationHelper -Manifest $manifest1 -Architecture '32bit' | Should -Be @('lessmsi')
58+
Get-InstallationHelper -Manifest $manifest2 -Architecture '32bit' | Should -BeNullOrEmpty
59+
Mock Test-HelperInstalled { $false }-ParameterFilter { $Helper -eq '7zip' }
60+
Mock Test-HelperInstalled { $true }-ParameterFilter { $Helper -eq 'Lessmsi' }
61+
Get-InstallationHelper -Manifest $manifest1 -Architecture '32bit' | Should -BeNullOrEmpty
62+
Get-InstallationHelper -Manifest $manifest2 -Architecture '32bit' | Should -Be @('7zip')
63+
}
3564
}
36-
It 'Get helpers from script' {
37-
Mock get_config { $false }
38-
Get-InstallationHelper -Manifest $manifest2 -Architecture '32bit' | Should -Be @('7zip')
39-
}
40-
It 'Helpers reflect config changes' {
41-
Mock get_config { $false } -ParameterFilter { $name -eq 'MSIEXTRACT_USE_LESSMSI' }
42-
Mock get_config { $true } -ParameterFilter { $name -eq '7ZIPEXTRACT_USE_EXTERNAL' }
43-
Get-InstallationHelper -Manifest $manifest1 -Architecture '32bit' | Should -BeNullOrEmpty
44-
Get-InstallationHelper -Manifest $manifest2 -Architecture '32bit' | Should -BeNullOrEmpty
45-
}
46-
It 'Not return installed helpers' {
47-
Mock get_config { $true } -ParameterFilter { $name -eq 'MSIEXTRACT_USE_LESSMSI' }
48-
Mock get_config { $false } -ParameterFilter { $name -eq '7ZIPEXTRACT_USE_EXTERNAL' }
49-
Mock Test-HelperInstalled { $true }-ParameterFilter { $Helper -eq '7zip' }
50-
Mock Test-HelperInstalled { $false }-ParameterFilter { $Helper -eq 'Lessmsi' }
51-
Get-InstallationHelper -Manifest $manifest1 -Architecture '32bit' | Should -Be @('lessmsi')
52-
Get-InstallationHelper -Manifest $manifest2 -Architecture '32bit' | Should -BeNullOrEmpty
53-
Mock Test-HelperInstalled { $false }-ParameterFilter { $Helper -eq '7zip' }
54-
Mock Test-HelperInstalled { $true }-ParameterFilter { $Helper -eq 'Lessmsi' }
55-
Get-InstallationHelper -Manifest $manifest1 -Architecture '32bit' | Should -BeNullOrEmpty
56-
Get-InstallationHelper -Manifest $manifest2 -Architecture '32bit' | Should -Be @('7zip')
65+
66+
Context 'Dependencies resolution' {
67+
BeforeAll {
68+
Mock Test-HelperInstalled { $false }
69+
Mock get_config { $true } -ParameterFilter { $name -eq 'MSIEXTRACT_USE_LESSMSI' }
70+
Mock Find-Manifest { $null, @{}, $null, $null } -ParameterFilter { $AppName -eq 'lessmsi' }
71+
Mock Find-Manifest { $null, @{ url = 'test.msi' }, $null, $null } -ParameterFilter { $AppName -eq '7zip' }
72+
Mock Find-Manifest { $null, @{}, $null, $null } -ParameterFilter { $AppName -eq 'innounp' }
73+
}
74+
75+
It 'Resolve install dependencies' {
76+
Mock Find-Manifest { $null, @{ url = 'test.7z' }, $null, $null }
77+
Get-Dependency -AppName 'test' -Architecture '32bit' | Should -Be @('lessmsi', '7zip', 'test')
78+
Mock Find-Manifest { $null, @{ innosetup = $true }, $null, $null }
79+
Get-Dependency -AppName 'test' -Architecture '32bit' | Should -Be @('innounp', 'test')
80+
}
81+
It 'Resolve script dependencies' {
82+
Mock Find-Manifest { $null, @{ pre_install = 'Expand-7zipArchive ' }, $null, $null }
83+
Get-Dependency -AppName 'test' -Architecture '32bit' | Should -Be @('lessmsi', '7zip', 'test')
84+
}
85+
It 'Resolve runtime dependencies' {
86+
Mock Find-Manifest { $null, @{}, $null, $null } -ParameterFilter { $AppName -eq 'depends' }
87+
Mock Find-Manifest { $null, @{ depends = 'depends' }, $null, $null }
88+
Get-Dependency -AppName 'test' -Architecture '32bit' | Should -Be @('depends', 'test')
89+
}
90+
It 'Keep bucket name of app' {
91+
Mock Find-Manifest { $null, @{}, $null, $null } -ParameterFilter { $AppName -eq 'bucket/depends' }
92+
Mock Find-Manifest { $null, @{ depends = 'bucket/depends' }, $null, $null }
93+
Get-Dependency -AppName 'anotherbucket/test' -Architecture '32bit' | Should -Be @('bucket/depends', 'anotherbucket/test')
94+
}
5795
}
5896
}

0 commit comments

Comments
 (0)