@invarn/cibuild 1.3.16 → 1.3.18

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.
Files changed (242) hide show
  1. package/dist/cli.cjs +1 -1
  2. package/dist/src/cli.d.ts +3 -0
  3. package/dist/src/cli.d.ts.map +1 -0
  4. package/dist/src/cli.js +987 -0
  5. package/dist/src/commands/android-scanner.d.ts +32 -0
  6. package/dist/src/commands/android-scanner.d.ts.map +1 -0
  7. package/dist/src/commands/android-scanner.js +667 -0
  8. package/dist/src/commands/build.d.ts +5 -0
  9. package/dist/src/commands/build.d.ts.map +1 -0
  10. package/dist/src/commands/build.js +1096 -0
  11. package/dist/src/commands/edit.d.ts +3 -0
  12. package/dist/src/commands/edit.d.ts.map +1 -0
  13. package/dist/src/commands/edit.js +651 -0
  14. package/dist/src/commands/file-secret-collector.d.ts +37 -0
  15. package/dist/src/commands/file-secret-collector.d.ts.map +1 -0
  16. package/dist/src/commands/file-secret-collector.js +199 -0
  17. package/dist/src/commands/github-workflow.d.ts +5 -0
  18. package/dist/src/commands/github-workflow.d.ts.map +1 -0
  19. package/dist/src/commands/github-workflow.js +45 -0
  20. package/dist/src/commands/ios-scanner.d.ts +27 -0
  21. package/dist/src/commands/ios-scanner.d.ts.map +1 -0
  22. package/dist/src/commands/ios-scanner.js +337 -0
  23. package/dist/src/commands/reset.d.ts +7 -0
  24. package/dist/src/commands/reset.d.ts.map +1 -0
  25. package/dist/src/commands/reset.js +81 -0
  26. package/dist/src/commands/secrets-sync-workflow.d.ts +15 -0
  27. package/dist/src/commands/secrets-sync-workflow.d.ts.map +1 -0
  28. package/dist/src/commands/secrets-sync-workflow.js +255 -0
  29. package/dist/src/commands/secrets-upload.d.ts +21 -0
  30. package/dist/src/commands/secrets-upload.d.ts.map +1 -0
  31. package/dist/src/commands/secrets-upload.js +177 -0
  32. package/dist/src/commands/secrets-upload.test.d.ts +5 -0
  33. package/dist/src/commands/secrets-upload.test.d.ts.map +1 -0
  34. package/dist/src/commands/secrets-upload.test.js +60 -0
  35. package/dist/src/config.d.ts +3 -0
  36. package/dist/src/config.d.ts.map +1 -0
  37. package/dist/src/config.js +47 -0
  38. package/dist/src/envman/cli.d.ts +21 -0
  39. package/dist/src/envman/cli.d.ts.map +1 -0
  40. package/dist/src/envman/cli.js +240 -0
  41. package/dist/src/envman/envman.d.ts +83 -0
  42. package/dist/src/envman/envman.d.ts.map +1 -0
  43. package/dist/src/envman/envman.js +361 -0
  44. package/dist/src/envman/envman.test.d.ts +5 -0
  45. package/dist/src/envman/envman.test.d.ts.map +1 -0
  46. package/dist/src/envman/envman.test.js +236 -0
  47. package/dist/src/envman/index.d.ts +23 -0
  48. package/dist/src/envman/index.d.ts.map +1 -0
  49. package/dist/src/envman/index.js +23 -0
  50. package/dist/src/envman/types.d.ts +55 -0
  51. package/dist/src/envman/types.d.ts.map +1 -0
  52. package/dist/src/envman/types.js +12 -0
  53. package/dist/src/lib.d.ts +27 -0
  54. package/dist/src/lib.d.ts.map +1 -0
  55. package/dist/src/lib.js +32 -0
  56. package/dist/src/pipeline.d.ts +3 -0
  57. package/dist/src/pipeline.d.ts.map +1 -0
  58. package/dist/src/pipeline.js +57 -0
  59. package/dist/src/runner.d.ts +17 -0
  60. package/dist/src/runner.d.ts.map +1 -0
  61. package/dist/src/runner.js +234 -0
  62. package/dist/src/types.d.ts +58 -0
  63. package/dist/src/types.d.ts.map +1 -0
  64. package/dist/src/types.js +2 -0
  65. package/dist/src/yaml/bitrise-compat.d.ts +65 -0
  66. package/dist/src/yaml/bitrise-compat.d.ts.map +1 -0
  67. package/dist/src/yaml/bitrise-compat.js +206 -0
  68. package/dist/src/yaml/bitrise-compat.test.d.ts +5 -0
  69. package/dist/src/yaml/bitrise-compat.test.d.ts.map +1 -0
  70. package/dist/src/yaml/bitrise-compat.test.js +347 -0
  71. package/dist/src/yaml/converter.d.ts +33 -0
  72. package/dist/src/yaml/converter.d.ts.map +1 -0
  73. package/dist/src/yaml/converter.js +222 -0
  74. package/dist/src/yaml/converter.test.d.ts +5 -0
  75. package/dist/src/yaml/converter.test.d.ts.map +1 -0
  76. package/dist/src/yaml/converter.test.js +348 -0
  77. package/dist/src/yaml/e2e.test.d.ts +6 -0
  78. package/dist/src/yaml/e2e.test.d.ts.map +1 -0
  79. package/dist/src/yaml/e2e.test.js +446 -0
  80. package/dist/src/yaml/env-resolver.d.ts +120 -0
  81. package/dist/src/yaml/env-resolver.d.ts.map +1 -0
  82. package/dist/src/yaml/env-resolver.js +405 -0
  83. package/dist/src/yaml/env-resolver.test.d.ts +5 -0
  84. package/dist/src/yaml/env-resolver.test.d.ts.map +1 -0
  85. package/dist/src/yaml/env-resolver.test.js +502 -0
  86. package/dist/src/yaml/interactive-prompts.d.ts +71 -0
  87. package/dist/src/yaml/interactive-prompts.d.ts.map +1 -0
  88. package/dist/src/yaml/interactive-prompts.js +258 -0
  89. package/dist/src/yaml/missing-env-handler.d.ts +45 -0
  90. package/dist/src/yaml/missing-env-handler.d.ts.map +1 -0
  91. package/dist/src/yaml/missing-env-handler.js +64 -0
  92. package/dist/src/yaml/parser.d.ts +33 -0
  93. package/dist/src/yaml/parser.d.ts.map +1 -0
  94. package/dist/src/yaml/parser.js +145 -0
  95. package/dist/src/yaml/pipeline-with-secrets.d.ts +25 -0
  96. package/dist/src/yaml/pipeline-with-secrets.d.ts.map +1 -0
  97. package/dist/src/yaml/pipeline-with-secrets.js +76 -0
  98. package/dist/src/yaml/platform-detector.d.ts +83 -0
  99. package/dist/src/yaml/platform-detector.d.ts.map +1 -0
  100. package/dist/src/yaml/platform-detector.js +188 -0
  101. package/dist/src/yaml/platform-detector.test.d.ts +5 -0
  102. package/dist/src/yaml/platform-detector.test.d.ts.map +1 -0
  103. package/dist/src/yaml/platform-detector.test.js +414 -0
  104. package/dist/src/yaml/preflight-validation.d.ts +40 -0
  105. package/dist/src/yaml/preflight-validation.d.ts.map +1 -0
  106. package/dist/src/yaml/preflight-validation.js +152 -0
  107. package/dist/src/yaml/secrets-manager.d.ts +77 -0
  108. package/dist/src/yaml/secrets-manager.d.ts.map +1 -0
  109. package/dist/src/yaml/secrets-manager.js +219 -0
  110. package/dist/src/yaml/step-validator.d.ts +54 -0
  111. package/dist/src/yaml/step-validator.d.ts.map +1 -0
  112. package/dist/src/yaml/step-validator.js +403 -0
  113. package/dist/src/yaml/steps/android-sign.d.ts +35 -0
  114. package/dist/src/yaml/steps/android-sign.d.ts.map +1 -0
  115. package/dist/src/yaml/steps/android-sign.js +147 -0
  116. package/dist/src/yaml/steps/android-version.d.ts +26 -0
  117. package/dist/src/yaml/steps/android-version.d.ts.map +1 -0
  118. package/dist/src/yaml/steps/android-version.js +128 -0
  119. package/dist/src/yaml/steps/android-version.test.d.ts +5 -0
  120. package/dist/src/yaml/steps/android-version.test.d.ts.map +1 -0
  121. package/dist/src/yaml/steps/android-version.test.js +196 -0
  122. package/dist/src/yaml/steps/android.d.ts +95 -0
  123. package/dist/src/yaml/steps/android.d.ts.map +1 -0
  124. package/dist/src/yaml/steps/android.js +916 -0
  125. package/dist/src/yaml/steps/app-store-deploy.d.ts +48 -0
  126. package/dist/src/yaml/steps/app-store-deploy.d.ts.map +1 -0
  127. package/dist/src/yaml/steps/app-store-deploy.js +162 -0
  128. package/dist/src/yaml/steps/base.d.ts +238 -0
  129. package/dist/src/yaml/steps/base.d.ts.map +1 -0
  130. package/dist/src/yaml/steps/base.js +345 -0
  131. package/dist/src/yaml/steps/bitrise-android-tools.d.ts +26 -0
  132. package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +1 -0
  133. package/dist/src/yaml/steps/bitrise-android-tools.js +198 -0
  134. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +5 -0
  135. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +1 -0
  136. package/dist/src/yaml/steps/bitrise-android-tools.test.js +280 -0
  137. package/dist/src/yaml/steps/bitrise-apk-info.d.ts +22 -0
  138. package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +1 -0
  139. package/dist/src/yaml/steps/bitrise-apk-info.js +144 -0
  140. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +5 -0
  141. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +1 -0
  142. package/dist/src/yaml/steps/bitrise-apk-info.test.js +331 -0
  143. package/dist/src/yaml/steps/bitrise-slack.d.ts +49 -0
  144. package/dist/src/yaml/steps/bitrise-slack.d.ts.map +1 -0
  145. package/dist/src/yaml/steps/bitrise-slack.js +280 -0
  146. package/dist/src/yaml/steps/bitrise-slack.test.d.ts +5 -0
  147. package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +1 -0
  148. package/dist/src/yaml/steps/bitrise-slack.test.js +484 -0
  149. package/dist/src/yaml/steps/bitrise-ssh.d.ts +27 -0
  150. package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +1 -0
  151. package/dist/src/yaml/steps/bitrise-ssh.js +134 -0
  152. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +5 -0
  153. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +1 -0
  154. package/dist/src/yaml/steps/bitrise-ssh.test.js +205 -0
  155. package/dist/src/yaml/steps/cache.d.ts +52 -0
  156. package/dist/src/yaml/steps/cache.d.ts.map +1 -0
  157. package/dist/src/yaml/steps/cache.js +352 -0
  158. package/dist/src/yaml/steps/fastlane.d.ts +27 -0
  159. package/dist/src/yaml/steps/fastlane.d.ts.map +1 -0
  160. package/dist/src/yaml/steps/fastlane.js +79 -0
  161. package/dist/src/yaml/steps/file.d.ts +27 -0
  162. package/dist/src/yaml/steps/file.d.ts.map +1 -0
  163. package/dist/src/yaml/steps/file.js +35 -0
  164. package/dist/src/yaml/steps/flutter.d.ts +63 -0
  165. package/dist/src/yaml/steps/flutter.d.ts.map +1 -0
  166. package/dist/src/yaml/steps/flutter.js +215 -0
  167. package/dist/src/yaml/steps/git-clone.d.ts +26 -0
  168. package/dist/src/yaml/steps/git-clone.d.ts.map +1 -0
  169. package/dist/src/yaml/steps/git-clone.js +111 -0
  170. package/dist/src/yaml/steps/google-play-deploy.d.ts +37 -0
  171. package/dist/src/yaml/steps/google-play-deploy.d.ts.map +1 -0
  172. package/dist/src/yaml/steps/google-play-deploy.js +193 -0
  173. package/dist/src/yaml/steps/google-play-deploy.test.d.ts +5 -0
  174. package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +1 -0
  175. package/dist/src/yaml/steps/google-play-deploy.test.js +310 -0
  176. package/dist/src/yaml/steps/index.d.ts +10 -0
  177. package/dist/src/yaml/steps/index.d.ts.map +1 -0
  178. package/dist/src/yaml/steps/index.js +1361 -0
  179. package/dist/src/yaml/steps/ios-deps.d.ts +43 -0
  180. package/dist/src/yaml/steps/ios-deps.d.ts.map +1 -0
  181. package/dist/src/yaml/steps/ios-deps.js +141 -0
  182. package/dist/src/yaml/steps/ios-deps.test.d.ts +5 -0
  183. package/dist/src/yaml/steps/ios-deps.test.d.ts.map +1 -0
  184. package/dist/src/yaml/steps/ios-deps.test.js +90 -0
  185. package/dist/src/yaml/steps/ios-signing.d.ts +31 -0
  186. package/dist/src/yaml/steps/ios-signing.d.ts.map +1 -0
  187. package/dist/src/yaml/steps/ios-signing.js +144 -0
  188. package/dist/src/yaml/steps/ios-version.d.ts +47 -0
  189. package/dist/src/yaml/steps/ios-version.d.ts.map +1 -0
  190. package/dist/src/yaml/steps/ios-version.js +151 -0
  191. package/dist/src/yaml/steps/linting.d.ts +47 -0
  192. package/dist/src/yaml/steps/linting.d.ts.map +1 -0
  193. package/dist/src/yaml/steps/linting.js +148 -0
  194. package/dist/src/yaml/steps/phase2.test.d.ts +6 -0
  195. package/dist/src/yaml/steps/phase2.test.d.ts.map +1 -0
  196. package/dist/src/yaml/steps/phase2.test.js +197 -0
  197. package/dist/src/yaml/steps/phase3.test.d.ts +5 -0
  198. package/dist/src/yaml/steps/phase3.test.d.ts.map +1 -0
  199. package/dist/src/yaml/steps/phase3.test.js +144 -0
  200. package/dist/src/yaml/steps/phase4.test.d.ts +5 -0
  201. package/dist/src/yaml/steps/phase4.test.d.ts.map +1 -0
  202. package/dist/src/yaml/steps/phase4.test.js +166 -0
  203. package/dist/src/yaml/steps/phase5.test.d.ts +6 -0
  204. package/dist/src/yaml/steps/phase5.test.d.ts.map +1 -0
  205. package/dist/src/yaml/steps/phase5.test.js +263 -0
  206. package/dist/src/yaml/steps/registry.d.ts +88 -0
  207. package/dist/src/yaml/steps/registry.d.ts.map +1 -0
  208. package/dist/src/yaml/steps/registry.js +125 -0
  209. package/dist/src/yaml/steps/registry.test.d.ts +5 -0
  210. package/dist/src/yaml/steps/registry.test.d.ts.map +1 -0
  211. package/dist/src/yaml/steps/registry.test.js +235 -0
  212. package/dist/src/yaml/steps/release.d.ts +50 -0
  213. package/dist/src/yaml/steps/release.d.ts.map +1 -0
  214. package/dist/src/yaml/steps/release.js +154 -0
  215. package/dist/src/yaml/steps/script.d.ts +23 -0
  216. package/dist/src/yaml/steps/script.d.ts.map +1 -0
  217. package/dist/src/yaml/steps/script.js +63 -0
  218. package/dist/src/yaml/steps/spec-validation.test.d.ts +6 -0
  219. package/dist/src/yaml/steps/spec-validation.test.d.ts.map +1 -0
  220. package/dist/src/yaml/steps/spec-validation.test.js +130 -0
  221. package/dist/src/yaml/steps/steps.test.d.ts +6 -0
  222. package/dist/src/yaml/steps/steps.test.d.ts.map +1 -0
  223. package/dist/src/yaml/steps/steps.test.js +505 -0
  224. package/dist/src/yaml/steps/test-config.d.ts +3 -0
  225. package/dist/src/yaml/steps/test-config.d.ts.map +1 -0
  226. package/dist/src/yaml/steps/test-config.js +17 -0
  227. package/dist/src/yaml/steps/xcode-new.test.d.ts +5 -0
  228. package/dist/src/yaml/steps/xcode-new.test.d.ts.map +1 -0
  229. package/dist/src/yaml/steps/xcode-new.test.js +211 -0
  230. package/dist/src/yaml/steps/xcode.d.ts +222 -0
  231. package/dist/src/yaml/steps/xcode.d.ts.map +1 -0
  232. package/dist/src/yaml/steps/xcode.js +999 -0
  233. package/dist/src/yaml/types.d.ts +68 -0
  234. package/dist/src/yaml/types.d.ts.map +1 -0
  235. package/dist/src/yaml/types.js +5 -0
  236. package/dist/src/yaml/validation-types.d.ts +96 -0
  237. package/dist/src/yaml/validation-types.d.ts.map +1 -0
  238. package/dist/src/yaml/validation-types.js +8 -0
  239. package/dist/src/yaml/yaml-updater.d.ts +24 -0
  240. package/dist/src/yaml/yaml-updater.d.ts.map +1 -0
  241. package/dist/src/yaml/yaml-updater.js +128 -0
  242. package/package.json +16 -4
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Tests for new Xcode steps: xcode-build-for-test, xcode-test-without-building, xcode-build-for-simulator
3
+ */
4
+ import { describe, test, expect } from '@jest/globals';
5
+ import { XcodeBuildForTestStepExecutor, XcodeTestWithoutBuildingStepExecutor, XcodeBuildForSimulatorStepExecutor, } from './xcode.js';
6
+ import { testConfig } from './test-config.js';
7
+ describe('XcodeBuildForTestStepExecutor', () => {
8
+ test('should generate build-for-testing script', async () => {
9
+ const executor = new XcodeBuildForTestStepExecutor();
10
+ const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
11
+ expect(result.kind).toBe('script');
12
+ expect(result.name).toBe('xcode-build-for-test');
13
+ expect(result.script).toContain('xcodebuild build-for-testing');
14
+ expect(result.script).toContain('MyApp.xcodeproj');
15
+ expect(result.script).toContain('-scheme');
16
+ expect(result.script).toContain('MyApp');
17
+ });
18
+ test('should require project_path', async () => {
19
+ const executor = new XcodeBuildForTestStepExecutor();
20
+ await expect(executor.execute({ scheme: 'MyApp' }, {}, testConfig)).rejects.toThrow("Missing required input 'project_path'");
21
+ });
22
+ test('should require scheme', async () => {
23
+ const executor = new XcodeBuildForTestStepExecutor();
24
+ await expect(executor.execute({ project_path: 'MyApp.xcodeproj' }, {}, testConfig)).rejects.toThrow("Missing required input 'scheme'");
25
+ });
26
+ test('should default to Debug configuration', async () => {
27
+ const executor = new XcodeBuildForTestStepExecutor();
28
+ const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
29
+ expect(result.script).toContain('-configuration');
30
+ expect(result.script).toContain('Debug');
31
+ });
32
+ test('should support custom destination', async () => {
33
+ const executor = new XcodeBuildForTestStepExecutor();
34
+ const result = await executor.execute({
35
+ project_path: 'MyApp.xcodeproj',
36
+ scheme: 'MyApp',
37
+ destination: 'generic/platform=iOS',
38
+ }, {}, testConfig);
39
+ expect(result.script).toContain('generic/platform=iOS');
40
+ });
41
+ test('should support test plan', async () => {
42
+ const executor = new XcodeBuildForTestStepExecutor();
43
+ const result = await executor.execute({
44
+ project_path: 'MyApp.xcodeproj',
45
+ scheme: 'MyApp',
46
+ test_plan: 'MyTestPlan',
47
+ }, {}, testConfig);
48
+ expect(result.script).toContain('-testPlan');
49
+ expect(result.script).toContain('MyTestPlan');
50
+ });
51
+ test('should use derivedDataPath', async () => {
52
+ const executor = new XcodeBuildForTestStepExecutor();
53
+ const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
54
+ expect(result.script).toContain('-derivedDataPath');
55
+ expect(result.script).toContain('DerivedData');
56
+ });
57
+ test('should locate .xctestrun file', async () => {
58
+ const executor = new XcodeBuildForTestStepExecutor();
59
+ const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
60
+ expect(result.script).toContain('.xctestrun');
61
+ expect(result.script).toContain('CIBUILD_TEST_BUNDLE_PATH');
62
+ expect(result.script).toContain('CIBUILD_XCTESTRUN_FILE_PATH');
63
+ });
64
+ test('should support workspace files', async () => {
65
+ const executor = new XcodeBuildForTestStepExecutor();
66
+ const result = await executor.execute({ project_path: 'MyApp.xcworkspace', scheme: 'MyApp' }, {}, testConfig);
67
+ expect(result.script).toContain('xcworkspace');
68
+ });
69
+ test('should declare outputs', () => {
70
+ const executor = new XcodeBuildForTestStepExecutor();
71
+ const outputs = executor.getOutputs();
72
+ expect(outputs).toHaveLength(2);
73
+ expect(outputs[0].name).toBe('CIBUILD_TEST_BUNDLE_PATH');
74
+ expect(outputs[1].name).toBe('CIBUILD_XCTESTRUN_FILE_PATH');
75
+ });
76
+ });
77
+ describe('XcodeTestWithoutBuildingStepExecutor', () => {
78
+ test('should generate test-without-building script', async () => {
79
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
80
+ const result = await executor.execute({}, {}, testConfig);
81
+ expect(result.kind).toBe('script');
82
+ expect(result.name).toBe('xcode-test-without-building');
83
+ expect(result.script).toContain('xcodebuild test-without-building');
84
+ expect(result.script).toContain('-xctestrun');
85
+ });
86
+ test('should use default xctestrun path from env', async () => {
87
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
88
+ const result = await executor.execute({}, {}, testConfig);
89
+ expect(result.script).toContain('CIBUILD_XCTESTRUN_FILE_PATH');
90
+ });
91
+ test('should support custom xctestrun path', async () => {
92
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
93
+ const result = await executor.execute({ xctestrun: '/path/to/test.xctestrun' }, {}, testConfig);
94
+ expect(result.script).toContain('/path/to/test.xctestrun');
95
+ });
96
+ test('should support custom destination', async () => {
97
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
98
+ const result = await executor.execute({ destination: 'platform=iOS Simulator,name=iPhone 14' }, {}, testConfig);
99
+ expect(result.script).toContain('iPhone 14');
100
+ });
101
+ test('should support only_testing filter', async () => {
102
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
103
+ const result = await executor.execute({ only_testing: 'MyAppTests/MyTest' }, {}, testConfig);
104
+ expect(result.script).toContain('-only-testing');
105
+ expect(result.script).toContain('MyAppTests/MyTest');
106
+ });
107
+ test('should support skip_testing filter', async () => {
108
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
109
+ const result = await executor.execute({ skip_testing: 'MyAppTests/SlowTest' }, {}, testConfig);
110
+ expect(result.script).toContain('-skip-testing');
111
+ expect(result.script).toContain('MyAppTests/SlowTest');
112
+ });
113
+ test('should support retry_on_failure repetition mode', async () => {
114
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
115
+ const result = await executor.execute({
116
+ test_repetition_mode: 'retry_on_failure',
117
+ maximum_test_repetitions: '5',
118
+ }, {}, testConfig);
119
+ expect(result.script).toContain('-retry-tests-on-failure');
120
+ expect(result.script).toContain('-test-iterations 5');
121
+ });
122
+ test('should support until_failure repetition mode', async () => {
123
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
124
+ const result = await executor.execute({ test_repetition_mode: 'until_failure' }, {}, testConfig);
125
+ expect(result.script).toContain('-run-tests-until-failure');
126
+ });
127
+ test('should create result bundle', async () => {
128
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
129
+ const result = await executor.execute({}, {}, testConfig);
130
+ expect(result.script).toContain('-resultBundlePath');
131
+ expect(result.script).toContain('.xcresult');
132
+ });
133
+ test('should export CIBUILD_XCRESULT_PATH', async () => {
134
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
135
+ const result = await executor.execute({}, {}, testConfig);
136
+ expect(result.script).toContain('CIBUILD_XCRESULT_PATH');
137
+ });
138
+ test('should declare outputs', () => {
139
+ const executor = new XcodeTestWithoutBuildingStepExecutor();
140
+ const outputs = executor.getOutputs();
141
+ expect(outputs).toHaveLength(1);
142
+ expect(outputs[0].name).toBe('CIBUILD_XCRESULT_PATH');
143
+ });
144
+ });
145
+ describe('XcodeBuildForSimulatorStepExecutor', () => {
146
+ test('should generate simulator build script', async () => {
147
+ const executor = new XcodeBuildForSimulatorStepExecutor();
148
+ const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
149
+ expect(result.kind).toBe('script');
150
+ expect(result.name).toBe('xcode-build-for-simulator');
151
+ expect(result.script).toContain('xcodebuild');
152
+ expect(result.script).toContain('build');
153
+ expect(result.script).toContain('MyApp.xcodeproj');
154
+ expect(result.script).toContain('-scheme');
155
+ expect(result.script).toContain('MyApp');
156
+ });
157
+ test('should require project_path', async () => {
158
+ const executor = new XcodeBuildForSimulatorStepExecutor();
159
+ await expect(executor.execute({ scheme: 'MyApp' }, {}, testConfig)).rejects.toThrow("Missing required input 'project_path'");
160
+ });
161
+ test('should require scheme', async () => {
162
+ const executor = new XcodeBuildForSimulatorStepExecutor();
163
+ await expect(executor.execute({ project_path: 'MyApp.xcodeproj' }, {}, testConfig)).rejects.toThrow("Missing required input 'scheme'");
164
+ });
165
+ test('should disable code signing by default', async () => {
166
+ const executor = new XcodeBuildForSimulatorStepExecutor();
167
+ const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
168
+ expect(result.script).toContain('CODE_SIGNING_ALLOWED=NO');
169
+ });
170
+ test('should default to iOS Simulator destination', async () => {
171
+ const executor = new XcodeBuildForSimulatorStepExecutor();
172
+ const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
173
+ expect(result.script).toContain('generic/platform=iOS Simulator');
174
+ });
175
+ test('should support watchOS destination', async () => {
176
+ const executor = new XcodeBuildForSimulatorStepExecutor();
177
+ const result = await executor.execute({
178
+ project_path: 'MyApp.xcodeproj',
179
+ scheme: 'WatchApp',
180
+ destination: 'generic/platform=watchOS Simulator',
181
+ }, {}, testConfig);
182
+ expect(result.script).toContain('watchOS Simulator');
183
+ });
184
+ test('should support clean build', async () => {
185
+ const executor = new XcodeBuildForSimulatorStepExecutor();
186
+ const result = await executor.execute({
187
+ project_path: 'MyApp.xcodeproj',
188
+ scheme: 'MyApp',
189
+ perform_clean_action: 'yes',
190
+ }, {}, testConfig);
191
+ expect(result.script).toContain('clean');
192
+ });
193
+ test('should support workspace files', async () => {
194
+ const executor = new XcodeBuildForSimulatorStepExecutor();
195
+ const result = await executor.execute({ project_path: 'MyApp.xcworkspace', scheme: 'MyApp' }, {}, testConfig);
196
+ expect(result.script).toContain('xcworkspace');
197
+ });
198
+ test('should locate generated .app', async () => {
199
+ const executor = new XcodeBuildForSimulatorStepExecutor();
200
+ const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
201
+ expect(result.script).toContain('.app');
202
+ expect(result.script).toContain('CIBUILD_APP_DIR_PATH');
203
+ });
204
+ test('should declare outputs', () => {
205
+ const executor = new XcodeBuildForSimulatorStepExecutor();
206
+ const outputs = executor.getOutputs();
207
+ expect(outputs).toHaveLength(1);
208
+ expect(outputs[0].name).toBe('CIBUILD_APP_DIR_PATH');
209
+ });
210
+ });
211
+ //# sourceMappingURL=xcode-new.test.js.map
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Xcode step implementations (xcodebuild, xcode-test)
3
+ */
4
+ import { BaseStepExecutor } from './base.js';
5
+ import type { StepDef, CIConfig } from '../../types.js';
6
+ import type { ValidationRequirement, StepOutput } from '../validation-types.js';
7
+ /**
8
+ * Inputs for xcodebuild step
9
+ */
10
+ export interface XcodeBuildInputs {
11
+ project_path?: string;
12
+ scheme?: string;
13
+ configuration?: string;
14
+ destination?: string;
15
+ xcconfig_content?: string;
16
+ output_dir?: string;
17
+ is_clean_build?: boolean;
18
+ }
19
+ /**
20
+ * Inputs for xcode-test step
21
+ */
22
+ export interface XcodeTestInputs {
23
+ project_path?: string;
24
+ scheme?: string;
25
+ destination?: string;
26
+ test_plan?: string;
27
+ is_code_coverage_enabled?: boolean;
28
+ }
29
+ /**
30
+ * Xcodebuild step executor
31
+ * Builds iOS/macOS projects using xcodebuild
32
+ */
33
+ export declare class XcodeBuildStepExecutor extends BaseStepExecutor {
34
+ getValidationRequirements(inputs: XcodeBuildInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
35
+ execute(inputs: XcodeBuildInputs, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
36
+ }
37
+ /**
38
+ * Xcode test step executor
39
+ * Runs tests for iOS/macOS projects using xcodebuild test
40
+ */
41
+ export declare class XcodeTestStepExecutor extends BaseStepExecutor {
42
+ getValidationRequirements(inputs: XcodeTestInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
43
+ execute(inputs: XcodeTestInputs, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
44
+ }
45
+ /**
46
+ * Inputs for xcode-archive step (compatible with bitrise xcode-archive@5)
47
+ */
48
+ export interface XcodeArchiveInputs {
49
+ /** Path to .xcodeproj or .xcworkspace */
50
+ project_path?: string;
51
+ /** Xcode scheme name */
52
+ scheme?: string;
53
+ /** Build configuration, e.g. Release */
54
+ configuration?: string;
55
+ /** Platform: detect | iOS | watchOS | tvOS | visionOS */
56
+ platform?: string;
57
+ /** Export method: development | app-store | ad-hoc | enterprise */
58
+ distribution_method?: string;
59
+ /** Execute clean action before archive: yes | no */
60
+ perform_clean_action?: string;
61
+ /** Additional xcodebuild flags */
62
+ xcodebuild_options?: string;
63
+ /** xcconfig override content (default: COMPILER_INDEX_STORE_ENABLE = NO) */
64
+ xcconfig_content?: string;
65
+ /** Recompile from bitcode for non-App Store exports: yes | no */
66
+ compile_bitcode?: string;
67
+ /** Include bitcode in App Store exports: yes | no */
68
+ upload_bitcode?: string;
69
+ /** Code signing method: off | api-key | apple-id */
70
+ automatic_code_signing?: string;
71
+ /** Pipe-separated certificate URLs (used when automatic_code_signing=off) */
72
+ certificate_url_list?: string;
73
+ /** Pipe-separated certificate passphrases */
74
+ passphrase_list?: string;
75
+ /** Minimum provisioning profile validity in days */
76
+ min_profile_validity?: string;
77
+ /** Custom ExportOptions.plist content (overrides generated plist) */
78
+ export_options_plist_content?: string;
79
+ /** Output directory for IPA, dSYM, xcarchive */
80
+ output_dir?: string;
81
+ /** Basename for generated files */
82
+ artifact_name?: string;
83
+ }
84
+ /**
85
+ * xcode-archive step executor
86
+ * Archives and exports an iOS app to IPA, mirroring bitrise xcode-archive@5.
87
+ */
88
+ export declare class XcodeArchiveStepExecutor extends BaseStepExecutor {
89
+ getValidationRequirements(inputs: XcodeArchiveInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
90
+ getOutputs(): StepOutput[];
91
+ execute(inputs: XcodeArchiveInputs, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
92
+ }
93
+ /**
94
+ * Inputs for ios-archive step
95
+ */
96
+ export interface IosArchiveInputs {
97
+ app_path?: string;
98
+ output_path?: string;
99
+ output_name?: string;
100
+ }
101
+ /**
102
+ * iOS Archive step executor
103
+ * Creates an IPA file from a .app bundle
104
+ */
105
+ export declare class IosArchiveStepExecutor extends BaseStepExecutor {
106
+ getValidationRequirements(inputs: IosArchiveInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
107
+ execute(inputs: IosArchiveInputs, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
108
+ }
109
+ /**
110
+ * Inputs for ota-install step
111
+ */
112
+ export interface OtaInstallInputs {
113
+ /** Full HTTPS URL where the IPA file will be hosted (required) */
114
+ ipa_url?: string;
115
+ /** Full HTTPS URL where manifest.plist will be hosted.
116
+ * Defaults to dirname(ipa_url)/manifest.plist */
117
+ manifest_url?: string;
118
+ /** iOS bundle identifier, e.g. com.example.app (required) */
119
+ bundle_id?: string;
120
+ /** App version string, e.g. 1.2.3 (required) */
121
+ bundle_version?: string;
122
+ /** App display name shown during install prompt (required) */
123
+ title?: string;
124
+ /** Local IPA path; defaults to $CIBUILD_IPA_PATH env var */
125
+ ipa_path?: string;
126
+ /** Directory to write manifest.plist; defaults to .ci/artifacts */
127
+ output_dir?: string;
128
+ }
129
+ /**
130
+ * OTA install step executor.
131
+ * Generates manifest.plist and a QR code for itms-services:// OTA installation.
132
+ * The IPA and manifest must be hosted at user-provided HTTPS URLs.
133
+ */
134
+ export declare class OtaInstallStepExecutor extends BaseStepExecutor {
135
+ getValidationRequirements(inputs: OtaInstallInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
136
+ getOutputs(): {
137
+ name: string;
138
+ type: "environment";
139
+ description: string;
140
+ }[];
141
+ execute(inputs: OtaInstallInputs, _env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
142
+ }
143
+ export interface XcodeBuildForTestInputs {
144
+ project_path?: string;
145
+ scheme?: string;
146
+ configuration?: string;
147
+ destination?: string;
148
+ test_plan?: string;
149
+ xcconfig_content?: string;
150
+ xcodebuild_options?: string;
151
+ output_dir?: string;
152
+ }
153
+ /**
154
+ * Builds the app and tests without executing them.
155
+ * Produces an .xctestrun file for use with xcode-test-without-building.
156
+ */
157
+ export declare class XcodeBuildForTestStepExecutor extends BaseStepExecutor {
158
+ getValidationRequirements(inputs: XcodeBuildForTestInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
159
+ getOutputs(): StepOutput[];
160
+ execute(inputs: XcodeBuildForTestInputs, _env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
161
+ }
162
+ export interface XcodeTestWithoutBuildingInputs {
163
+ xctestrun?: string;
164
+ destination?: string;
165
+ only_testing?: string;
166
+ skip_testing?: string;
167
+ test_repetition_mode?: string;
168
+ maximum_test_repetitions?: string;
169
+ xcodebuild_options?: string;
170
+ }
171
+ /**
172
+ * Runs pre-compiled tests from an .xctestrun file.
173
+ */
174
+ export declare class XcodeTestWithoutBuildingStepExecutor extends BaseStepExecutor {
175
+ getValidationRequirements(_inputs: XcodeTestWithoutBuildingInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
176
+ getOutputs(): StepOutput[];
177
+ execute(inputs: XcodeTestWithoutBuildingInputs, _env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
178
+ }
179
+ export interface XcodeBuildForSimulatorInputs {
180
+ project_path?: string;
181
+ scheme?: string;
182
+ configuration?: string;
183
+ destination?: string;
184
+ perform_clean_action?: string;
185
+ xcconfig_content?: string;
186
+ xcodebuild_options?: string;
187
+ output_dir?: string;
188
+ }
189
+ /**
190
+ * Builds an iOS/tvOS/watchOS app for the simulator.
191
+ * Produces a .app bundle with code signing disabled by default.
192
+ */
193
+ export declare class XcodeBuildForSimulatorStepExecutor extends BaseStepExecutor {
194
+ getValidationRequirements(inputs: XcodeBuildForSimulatorInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
195
+ getOutputs(): StepOutput[];
196
+ execute(inputs: XcodeBuildForSimulatorInputs, _env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
197
+ }
198
+ export interface ExportXcarchiveInputs {
199
+ /** Path to .xcarchive file */
200
+ archive_path?: string;
201
+ /** Product to export: app | app-clip */
202
+ product?: string;
203
+ /** Distribution method: development | app-store | ad-hoc | enterprise */
204
+ distribution_method?: string;
205
+ /** Recompile from bitcode for non-App Store (yes/no) */
206
+ compile_bitcode?: string;
207
+ /** Include bitcode for App Store (yes/no) */
208
+ upload_bitcode?: string;
209
+ /** Custom ExportOptions.plist content */
210
+ export_options_plist_content?: string;
211
+ /** Enable verbose logging (yes/no) */
212
+ verbose_log?: string;
213
+ }
214
+ /**
215
+ * Exports an IPA from an existing .xcarchive using xcodebuild -exportArchive.
216
+ */
217
+ export declare class ExportXcarchiveStepExecutor extends BaseStepExecutor {
218
+ getValidationRequirements(_inputs: ExportXcarchiveInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
219
+ getOutputs(): StepOutput[];
220
+ execute(inputs: ExportXcarchiveInputs, _env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
221
+ }
222
+ //# sourceMappingURL=xcode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xcode.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/xcode.ts"],"names":[],"mappings":"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"}