Skip to content

Commit 0891afd

Browse files
authored
test-features: the baseline state must be overwriteable (#1730)
1 parent f014c4b commit 0891afd

File tree

5 files changed

+38
-17
lines changed

5 files changed

+38
-17
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
vcpkg-fail-feature-cascades = fail
2+
vcpkg-fail-feature-cascades[cascade] = cascade
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
2+
message(FATAL_ERROR "This port does not build")
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "vcpkg-fail-feature-cascades",
3+
"version": "0",
4+
"features": {
5+
"cascade": {
6+
"description": "is always cascaded",
7+
"dependencies": [
8+
{
9+
"name": "vcpkg-self-cascade",
10+
"default-features": false,
11+
"features": [
12+
"never"
13+
]
14+
}
15+
]
16+
}
17+
}
18+
}

azure-pipelines/end-to-end-tests-dir/test-features.ps1

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,12 @@ $ciFeatureBaseline = "$PSScriptRoot/../e2e-assets/ci-feature-baseline/vcpkg-self
130130
Run-VcpkgAndCaptureOutput x-test-features @commonArgs $vcpkgSelfCascadePortsArg --all --ci-feature-baseline $ciFeatureBaseline
131131
Throw-IfFailed
132132

133+
# Ensure that the baseline without a feature can be overwritten by feature specific baselines.
134+
$ciFeatureBaseline = "$PSScriptRoot/../e2e-assets/ci-feature-baseline/vcpkg-fail-or-cascade.txt"
135+
$output = Run-VcpkgAndCaptureOutput x-test-features @commonArgs "--x-builtin-ports-root=$PSScriptRoot/../e2e-ports" vcpkg-fail-feature-cascades --ci-feature-baseline $ciFeatureBaseline
136+
Throw-IfFailed
137+
Throw-IfNonContains -Expected "All feature tests passed." -Actual $output
138+
133139
$vcpkgRequiresFeatureArg = New-TestPortsRootArg vcpkg-requires-feature vcpkg-fail-if-depended-upon
134140

135141
$output = Run-VcpkgAndCaptureOutput x-test-features @commonArgs $vcpkgRequiresFeatureArg vcpkg-requires-feature

src/vcpkg/ci-feature-baseline.cpp

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -339,21 +339,6 @@ namespace vcpkg
339339
{
340340
if (baseline)
341341
{
342-
if (auto pstate = baseline->state.get())
343-
{
344-
switch (pstate->value)
345-
{
346-
case CiFeatureBaselineState::Fail:
347-
return Located<CiFeatureBaselineOutcome>{pstate->loc, CiFeatureBaselineOutcome::PortMarkedFail};
348-
case CiFeatureBaselineState::Cascade:
349-
return Located<CiFeatureBaselineOutcome>{pstate->loc,
350-
CiFeatureBaselineOutcome::PortMarkedCascade};
351-
case CiFeatureBaselineState::Skip:
352-
case CiFeatureBaselineState::Pass: break;
353-
default: Checks::unreachable(VCPKG_LINE_INFO);
354-
}
355-
}
356-
357342
for (auto&& failing_configuration : baseline->fail_configurations)
358343
{
359344
if (std::is_permutation(failing_configuration.value.begin(),
@@ -392,9 +377,17 @@ namespace vcpkg
392377

393378
if (auto pstate = baseline->state.get())
394379
{
395-
if (pstate->value == CiFeatureBaselineState::Pass)
380+
switch (pstate->value)
396381
{
397-
return Located<CiFeatureBaselineOutcome>{SourceLoc{}, CiFeatureBaselineOutcome::ExplicitPass};
382+
case CiFeatureBaselineState::Fail:
383+
return Located<CiFeatureBaselineOutcome>{pstate->loc, CiFeatureBaselineOutcome::PortMarkedFail};
384+
case CiFeatureBaselineState::Cascade:
385+
return Located<CiFeatureBaselineOutcome>{pstate->loc,
386+
CiFeatureBaselineOutcome::PortMarkedCascade};
387+
case CiFeatureBaselineState::Skip: break;
388+
case CiFeatureBaselineState::Pass:
389+
return Located<CiFeatureBaselineOutcome>{SourceLoc{}, CiFeatureBaselineOutcome::ExplicitPass};
390+
default: Checks::unreachable(VCPKG_LINE_INFO);
398391
}
399392
}
400393
}

0 commit comments

Comments
 (0)