pumuki 6.3.144 → 6.3.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -532,6 +532,23 @@ let text = "XCTAssertEqual(value, expected)"
|
|
|
532
532
|
assert.equal(hasSwiftXCTestAssertionUsage(ignored), false);
|
|
533
533
|
});
|
|
534
534
|
|
|
535
|
+
test('hasSwiftXCTestAssertionUsage excluye XCTest compatible con UI automation', () => {
|
|
536
|
+
const uiSource = `
|
|
537
|
+
import XCTest
|
|
538
|
+
|
|
539
|
+
final class BuyerCommerceUISmokeTests: XCTestCase {
|
|
540
|
+
func test_buyer_flow() {
|
|
541
|
+
let app = XCUIApplication()
|
|
542
|
+
app.launch()
|
|
543
|
+
XCTAssertTrue(app.buttons["Comprar"].exists)
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
`;
|
|
547
|
+
|
|
548
|
+
assert.equal(hasSwiftXCTestAssertionUsage(uiSource), false);
|
|
549
|
+
assert.equal(hasSwiftXCTUnwrapUsage(`${uiSource}\nlet value = try XCTUnwrap(optional)`), false);
|
|
550
|
+
});
|
|
551
|
+
|
|
535
552
|
test('hasSwiftXCTUnwrapUsage detecta XCTUnwrap real y evita strings', () => {
|
|
536
553
|
const source = `
|
|
537
554
|
let value = try XCTUnwrap(optionalValue)
|
|
@@ -767,6 +767,10 @@ export const hasSwiftMixedTestingFrameworksUsage = (source: string): boolean =>
|
|
|
767
767
|
};
|
|
768
768
|
|
|
769
769
|
export const hasSwiftXCTestAssertionUsage = (source: string): boolean => {
|
|
770
|
+
if (hasSwiftLegacyXCTestUiOrPerformanceUsage(source)) {
|
|
771
|
+
return false;
|
|
772
|
+
}
|
|
773
|
+
|
|
770
774
|
return (
|
|
771
775
|
collectSwiftRegexLines(source, /\bXCTAssert[A-Za-z0-9_]*\s*\(/).length > 0 ||
|
|
772
776
|
collectSwiftRegexLines(source, /\bXCTFail\s*\(/).length > 0
|
|
@@ -774,6 +778,10 @@ export const hasSwiftXCTestAssertionUsage = (source: string): boolean => {
|
|
|
774
778
|
};
|
|
775
779
|
|
|
776
780
|
export const hasSwiftXCTUnwrapUsage = (source: string): boolean => {
|
|
781
|
+
if (hasSwiftLegacyXCTestUiOrPerformanceUsage(source)) {
|
|
782
|
+
return false;
|
|
783
|
+
}
|
|
784
|
+
|
|
777
785
|
return collectSwiftRegexLines(source, /\bXCTUnwrap\s*\(/).length > 0;
|
|
778
786
|
};
|
|
779
787
|
|
|
@@ -4,6 +4,12 @@ This file tracks the active deterministic framework line used in this repository
|
|
|
4
4
|
Canonical release chronology lives in `CHANGELOG.md`.
|
|
5
5
|
This file keeps only the operational highlights and rollout notes that matter while running the framework.
|
|
6
6
|
|
|
7
|
+
### 2026-05-05 (v6.3.145)
|
|
8
|
+
|
|
9
|
+
- **RuralGo PUMUKI-INC-124:** `skills.ios.critical-test-quality` deja de bloquear tests XCTest de UI automation/performance cuando usan `XCUIApplication`, `XCTMetric` o `measure`.
|
|
10
|
+
- **Swift Testing sin regresión:** los unit/integration tests XCTest modernizables siguen bloqueados si incumplen el contrato; solo se respeta la compatibilidad explícita que `swift-testing-expert` permite para UI/performance.
|
|
11
|
+
- **Rollout:** publicar `pumuki@6.3.145`, repinear primero RuralGo y revalidar el smoke UI XCTest que estaba bloqueado.
|
|
12
|
+
|
|
7
13
|
### 2026-05-05 (v6.3.144)
|
|
8
14
|
|
|
9
15
|
- **RuralGo PUMUKI-INC-122:** `pumuki sdd evidence` serializa escrituras concurrentes del artefacto `.pumuki/artifacts/pumuki-evidence-v1.json` con lock local y rename atómico.
|
|
@@ -442,6 +442,10 @@ const isXCTestSource = (content: string): boolean => {
|
|
|
442
442
|
return /\bimport\s+XCTest\b/.test(content) || /\bXCTestCase\b/.test(content);
|
|
443
443
|
};
|
|
444
444
|
|
|
445
|
+
const isXCTestUiOrPerformanceCompatibilitySource = (content: string): boolean => {
|
|
446
|
+
return /\bXCUIApplication\b|\bXCTMetric\b|\bmeasure\s*(?:\(|\{)/.test(content);
|
|
447
|
+
};
|
|
448
|
+
|
|
445
449
|
const hasMakeSUTPattern = (content: string): boolean => /\bmakeSUT\s*\(/.test(content);
|
|
446
450
|
|
|
447
451
|
const hasTrackForMemoryLeaksPattern = (content: string): boolean =>
|
|
@@ -461,6 +465,9 @@ const toIosTestsQualityBlockingFinding = (params: {
|
|
|
461
465
|
if (!isXCTestSource(testFile.content)) {
|
|
462
466
|
continue;
|
|
463
467
|
}
|
|
468
|
+
if (isXCTestUiOrPerformanceCompatibilitySource(testFile.content)) {
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
464
471
|
const missingMarkers: string[] = [];
|
|
465
472
|
if (!hasMakeSUTPattern(testFile.content)) {
|
|
466
473
|
missingMarkers.push('makeSUT()');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.145",
|
|
4
4
|
"description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|