@btc-vision/bitcoin 6.4.10 → 6.4.11

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 (207) hide show
  1. package/.babelrc +4 -4
  2. package/.mocharc.json +13 -13
  3. package/.prettierrc.json +12 -12
  4. package/CHANGELOG.md +403 -403
  5. package/CONTRIBUTING.md +83 -83
  6. package/LICENSE +21 -21
  7. package/README.md +201 -201
  8. package/cjs/package.json +3 -3
  9. package/gulpfile.js +42 -42
  10. package/package.json +150 -150
  11. package/src/bip66.ts +107 -107
  12. package/src/block.ts +233 -233
  13. package/src/bufferutils.ts +188 -188
  14. package/src/crypto.ts +108 -108
  15. package/src/ecc_lib.ts +94 -94
  16. package/src/hooks/AdvancedSignatureManager.ts +104 -104
  17. package/src/hooks/SignatureManager.ts +84 -84
  18. package/src/index.ts +105 -105
  19. package/src/merkle.ts +31 -31
  20. package/src/opcodes.ts +280 -280
  21. package/src/payments/bip341.ts +140 -140
  22. package/src/payments/embed.ts +61 -61
  23. package/src/payments/index.ts +172 -172
  24. package/src/payments/lazy.ts +28 -28
  25. package/src/payments/p2ms.ts +156 -156
  26. package/src/payments/p2op.ts +195 -195
  27. package/src/payments/p2pk.ts +93 -93
  28. package/src/payments/p2pkh.ts +214 -214
  29. package/src/payments/p2tr.ts +309 -309
  30. package/src/psbt/bip371.ts +441 -441
  31. package/src/push_data.ts +97 -97
  32. package/src/script.ts +247 -247
  33. package/src/script_number.ts +72 -72
  34. package/src/script_signature.ts +91 -91
  35. package/src/transaction.ts +656 -656
  36. package/test/address.spec.ts +155 -155
  37. package/test/bitcoin.core.spec.ts +212 -212
  38. package/test/block.spec.ts +171 -171
  39. package/test/bufferutils.spec.ts +450 -450
  40. package/test/crypto.spec.ts +49 -49
  41. package/test/fixtures/address.json +329 -329
  42. package/test/fixtures/block.json +148 -148
  43. package/test/fixtures/bufferutils.json +102 -102
  44. package/test/fixtures/core/README.md +26 -26
  45. package/test/fixtures/core/base58_encode_decode.json +50 -50
  46. package/test/fixtures/core/base58_keys_invalid.json +152 -152
  47. package/test/fixtures/core/base58_keys_valid.json +452 -452
  48. package/test/fixtures/core/blocks.json +27 -27
  49. package/test/fixtures/core/sig_canonical.json +7 -7
  50. package/test/fixtures/core/sig_noncanonical.json +33 -33
  51. package/test/fixtures/core/sighash.json +3505 -3505
  52. package/test/fixtures/core/tx_valid.json +2023 -2023
  53. package/test/fixtures/crypto.json +43 -43
  54. package/test/fixtures/ecdsa.json +217 -217
  55. package/test/fixtures/ecpair.json +141 -141
  56. package/test/fixtures/embed.json +108 -108
  57. package/test/fixtures/p2ms.json +434 -434
  58. package/test/fixtures/p2pk.json +179 -179
  59. package/test/fixtures/p2pkh.json +276 -276
  60. package/test/fixtures/p2sh.json +508 -508
  61. package/test/fixtures/p2tr.json +1198 -1198
  62. package/test/fixtures/p2wpkh.json +290 -290
  63. package/test/fixtures/p2wsh.json +489 -489
  64. package/test/fixtures/psbt.json +924 -924
  65. package/test/fixtures/script.json +465 -465
  66. package/test/fixtures/script_number.json +225 -225
  67. package/test/fixtures/signature.json +140 -140
  68. package/test/fixtures/transaction.json +916 -916
  69. package/test/integration/_regtest.ts +6 -6
  70. package/test/integration/addresses.spec.ts +142 -142
  71. package/test/integration/bip32.spec.ts +130 -130
  72. package/test/integration/blocks.spec.ts +28 -28
  73. package/test/integration/cltv.spec.ts +241 -241
  74. package/test/integration/csv.spec.ts +452 -452
  75. package/test/integration/payments.spec.ts +110 -110
  76. package/test/integration/taproot.spec.ts +663 -663
  77. package/test/integration/transactions.spec.ts +668 -668
  78. package/test/payments.spec.ts +114 -114
  79. package/test/payments.utils.ts +165 -165
  80. package/test/psbt.spec.ts +1285 -1285
  81. package/test/script.spec.ts +186 -186
  82. package/test/script_number.spec.ts +26 -26
  83. package/test/script_signature.spec.ts +66 -66
  84. package/test/transaction.spec.ts +337 -337
  85. package/test/ts-node-register.js +7 -7
  86. package/test/tsconfig.json +48 -48
  87. package/test/types.spec.ts +53 -53
  88. package/tsconfig.base.json +27 -27
  89. package/tsconfig.json +19 -19
  90. package/tsconfig.webpack.json +18 -18
  91. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.ready +0 -0
  92. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.release-please-manifest.json +0 -3
  93. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CHANGELOG.md +0 -962
  94. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CONTRIBUTING.md +0 -34
  95. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/LICENSE +0 -24
  96. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/README.md +0 -273
  97. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/SECURITY.md +0 -2
  98. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/addon.gypi +0 -204
  99. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/bin/node-gyp.js +0 -138
  100. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/.release-please-manifest.json +0 -3
  101. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/LICENSE +0 -28
  102. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/ninja/build.ninja +0 -4
  103. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +0 -12
  104. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/GypVsCMake.md +0 -116
  105. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Hacking.md +0 -46
  106. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/InputFormatReference.md +0 -1080
  107. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/LanguageSpecification.md +0 -430
  108. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/README.md +0 -27
  109. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Testing.md +0 -450
  110. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/UserDocumentation.md +0 -965
  111. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp +0 -8
  112. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp.bat +0 -5
  113. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp_main.py +0 -45
  114. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -365
  115. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -206
  116. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -1272
  117. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -1547
  118. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -59
  119. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -153
  120. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -271
  121. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -574
  122. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -692
  123. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -711
  124. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -171
  125. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -169
  126. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -113
  127. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -55
  128. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  129. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -804
  130. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -1173
  131. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -1318
  132. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -127
  133. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -103
  134. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -461
  135. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -89
  136. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -57
  137. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -2745
  138. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -3976
  139. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -44
  140. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -2964
  141. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -67
  142. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -1391
  143. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -25
  144. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -3115
  145. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -98
  146. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -771
  147. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -1260
  148. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -174
  149. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -61
  150. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -373
  151. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -1938
  152. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +0 -53
  153. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -302
  154. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -3198
  155. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -65
  156. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +0 -3
  157. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +0 -177
  158. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +0 -23
  159. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +0 -15
  160. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +0 -108
  161. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +0 -252
  162. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +0 -83
  163. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +0 -359
  164. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +0 -61
  165. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +0 -192
  166. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/markers.py +0 -252
  167. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +0 -825
  168. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  169. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +0 -90
  170. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +0 -1030
  171. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/tags.py +0 -553
  172. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/utils.py +0 -172
  173. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/version.py +0 -563
  174. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pyproject.toml +0 -120
  175. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/release-please-config.json +0 -11
  176. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/test_gyp.py +0 -261
  177. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/Find-VisualStudio.cs +0 -250
  178. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/build.js +0 -227
  179. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/clean.js +0 -15
  180. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/configure.js +0 -328
  181. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/create-config-gypi.js +0 -150
  182. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/download.js +0 -39
  183. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-node-directory.js +0 -63
  184. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-python.js +0 -310
  185. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-visualstudio.js +0 -590
  186. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/install.js +0 -415
  187. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/list.js +0 -26
  188. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/log.js +0 -168
  189. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/node-gyp.js +0 -188
  190. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/process-release.js +0 -146
  191. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/rebuild.js +0 -12
  192. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/remove.js +0 -43
  193. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/util.js +0 -81
  194. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/macOS_Catalina_acid_test.sh +0 -21
  195. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/package.json +0 -51
  196. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/release-please-config.json +0 -40
  197. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/src/win_delay_load_hook.cc +0 -39
  198. package/browser/ops.d.ts +0 -126
  199. package/build/ops.d.ts +0 -126
  200. package/build/ops.js +0 -127
  201. package/coverage/tmp/coverage-31752-1735543485354-0.json +0 -1
  202. package/coverage/tmp/coverage-59920-1735543484555-0.json +0 -1
  203. package/coverage/tmp/coverage-66252-1735543483919-0.json +0 -1
  204. package/coverage/tmp/coverage-68440-1735543485236-0.json +0 -1
  205. package/coverage/tmp/coverage-70588-1735543484426-0.json +0 -1
  206. package/coverage/tmp/coverage-79292-1735543485296-0.json +0 -1
  207. package/coverage/tmp/coverage-80212-1735543483980-0.json +0 -1
@@ -1,450 +0,0 @@
1
- # Testing
2
-
3
- NOTE: this document is outdated and needs to be updated. Read with your own discretion.
4
-
5
- ## Introduction
6
-
7
- This document describes the GYP testing infrastructure,
8
- as provided by the `TestGyp.py` module.
9
-
10
- These tests emphasize testing the _behavior_ of the
11
- various GYP-generated build configurations:
12
- Visual Studio, Xcode, SCons, Make, etc.
13
- The goal is _not_ to test the output of the GYP generators by,
14
- for example, comparing a GYP-generated Makefile
15
- against a set of known "golden" Makefiles
16
- (although the testing infrastructure could
17
- be used to write those kinds of tests).
18
- The idea is that the generated build configuration files
19
- could be completely written to add a feature or fix a bug
20
- so long as they continue to support the functional behaviors
21
- defined by the tests: building programs, shared libraries, etc.
22
-
23
- ## "Hello, world!" GYP test configuration
24
-
25
- Here is an actual test configuration,
26
- a simple build of a C program to print `"Hello, world!"`.
27
-
28
- ```
29
- $ ls -l test/hello
30
- total 20
31
- -rw-r--r-- 1 knight knight 312 Jul 30 20:22 gyptest-all.py
32
- -rw-r--r-- 1 knight knight 307 Jul 30 20:22 gyptest-default.py
33
- -rwxr-xr-x 1 knight knight 326 Jul 30 20:22 gyptest-target.py
34
- -rw-r--r-- 1 knight knight 98 Jul 30 20:22 hello.c
35
- -rw-r--r-- 1 knight knight 142 Jul 30 20:22 hello.gyp
36
- $
37
- ```
38
-
39
- The `gyptest-*.py` files are three separate tests (test scripts)
40
- that use this configuration. The first one, `gyptest-all.py`,
41
- looks like this:
42
-
43
- ```
44
- #!/usr/bin/env python
45
-
46
- """
47
- Verifies simplest-possible build of a "Hello, world!" program
48
- using an explicit build target of 'all'.
49
- """
50
-
51
- import TestGyp
52
-
53
- test = TestGyp.TestGyp()
54
-
55
- test.run_gyp('hello.gyp')
56
-
57
- test.build_all('hello.gyp')
58
-
59
- test.run_built_executable('hello', stdout="Hello, world!\n")
60
-
61
- test.pass_test()
62
- ```
63
-
64
- The test script above runs GYP against the specified input file
65
- (`hello.gyp`) to generate a build configuration.
66
- It then tries to build the `'all'` target
67
- (or its equivalent) using the generated build configuration.
68
- Last, it verifies that the build worked as expected
69
- by running the executable program (`hello`)
70
- that was just presumably built by the generated configuration,
71
- and verifies that the output from the program
72
- matches the expected `stdout` string (`"Hello, world!\n"`).
73
-
74
- Which configuration is generated
75
- (i.e., which build tool to test)
76
- is specified when the test is run;
77
- see the next section.
78
-
79
- Surrounding the functional parts of the test
80
- described above are the header,
81
- which should be basically the same for each test
82
- (modulo a different description in the docstring):
83
-
84
- ```
85
- #!/usr/bin/env python
86
-
87
- """
88
- Verifies simplest-possible build of a "Hello, world!" program
89
- using an explicit build target of 'all'.
90
- """
91
-
92
- import TestGyp
93
-
94
- test = TestGyp.TestGyp()
95
- ```
96
-
97
- Similarly, the footer should be the same in every test:
98
-
99
- ```
100
- test.pass_test()
101
- ```
102
-
103
- ## Running tests
104
-
105
- Test scripts are run by the `gyptest.py` script.
106
- You can specify (an) explicit test script(s) to run:
107
-
108
- ```
109
- $ python gyptest.py test/hello/gyptest-all.py
110
- PYTHONPATH=/home/knight/src/gyp/trunk/test/lib
111
- TESTGYP_FORMAT=scons
112
- /usr/bin/python test/hello/gyptest-all.py
113
- PASSED
114
- $
115
- ```
116
-
117
- If you specify a directory, all test scripts
118
- (scripts prefixed with `gyptest-`) underneath
119
- the directory will be run:
120
-
121
- ```
122
- $ python gyptest.py test/hello
123
- PYTHONPATH=/home/knight/src/gyp/trunk/test/lib
124
- TESTGYP_FORMAT=scons
125
- /usr/bin/python test/hello/gyptest-all.py
126
- PASSED
127
- /usr/bin/python test/hello/gyptest-default.py
128
- PASSED
129
- /usr/bin/python test/hello/gyptest-target.py
130
- PASSED
131
- $
132
- ```
133
-
134
- Or you can specify the `-a` option to run all scripts
135
- in the tree:
136
-
137
- ```
138
- $ python gyptest.py -a
139
- PYTHONPATH=/home/knight/src/gyp/trunk/test/lib
140
- TESTGYP_FORMAT=scons
141
- /usr/bin/python test/configurations/gyptest-configurations.py
142
- PASSED
143
- /usr/bin/python test/defines/gyptest-defines.py
144
- PASSED
145
- .
146
- .
147
- .
148
- .
149
- /usr/bin/python test/variables/gyptest-commands.py
150
- PASSED
151
- $
152
- ```
153
-
154
- If any tests fail during the run,
155
- the `gyptest.py` script will report them in a
156
- summary at the end.
157
-
158
- ## Debugging tests
159
-
160
- Tests that create intermediate output do so under the gyp/out/testworkarea
161
- directory. On test completion, intermediate output is cleaned up. To preserve
162
- this output, set the environment variable PRESERVE=1. This can be handy to
163
- inspect intermediate data when debugging a test.
164
-
165
- You can also set PRESERVE\_PASS=1, PRESERVE\_FAIL=1 or PRESERVE\_NO\_RESULT=1
166
- to preserve output for tests that fall into one of those categories.
167
-
168
- # Specifying the format (build tool) to use
169
-
170
- By default, the `gyptest.py` script will generate configurations for
171
- the "primary" supported build tool for the platform you're on:
172
- Visual Studio on Windows,
173
- Xcode on Mac,
174
- and (currently) SCons on Linux.
175
- An alternate format (build tool) may be specified
176
- using the `-f` option:
177
-
178
- ```
179
- $ python gyptest.py -f make test/hello/gyptest-all.py
180
- PYTHONPATH=/home/knight/src/gyp/trunk/test/lib
181
- TESTGYP_FORMAT=make
182
- /usr/bin/python test/hello/gyptest-all.py
183
- PASSED
184
- $
185
- ```
186
-
187
- Multiple tools may be specified in a single pass as
188
- a comma-separated list:
189
-
190
- ```
191
- $ python gyptest.py -f make,scons test/hello/gyptest-all.py
192
- PYTHONPATH=/home/knight/src/gyp/trunk/test/lib
193
- TESTGYP_FORMAT=make
194
- /usr/bin/python test/hello/gyptest-all.py
195
- PASSED
196
- TESTGYP_FORMAT=scons
197
- /usr/bin/python test/hello/gyptest-all.py
198
- PASSED
199
- $
200
- ```
201
-
202
- ## Test script functions and methods
203
-
204
- The `TestGyp` class contains a lot of functionality
205
- intended to make it easy to write tests.
206
- This section describes the most useful pieces for GYP testing.
207
-
208
- (The `TestGyp` class is actually a subclass of more generic
209
- `TestCommon` and `TestCmd` base classes
210
- that contain even more functionality than is
211
- described here.)
212
-
213
- ### Initialization
214
-
215
- The standard initialization formula is:
216
-
217
- ```
218
- import TestGyp
219
- test = TestGyp.TestGyp()
220
- ```
221
-
222
- This copies the contents of the directory tree in which
223
- the test script lives to a temporary directory for execution,
224
- and arranges for the temporary directory's removal on exit.
225
-
226
- By default, any comparisons of output or file contents
227
- must be exact matches for the test to pass.
228
- If you need to use regular expressions for matches,
229
- a useful alternative initialization is:
230
-
231
- ```
232
- import TestGyp
233
- test = TestGyp.TestGyp(match = TestGyp.match_re,
234
- diff = TestGyp.diff_re)`
235
- ```
236
-
237
- ### Running GYP
238
-
239
- The canonical invocation is to simply specify the `.gyp` file to be executed:
240
-
241
- ```
242
- test.run_gyp('file.gyp')
243
- ```
244
-
245
- Additional GYP arguments may be specified:
246
-
247
- ```
248
- test.run_gyp('file.gyp', arguments=['arg1', 'arg2', ...])
249
- ```
250
-
251
- To execute GYP from a subdirectory (where, presumably, the specified file
252
- lives):
253
-
254
- ```
255
- test.run_gyp('file.gyp', chdir='subdir')
256
- ```
257
-
258
- ### Running the build tool
259
-
260
- Running the build tool requires passing in a `.gyp` file, which may be used to
261
- calculate the name of a specific build configuration file (such as a MSVS
262
- solution file corresponding to the `.gyp` file).
263
-
264
- There are several different `.build_*()` methods for invoking different types
265
- of builds.
266
-
267
- To invoke a build tool with an explicit `all` target (or equivalent):
268
-
269
- ```
270
- test.build_all('file.gyp')
271
- ```
272
-
273
- To invoke a build tool with its default behavior (for example, executing `make`
274
- with no targets specified):
275
-
276
- ```
277
- test.build_default('file.gyp')
278
- ```
279
-
280
- To invoke a build tool with an explicit specified target:
281
-
282
- ```
283
- test.build_target('file.gyp', 'target')
284
- ```
285
-
286
- ### Running executables
287
-
288
- The most useful method executes a program built by the GYP-generated
289
- configuration:
290
-
291
- ```
292
- test.run_built_executable('program')
293
- ```
294
-
295
- The `.run_built_executable()` method will account for the actual built target
296
- output location for the build tool being tested, as well as tack on any
297
- necessary executable file suffix for the platform (for example `.exe` on
298
- Windows).
299
-
300
- `stdout=` and `stderr=` keyword arguments specify expected standard output and
301
- error output, respectively. Failure to match these (if specified) will cause
302
- the test to fail. An explicit `None` value will suppress that verification:
303
-
304
- ```
305
- test.run_built_executable('program',
306
- stdout="expect this output\n",
307
- stderr=None)
308
- ```
309
-
310
- Note that the default values are `stdout=None` and `stderr=''` (that is, no
311
- check for standard output, and error output must be empty).
312
-
313
- Arbitrary executables (not necessarily those built by GYP) can be executed with
314
- the lower-level `.run()` method:
315
-
316
- ```
317
- test.run('program')
318
- ```
319
-
320
- The program must be in the local directory (that is, the temporary directory
321
- for test execution) or be an absolute path name.
322
-
323
- ### Fetching command output
324
-
325
- ```
326
- test.stdout()
327
- ```
328
-
329
- Returns the standard output from the most recent executed command (including
330
- `.run_gyp()`, `.build_*()`, or `.run*()` methods).
331
-
332
- ```
333
- test.stderr()
334
- ```
335
-
336
- Returns the error output from the most recent executed command (including
337
- `.run_gyp()`, `.build_*()`, or `.run*()` methods).
338
-
339
- ### Verifying existence or non-existence of files or directories
340
-
341
- ```
342
- test.must_exist('file_or_dir')
343
- ```
344
-
345
- Verifies that the specified file or directory exists, and fails the test if it
346
- doesn't.
347
-
348
- ```
349
- test.must_not_exist('file_or_dir')
350
- ```
351
-
352
- Verifies that the specified file or directory does not exist, and fails the
353
- test if it does.
354
-
355
- ### Verifying file contents
356
-
357
- ```
358
- test.must_match('file', 'expected content\n')
359
- ```
360
-
361
- Verifies that the content of the specified file match the expected string, and
362
- fails the test if it does not. By default, the match must be exact, but
363
- line-by-line regular expressions may be used if the `TestGyp` object was
364
- initialized with `TestGyp.match_re`.
365
-
366
- ```
367
- test.must_not_match('file', 'expected content\n')
368
- ```
369
-
370
- Verifies that the content of the specified file does _not_ match the expected
371
- string, and fails the test if it does. By default, the match must be exact,
372
- but line-by-line regular expressions may be used if the `TestGyp` object was
373
- initialized with `TestGyp.match_re`.
374
-
375
- ```
376
- test.must_contain('file', 'substring')
377
- ```
378
-
379
- Verifies that the specified file contains the specified substring, and fails
380
- the test if it does not.
381
-
382
- ```
383
- test.must_not_contain('file', 'substring')
384
- ```
385
-
386
- Verifies that the specified file does not contain the specified substring, and
387
- fails the test if it does.
388
-
389
- ```
390
- test.must_contain_all_lines(output, lines)
391
- ```
392
-
393
- Verifies that the output string contains all of the "lines" in the specified
394
- list of lines. In practice, the lines can be any substring and need not be
395
- `\n`-terminaed lines per se. If any line is missing, the test fails.
396
-
397
- ```
398
- test.must_not_contain_any_lines(output, lines)
399
- ```
400
-
401
- Verifies that the output string does _not_ contain any of the "lines" in the
402
- specified list of lines. In practice, the lines can be any substring and need
403
- not be `\n`-terminaed lines per se. If any line exists in the output string,
404
- the test fails.
405
-
406
- ```
407
- test.must_contain_any_line(output, lines)
408
- ```
409
-
410
- Verifies that the output string contains at least one of the "lines" in the
411
- specified list of lines. In practice, the lines can be any substring and need
412
- not be `\n`-terminaed lines per se. If none of the specified lines is present,
413
- the test fails.
414
-
415
- ### Reading file contents
416
-
417
- ```
418
- test.read('file')
419
- ```
420
-
421
- Returns the contents of the specified file. Directory elements contained in a
422
- list will be joined:
423
-
424
- ```
425
- test.read(['subdir', 'file'])
426
- ```
427
-
428
- ### Test success or failure
429
-
430
- ```
431
- test.fail_test()
432
- ```
433
-
434
- Fails the test, reporting `FAILED` on standard output and exiting with an exit
435
- status of `1`.
436
-
437
- ```
438
- test.pass_test()
439
- ```
440
-
441
- Passes the test, reporting `PASSED` on standard output and exiting with an exit
442
- status of `0`.
443
-
444
- ```
445
- test.no_result()
446
- ```
447
-
448
- Indicates the test had no valid result (i.e., the conditions could not be
449
- tested because of an external factor like a full file system). Reports `NO
450
- RESULT` on standard output and exits with a status of `2`.