detox 20.22.0-smoke.0 → 20.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar → 20.22.0/detox-20.22.0-sources.jar} +0 -0
  2. package/Detox-android/com/wix/detox/20.22.0/detox-20.22.0-sources.jar.md5 +1 -0
  3. package/Detox-android/com/wix/detox/20.22.0/detox-20.22.0-sources.jar.sha1 +1 -0
  4. package/Detox-android/com/wix/detox/20.22.0/detox-20.22.0-sources.jar.sha256 +1 -0
  5. package/Detox-android/com/wix/detox/20.22.0/detox-20.22.0-sources.jar.sha512 +1 -0
  6. package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.pom → 20.22.0/detox-20.22.0.pom} +1 -1
  7. package/Detox-android/com/wix/detox/20.22.0/detox-20.22.0.pom.md5 +1 -0
  8. package/Detox-android/com/wix/detox/20.22.0/detox-20.22.0.pom.sha1 +1 -0
  9. package/Detox-android/com/wix/detox/20.22.0/detox-20.22.0.pom.sha256 +1 -0
  10. package/Detox-android/com/wix/detox/20.22.0/detox-20.22.0.pom.sha512 +1 -0
  11. package/Detox-android/com/wix/detox/maven-metadata.xml +4 -4
  12. package/Detox-android/com/wix/detox/maven-metadata.xml.md5 +1 -1
  13. package/Detox-android/com/wix/detox/maven-metadata.xml.sha1 +1 -1
  14. package/Detox-android/com/wix/detox/maven-metadata.xml.sha256 +1 -1
  15. package/Detox-android/com/wix/detox/maven-metadata.xml.sha512 +1 -1
  16. package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar → 20.22.0/detox-legacy-20.22.0-sources.jar} +0 -0
  17. package/Detox-android/com/wix/detox-legacy/20.22.0/detox-legacy-20.22.0-sources.jar.md5 +1 -0
  18. package/Detox-android/com/wix/detox-legacy/20.22.0/detox-legacy-20.22.0-sources.jar.sha1 +1 -0
  19. package/Detox-android/com/wix/detox-legacy/20.22.0/detox-legacy-20.22.0-sources.jar.sha256 +1 -0
  20. package/Detox-android/com/wix/detox-legacy/20.22.0/detox-legacy-20.22.0-sources.jar.sha512 +1 -0
  21. package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom → 20.22.0/detox-legacy-20.22.0.pom} +1 -1
  22. package/Detox-android/com/wix/detox-legacy/20.22.0/detox-legacy-20.22.0.pom.md5 +1 -0
  23. package/Detox-android/com/wix/detox-legacy/20.22.0/detox-legacy-20.22.0.pom.sha1 +1 -0
  24. package/Detox-android/com/wix/detox-legacy/20.22.0/detox-legacy-20.22.0.pom.sha256 +1 -0
  25. package/Detox-android/com/wix/detox-legacy/20.22.0/detox-legacy-20.22.0.pom.sha512 +1 -0
  26. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml +4 -4
  27. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.md5 +1 -1
  28. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.sha1 +1 -1
  29. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.sha256 +1 -1
  30. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.sha512 +1 -1
  31. package/Detox-ios-framework.tbz +0 -0
  32. package/Detox-ios-src.tbz +0 -0
  33. package/Detox-ios-xcuitest.tbz +0 -0
  34. package/detox.d.ts +78 -3
  35. package/globals.d.ts +2 -0
  36. package/local-cli/build-framework-cache.js +19 -11
  37. package/local-cli/clean-framework-cache.js +19 -14
  38. package/local-cli/rebuild-framework-cache.js +20 -16
  39. package/local-cli/utils/frameworkUtils.js +77 -0
  40. package/package.json +4 -4
  41. package/scripts/build_framework.ios.sh +26 -60
  42. package/scripts/build_local_framework.ios.sh +62 -0
  43. package/scripts/build_local_xcuitest.ios.sh +53 -0
  44. package/scripts/build_xcuitest.ios.sh +18 -0
  45. package/scripts/pack_ios.sh +18 -9
  46. package/scripts/postinstall.js +11 -4
  47. package/src/android/AndroidExpect.js +5 -0
  48. package/src/android/matchers/index.js +7 -0
  49. package/src/client/Client.js +0 -4
  50. package/src/client/actions/actions.js +0 -19
  51. package/src/devices/runtime/RuntimeDevice.js +0 -5
  52. package/src/devices/runtime/drivers/DeviceDriverBase.js +0 -4
  53. package/src/devices/runtime/drivers/ios/SimulatorDriver.js +0 -11
  54. package/src/ios/XCUITestRunner.js +52 -0
  55. package/src/ios/expectTwo.js +49 -28
  56. package/src/ios/system.js +124 -0
  57. package/src/ios/web.js +3 -4
  58. package/src/matchers/factories/index.js +15 -8
  59. package/src/utils/assertArgument.js +11 -2
  60. package/src/utils/environment.js +34 -14
  61. package/src/utils/invocationTraceDescriptions.js +4 -0
  62. package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar.md5 +0 -1
  63. package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar.sha1 +0 -1
  64. package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar.sha256 +0 -1
  65. package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar.sha512 +0 -1
  66. package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0.pom.md5 +0 -1
  67. package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0.pom.sha1 +0 -1
  68. package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0.pom.sha256 +0 -1
  69. package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0.pom.sha512 +0 -1
  70. package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar.md5 +0 -1
  71. package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar.sha1 +0 -1
  72. package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar.sha256 +0 -1
  73. package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar.sha512 +0 -1
  74. package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom.md5 +0 -1
  75. package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom.sha1 +0 -1
  76. package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom.sha256 +0 -1
  77. package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom.sha512 +0 -1
  78. package/Detox-ios.tbz +0 -0
  79. package/scripts/build_universal_framework.sh +0 -14
  80. package/scripts/build_universal_framework_legacy.sh +0 -76
  81. package/scripts/build_universal_framework_modern.sh +0 -28
  82. /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar → 20.22.0/detox-20.22.0.aar} +0 -0
  83. /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar.md5 → 20.22.0/detox-20.22.0.aar.md5} +0 -0
  84. /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar.sha1 → 20.22.0/detox-20.22.0.aar.sha1} +0 -0
  85. /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar.sha256 → 20.22.0/detox-20.22.0.aar.sha256} +0 -0
  86. /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar.sha512 → 20.22.0/detox-20.22.0.aar.sha512} +0 -0
  87. /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar → 20.22.0/detox-legacy-20.22.0.aar} +0 -0
  88. /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar.md5 → 20.22.0/detox-legacy-20.22.0.aar.md5} +0 -0
  89. /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar.sha1 → 20.22.0/detox-legacy-20.22.0.aar.sha1} +0 -0
  90. /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar.sha256 → 20.22.0/detox-legacy-20.22.0.aar.sha256} +0 -0
  91. /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar.sha512 → 20.22.0/detox-legacy-20.22.0.aar.sha512} +0 -0
@@ -0,0 +1,124 @@
1
+ const { DetoxRuntimeError } = require('../errors');
2
+ const { assertTraceDescription } = require('../utils/assertArgument');
3
+ const { systemActionDescription, expectDescription } = require('../utils/invocationTraceDescriptions');
4
+ const log = require('../utils/logger').child({ cat: 'ws-client, ws' });
5
+ const traceInvocationCall = require('../utils/traceInvocationCall').bind(null, log);
6
+
7
+
8
+ class SystemExpect {
9
+ constructor(xcuitestRunner, element) {
10
+ this._xcuitestRunner = xcuitestRunner;
11
+ this.element = element;
12
+ this.modifiers = [];
13
+ }
14
+
15
+ toExist() {
16
+ const traceDescription = expectDescription.toExist();
17
+ return this.expect('toExist', traceDescription);
18
+ }
19
+
20
+ get not() {
21
+ this.modifiers.push('not');
22
+ return this;
23
+ }
24
+
25
+ createInvocation(systemExpectation) {
26
+ return {
27
+ type: 'systemExpectation',
28
+ systemPredicate: this.element.matcher.predicate,
29
+ ...(this.element.index !== undefined && { systemAtIndex: this.element.index }),
30
+ ...(this.modifiers.length !== 0 && { systemModifiers: this.modifiers }),
31
+ systemExpectation
32
+ };
33
+ }
34
+
35
+ expect(expectation, traceDescription) {
36
+ assertTraceDescription(traceDescription);
37
+
38
+ const invocation = this.createInvocation(expectation);
39
+ traceDescription = expectDescription.full(traceDescription, this.modifiers.includes('not'));
40
+ return _executeInvocation(this._xcuitestRunner, invocation, traceDescription);
41
+ }
42
+ }
43
+
44
+ class SystemElement {
45
+ constructor(xcuitestRunner, matcher, index) {
46
+ this._xcuitestRunner = xcuitestRunner;
47
+ this.matcher = matcher;
48
+ this.index = index;
49
+ }
50
+
51
+ atIndex(index) {
52
+ if (typeof index !== 'number' || index < 0) throw new DetoxRuntimeError(`index should be an integer, got ${index} (${typeof index})`);
53
+ this.index = index;
54
+ return this;
55
+ }
56
+
57
+ tap() {
58
+ const traceDescription = systemActionDescription.tap();
59
+ return this.withAction('tap', traceDescription);
60
+ }
61
+
62
+ withAction(action, traceDescription) {
63
+ assertTraceDescription(traceDescription);
64
+
65
+ const invocation = {
66
+ type: 'systemAction',
67
+ systemPredicate: this.matcher.predicate,
68
+ ...(this.index !== undefined && { systemAtIndex: this.index }),
69
+ systemAction: action
70
+ };
71
+ traceDescription = systemActionDescription.full(traceDescription);
72
+ return _executeInvocation(this._xcuitestRunner, invocation, traceDescription);
73
+ }
74
+ }
75
+
76
+ class SystemElementMatcher {
77
+ label(label) {
78
+ if (typeof label !== 'string') throw new DetoxRuntimeError('label should be a string, but got ' + (label + (' (' + typeof label + ')')));
79
+ this.predicate = { type: 'label', value: label.toString() };
80
+ return this;
81
+ }
82
+
83
+ type(type) {
84
+ if (typeof type !== 'string') throw new DetoxRuntimeError('type should be a string, but got ' + (type + (' (' + typeof type + ')')));
85
+ this.predicate = { type: 'type', value: type.toString() };
86
+ return this;
87
+ }
88
+ }
89
+
90
+ function systemMatcher() {
91
+ return new SystemElementMatcher();
92
+ }
93
+
94
+ function systemElement(xcuitestRunner, matcher) {
95
+ if (!(matcher instanceof SystemElementMatcher)) {
96
+ throwSystemMatcherError(matcher);
97
+ }
98
+
99
+ return new SystemElement(xcuitestRunner, matcher);
100
+ }
101
+
102
+ function throwSystemMatcherError(param) {
103
+ const paramDescription = JSON.stringify(param);
104
+ throw new DetoxRuntimeError(`${paramDescription} is not a Detox system matcher. More about system matchers here: https://wix.github.io/Detox/docs/api/system`);
105
+ }
106
+
107
+ function systemExpect(xcuitestRunner, element) {
108
+ return new SystemExpect(xcuitestRunner, element);
109
+ }
110
+
111
+ function _executeInvocation(xcuitestRunner, invocation, traceDescription) {
112
+ return traceInvocationCall(traceDescription, invocation, xcuitestRunner.execute(invocation));
113
+ }
114
+
115
+ function isSystemElement(element) {
116
+ return element instanceof SystemElement;
117
+ }
118
+
119
+ module.exports = {
120
+ systemMatcher,
121
+ systemElement,
122
+ systemExpect,
123
+ isSystemElement
124
+ };
package/src/ios/web.js CHANGED
@@ -1,8 +1,7 @@
1
- const assert = require('assert');
2
-
3
1
  const _ = require('lodash');
4
2
 
5
3
  const { DetoxRuntimeError } = require('../errors');
4
+ const { assertTraceDescription } = require('../utils/assertArgument');
6
5
  const { webViewActionDescription, expectDescription } = require('../utils/invocationTraceDescriptions');
7
6
  const log = require('../utils/logger').child({ cat: 'ws-client, ws' });
8
7
  const traceInvocationCall = require('../utils/traceInvocationCall').bind(null, log);
@@ -48,7 +47,7 @@ class WebExpect {
48
47
  }
49
48
 
50
49
  expect(expectation, traceDescription, ...params) {
51
- assert(traceDescription, `must provide trace description for expectation: \n ${JSON.stringify(expectation)}`);
50
+ assertTraceDescription(traceDescription);
52
51
 
53
52
  const invocation = this.createInvocation(expectation, ...params);
54
53
  traceDescription = expectDescription.full(traceDescription, this.modifiers.includes('not'));
@@ -170,7 +169,7 @@ class WebElement {
170
169
  }
171
170
 
172
171
  withAction(action, traceDescription, ...params) {
173
- assert(traceDescription, `must provide trace description for action: \n ${JSON.stringify(action)}`);
172
+ assertTraceDescription(traceDescription);
174
173
 
175
174
  const invocation = {
176
175
  type: 'webAction',
@@ -12,19 +12,20 @@ class Android extends MatchersFactory {
12
12
  }
13
13
 
14
14
  class Ios extends MatchersFactory {
15
- createMatchers({ invocationManager, eventEmitter }) {
15
+ createMatchers({ invocationManager, runtimeDevice, eventEmitter }) {
16
16
  const IosExpect = require('../../ios/expectTwo');
17
- return new IosExpect({ invocationManager, emitter: eventEmitter });
17
+ const XCUITestRunner = require('../../ios/XCUITestRunner');
18
+ const xcuitestRunner = new XCUITestRunner({ simulatorId: runtimeDevice.id });
19
+
20
+ return new IosExpect({
21
+ invocationManager,
22
+ xcuitestRunner,
23
+ emitter: eventEmitter
24
+ });
18
25
  }
19
26
  }
20
27
 
21
28
  class External extends MatchersFactory {
22
- static validateModule(module, path) {
23
- if (!module.ExpectClass) {
24
- throw new DetoxRuntimeError(`The custom driver at '${path}' does not export the ExpectClass property`);
25
- }
26
- }
27
-
28
29
  constructor(module, path) {
29
30
  super();
30
31
  External.validateModule(module, path);
@@ -32,6 +33,12 @@ class External extends MatchersFactory {
32
33
  this._module = module;
33
34
  }
34
35
 
36
+ static validateModule(module, path) {
37
+ if (!module.ExpectClass) {
38
+ throw new DetoxRuntimeError(`The custom driver at '${path}' does not export the ExpectClass property`);
39
+ }
40
+ }
41
+
35
42
  createMatchers(deps) {
36
43
  return new this._module.ExpectClass(deps);
37
44
  }
@@ -1,4 +1,4 @@
1
- const DetoxRuntimeError = require('../errors/DetoxRuntimeError');
1
+ const { DetoxInternalError, DetoxRuntimeError } = require('../errors');
2
2
 
3
3
  function firstEntry(obj) {
4
4
  return Object.entries(obj)[0];
@@ -61,6 +61,14 @@ function assertUndefined(arg) {
61
61
  throw new DetoxRuntimeError(`${key} expected to be undefined, but got ${value} (${typeof value})`);
62
62
  }
63
63
 
64
+ function assertTraceDescription(arg) {
65
+ if (arg !== undefined) {
66
+ return true;
67
+ }
68
+
69
+ throw new DetoxInternalError(`traceDescription expected to be defined, but got undefined`);
70
+ }
71
+
64
72
  module.exports = {
65
73
  assertEnum,
66
74
  assertNormalized,
@@ -68,5 +76,6 @@ module.exports = {
68
76
  assertString,
69
77
  assertDuration,
70
78
  assertPoint,
71
- assertUndefined
79
+ assertUndefined,
80
+ assertTraceDescription
72
81
  };
@@ -1,3 +1,4 @@
1
+ const crypto = require('crypto');
1
2
  const fs = require('fs');
2
3
  const os = require('os');
3
4
  const path = require('path');
@@ -171,24 +172,40 @@ function throwMissingGmsaasError() {
171
172
  throw new DetoxRuntimeError(`Failed to locate Genymotion's gmsaas executable. Please add it to your $PATH variable!\nPATH is currently set to: ${process.env.PATH}`);
172
173
  }
173
174
 
174
- function getDetoxVersion() {
175
+ const getDetoxVersion = _.once(() => {
175
176
  return require(path.join(__dirname, '../../package.json')).version;
176
- }
177
+ });
177
178
 
178
- let _iosFrameworkPath;
179
- async function getFrameworkPath() {
180
- if (!_iosFrameworkPath) {
181
- _iosFrameworkPath = _doGetFrameworkPath();
182
- }
179
+ const getBuildFolderName = _.once(async () => {
180
+ const detoxVersion = getDetoxVersion();
181
+ const xcodeVersion = await exec('xcodebuild -version').then(result => result.stdout.trim());
183
182
 
184
- return _iosFrameworkPath;
185
- }
183
+ return crypto.createHash('sha1')
184
+ .update(`${detoxVersion}\n${xcodeVersion}\n`)
185
+ .digest('hex');
186
+ });
186
187
 
187
- async function _doGetFrameworkPath() {
188
- const detoxVersion = getDetoxVersion();
189
- const sha1 = (await exec(`(echo "${detoxVersion}" && xcodebuild -version) | shasum | awk '{print $1}'`)).stdout.trim();
190
- return `${DETOX_LIBRARY_ROOT_PATH}/ios/${sha1}/Detox.framework`;
191
- }
188
+ const getFrameworkDirPath = `${DETOX_LIBRARY_ROOT_PATH}/ios/framework`;
189
+
190
+ const getFrameworkPath = _.once(async () => {
191
+ const buildFolder = await getBuildFolderName();
192
+ return `${getFrameworkDirPath}/${buildFolder}/Detox.framework`;
193
+ });
194
+
195
+ const getXCUITestRunnerDirPath = `${DETOX_LIBRARY_ROOT_PATH}/ios/xcuitest-runner`;
196
+
197
+ const getXCUITestRunnerPath = _.once(async () => {
198
+ const buildFolder = await getBuildFolderName();
199
+ const derivedDataPath = `${getXCUITestRunnerDirPath}/${buildFolder}`;
200
+ const xctestrunPath = await exec(`find ${derivedDataPath} -name "*.xctestrun" -print -quit`)
201
+ .then(result => result.stdout.trim());
202
+
203
+ if (!xctestrunPath) {
204
+ throw new DetoxRuntimeError(`Failed to find .xctestrun file in ${derivedDataPath}`);
205
+ }
206
+
207
+ return xctestrunPath;
208
+ });
192
209
 
193
210
  function getDetoxLibraryRootPath() {
194
211
  return DETOX_LIBRARY_ROOT_PATH;
@@ -219,7 +236,10 @@ module.exports = {
219
236
  getAndroidSdkManagerPath,
220
237
  getGmsaasPath,
221
238
  getDetoxVersion,
239
+ getFrameworkDirPath,
222
240
  getFrameworkPath,
241
+ getXCUITestRunnerDirPath,
242
+ getXCUITestRunnerPath,
223
243
  getAndroidSDKPath,
224
244
  getAndroidEmulatorPath,
225
245
  getDetoxLibraryRootPath,
@@ -43,6 +43,10 @@ module.exports = {
43
43
  getTitle: () => 'get title',
44
44
  full: (actionDescription) => `perform web view action: ${actionDescription}`
45
45
  },
46
+ systemActionDescription: {
47
+ tap: () => `tap`,
48
+ full: (actionDescription) => `perform system action: ${actionDescription}`
49
+ },
46
50
  expectDescription: {
47
51
  waitFor: (actionDescription) => `wait for expectation while ${actionDescription}`,
48
52
  waitForWithTimeout: (expectDescription, timeout) => `${expectDescription} with timeout (${timeout} ms)`,
@@ -1 +0,0 @@
1
- c4f4ccfd2fcba821086c7873260e855f
@@ -1 +0,0 @@
1
- 592e743660ec3256a4fbf492f9b426522512f62b
@@ -1 +0,0 @@
1
- d88429a82475ff09df92573cf92a97b2787c7f62d371faafa004a39308f08b3f
@@ -1 +0,0 @@
1
- cc8a61587f9e6c0ac85925cfbf3bb13ef42e2051f40675c88d80a7de82dedcc60fc46633575aef42721876eaad742bb107bd7e0e9f532903db9adc0a83115031
@@ -1 +0,0 @@
1
- 08b5bbe3db6b9be9616306b3570f7cb3
@@ -1 +0,0 @@
1
- dad3ec9cb42187fbe4f7a9b51fd24dd23fa45530
@@ -1 +0,0 @@
1
- c7190cb71ca0226b2f23abf05f3522989f319f68f8300c17bf31eb547ded8b66
@@ -1 +0,0 @@
1
- f0b4f5f51b5dec733b11d1af4b0bc77017895bbb17833f50a6640df7882f605dbc18569494d9aaece54270cf7fe87bf7060000d4802349d8e109b188bdd730b4
@@ -1 +0,0 @@
1
- 9505116d7cfb3b316e86ac32d28d903d35627852
@@ -1 +0,0 @@
1
- 441dc5808b355d05ab08c63bde1d1a8fbb908fb7e268b3ea17d03cbb391b1ef4
@@ -1 +0,0 @@
1
- acbb6862e83102362156aaa16d0c7b5daa77dced0ad2a4bc100b5efcb1a3418b6f6f1c9bf60d255c9e215192aa2141fcd0d0633e620e7de724d1452850348141
@@ -1 +0,0 @@
1
- d3d2aa3a8d5cadc566cf10a7da2a2ad698fd6f7d
@@ -1 +0,0 @@
1
- de03cc9848d2a6c0270536ff68c49f60c7bb654cd88ffe99f8e37a87d361350a
@@ -1 +0,0 @@
1
- 22870bcbdaa0a9c7a061947742541588a41bd20753006af39eceb089882b57fcea144874247c16320c8d9c096db043f666e862f93732eb898db26e9024d5bc8f
package/Detox-ios.tbz DELETED
Binary file
@@ -1,14 +0,0 @@
1
- #!/bin/bash -e
2
-
3
- SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
4
-
5
- XCODEVERSION=$(xcodebuild -version | grep -oEi "([0-9]*(\.[0-9]*)+)")
6
- if [ "${XCODEVERSION}" == "`echo -e "${XCODEVERSION}\n12.0" | sort --version-sort -r | head -n1`" ]; then
7
- echo "Xcode 12 and above; using modern script for building the framework to support Apple Silicon"
8
- FRAMEWORK_SCRIPT="build_universal_framework_modern.sh"
9
- else
10
- echo "Xcode 11 and below; using legacy script for building"
11
- FRAMEWORK_SCRIPT="build_universal_framework_legacy.sh"
12
- fi
13
-
14
- "${SCRIPTPATH}/${FRAMEWORK_SCRIPT}" "$@"
@@ -1,76 +0,0 @@
1
- #!/bin/bash -e
2
-
3
- PROJECT=$1
4
- OUTPUT_DIR=$2
5
- CONFIGURATION=Release
6
- PROJECT_NAME=Detox
7
-
8
- set -e
9
-
10
- function remove_arch() {
11
- lipo -create "${1}" "${2}" -output "${3}"
12
- }
13
-
14
- # Make sure the output directory exists
15
-
16
- mkdir -p "${OUTPUT_DIR}"
17
- rm -fr "${OUTPUT_DIR}/${PROJECT_NAME}.framework"
18
-
19
- TEMP_DIR=$(mktemp -d "$TMPDIR"DetoxBuild.XXXX)
20
- echo TEMP_DIR = "${TEMP_DIR}"
21
-
22
- # Step 0. Xcode version
23
-
24
- XCODEVERSION=$(xcodebuild -version | grep -oEi "([0-9]*(\.[0-9]*)+)")
25
- echo "Xcode ${XCODEVERSION}"
26
- USE_NEW_BUILD_SYSTEM="YES"
27
- if [ "${XCODEVERSION}" != "`echo -e "${XCODEVERSION}\n11.0" | sort --version-sort -r | head -n1`" ]; then
28
- USE_NEW_BUILD_SYSTEM="NO"
29
- fi
30
- echo "Using -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM}"
31
-
32
- # Step 1. Build Device and Simulator versions
33
-
34
- BUILD_IOS=`xcodebuild -project "${PROJECT}" -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM} -scheme Detox -configuration "${CONFIGURATION}" -arch arm64 -sdk iphoneos ONLY_ACTIVE_ARCH=NO VALID_ARCHS=arm64 -showBuildSettings | awk -F= '/TARGET_BUILD_DIR/{x=$NF; gsub(/^[ \t]+|[ \t]+$/,"",x); print x}'`
35
- BUILD_SIM=`xcodebuild -project "${PROJECT}" -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM} -scheme Detox -configuration "${CONFIGURATION}" -arch x86_64 -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO VALID_ARCHS=x86_64 -showBuildSettings | awk -F= '/TARGET_BUILD_DIR/{x=$NF; gsub(/^[ \t]+|[ \t]+$/,"",x); print x}'`
36
-
37
- echo ${BUILD_IOS}
38
- echo ${BUILD_SIM}
39
-
40
- xcodebuild -project "${PROJECT}" -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM} -scheme Detox -configuration "${CONFIGURATION}" -arch arm64 -sdk iphoneos ONLY_ACTIVE_ARCH=NO clean build VALID_ARCHS=arm64 -quiet
41
- xcodebuild -project "${PROJECT}" -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM} -scheme Detox -configuration "${CONFIGURATION}" -arch x86_64 -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO build VALID_ARCHS=x86_64 -quiet
42
-
43
- # Step 2. Copy the framework structure (from iphoneos build) to the universal folder
44
-
45
- cp -fR "${BUILD_IOS}/${PROJECT_NAME}.framework" "${TEMP_DIR}/"
46
-
47
- # Step 3. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory
48
-
49
- SIMULATOR_SWIFT_MODULES_DIR="${BUILD_SIM}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/."
50
- if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then
51
- cp -fR "${SIMULATOR_SWIFT_MODULES_DIR}" "${TEMP_DIR}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"
52
- fi
53
-
54
- # Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory
55
-
56
- remove_arch "${BUILD_SIM}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_IOS}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${TEMP_DIR}/${PROJECT_NAME}.framework/${PROJECT_NAME}"
57
-
58
- # Step 5. Create universal binaries for embedded frameworks
59
-
60
- for SUB_FRAMEWORK in $( ls "${TEMP_DIR}/${PROJECT_NAME}.framework/Frameworks" ); do
61
- if [ -d "${TEMP_DIR}/${PROJECT_NAME}.framework/Frameworks/$SUB_FRAMEWORK" ]; then
62
- echo "Processing ${SUB_FRAMEWORK} as a dir"
63
- BINARY_NAME="${SUB_FRAMEWORK%.*}"
64
-
65
- remove_arch "${BUILD_SIM}/${PROJECT_NAME}.framework/Frameworks/${SUB_FRAMEWORK}/${BINARY_NAME}" "${BUILD_IOS}/${PROJECT_NAME}.framework/Frameworks/${SUB_FRAMEWORK}/${BINARY_NAME}" "${TEMP_DIR}/${PROJECT_NAME}.framework/Frameworks/${SUB_FRAMEWORK}/${BINARY_NAME}"
66
-
67
- else
68
- echo "Processing ${SUB_FRAMEWORK} as a file"
69
-
70
- remove_arch "${BUILD_SIM}/${PROJECT_NAME}.framework/Frameworks/${SUB_FRAMEWORK}" "${BUILD_IOS}/${PROJECT_NAME}.framework/Frameworks/${SUB_FRAMEWORK}" "${TEMP_DIR}/${PROJECT_NAME}.framework/Frameworks/${SUB_FRAMEWORK}"
71
-
72
- fi
73
- done
74
-
75
- mv "${TEMP_DIR}/${PROJECT_NAME}.framework" "${OUTPUT_DIR}"/
76
- rm -fr "${TEMP_DIR}"
@@ -1,28 +0,0 @@
1
- #!/bin/bash -e
2
-
3
- PROJECT=$1
4
- OUTPUT_DIR=$2
5
- CONFIGURATION=Release
6
- PROJECT_NAME=Detox
7
-
8
- # Make sure the output directory exists
9
-
10
- mkdir -p "${OUTPUT_DIR}"
11
- rm -fr "${OUTPUT_DIR}/${PROJECT_NAME}.framework"
12
-
13
- # Step 0. Xcode version
14
-
15
- USE_NEW_BUILD_SYSTEM="YES"
16
- echo "Using -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM}"
17
-
18
- # Step 1. Build Device and Simulator versions
19
-
20
- BUILD_SIM=`xcodebuild -project "${PROJECT}" -scheme "Detox" -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM} -configuration "${CONFIGURATION}" -sdk iphonesimulator -destination "generic/platform=iOS Simulator" build -showBuildSettings | awk -F= '/TARGET_BUILD_DIR/{x=$NF; gsub(/^[ \t]+|[ \t]+$/,"",x); print x}'`
21
-
22
- echo ${BUILD_SIM}
23
-
24
- xcodebuild -project "${PROJECT}" -scheme "Detox" -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM} -configuration "${CONFIGURATION}" -sdk iphonesimulator -destination "generic/platform=iOS Simulator" build -quiet
25
-
26
- # Step 2. Copy the framework to output folder
27
-
28
- cp -fR "${BUILD_SIM}/${PROJECT_NAME}.framework" "${OUTPUT_DIR}"/