exiftool-vendored.exe 12.82.0 → 12.84.0

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 (270) hide show
  1. package/README.md +6 -0
  2. package/bin/exiftool.exe +0 -0
  3. package/bin/exiftool_files/Changes +37 -0
  4. package/bin/exiftool_files/Licenses_Strawberry_Perl.zip +0 -0
  5. package/bin/exiftool_files/README +3 -2
  6. package/bin/exiftool_files/build_geolocation +872 -0
  7. package/bin/exiftool_files/config_files/example.config +2 -2
  8. package/bin/exiftool_files/exiftool.pl +28 -6
  9. package/bin/exiftool_files/fmt_files/gpx.fmt +2 -1
  10. package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +2 -1
  11. package/bin/exiftool_files/lib/Archive/Zip/Archive.pm +399 -65
  12. package/bin/exiftool_files/lib/Archive/Zip/DirectoryMember.pm +1 -1
  13. package/bin/exiftool_files/lib/Archive/Zip/FileMember.pm +1 -1
  14. package/bin/exiftool_files/lib/Archive/Zip/Member.pm +499 -195
  15. package/bin/exiftool_files/lib/Archive/Zip/NewFileMember.pm +1 -1
  16. package/bin/exiftool_files/lib/Archive/Zip/StringMember.pm +2 -2
  17. package/bin/exiftool_files/lib/Archive/Zip/ZipFileMember.pm +79 -20
  18. package/bin/exiftool_files/lib/Archive/Zip.pm +179 -29
  19. package/bin/exiftool_files/lib/AutoLoader.pm +453 -0
  20. package/bin/exiftool_files/lib/B/Deparse.pm +209 -137
  21. package/bin/exiftool_files/lib/B.pm +1 -1
  22. package/bin/exiftool_files/lib/Benchmark.pm +1123 -0
  23. package/bin/exiftool_files/lib/Class/Struct.pm +2 -2
  24. package/bin/exiftool_files/lib/Compress/Raw/Bzip2.pm +14 -9
  25. package/bin/exiftool_files/lib/Compress/Raw/Lzma.pm +982 -0
  26. package/bin/exiftool_files/lib/Compress/Raw/Zlib.pm +91 -86
  27. package/bin/exiftool_files/lib/Compress/Zlib.pm +105 -100
  28. package/bin/exiftool_files/lib/Config.pm +9 -9
  29. package/bin/exiftool_files/lib/Config_heavy.pl +36 -33
  30. package/bin/exiftool_files/lib/CryptX.pm +2 -82
  31. package/bin/exiftool_files/lib/Data/Dumper.pm +2 -2
  32. package/bin/exiftool_files/lib/Digest/MD5.pm +12 -9
  33. package/bin/exiftool_files/lib/Digest/Perl/MD5.pm +1 -191
  34. package/bin/exiftool_files/lib/Digest/base.pm +26 -20
  35. package/bin/exiftool_files/lib/DynaLoader.pm +7 -4
  36. package/bin/exiftool_files/lib/Encode.pm +3 -3
  37. package/bin/exiftool_files/lib/Errno.pm +13 -13
  38. package/bin/exiftool_files/lib/Exporter/Heavy.pm +2 -2
  39. package/bin/exiftool_files/lib/Exporter.pm +1 -1
  40. package/bin/exiftool_files/lib/ExtUtils/Command/MM.pm +323 -0
  41. package/bin/exiftool_files/lib/ExtUtils/Command.pm +382 -0
  42. package/bin/exiftool_files/lib/File/Find.pm +1 -1
  43. package/bin/exiftool_files/lib/File/Glob.pm +1 -8
  44. package/bin/exiftool_files/lib/File/GlobMapper.pm +2 -2
  45. package/bin/exiftool_files/lib/File/HomeDir/Darwin/Carbon.pm +2 -40
  46. package/bin/exiftool_files/lib/File/HomeDir/Darwin/Cocoa.pm +2 -34
  47. package/bin/exiftool_files/lib/File/HomeDir/Darwin.pm +2 -28
  48. package/bin/exiftool_files/lib/File/HomeDir/Driver.pm +2 -35
  49. package/bin/exiftool_files/lib/File/HomeDir/FreeDesktop.pm +2 -62
  50. package/bin/exiftool_files/lib/File/HomeDir/MacOS9.pm +2 -53
  51. package/bin/exiftool_files/lib/File/HomeDir/Test.pm +2 -43
  52. package/bin/exiftool_files/lib/File/HomeDir/Unix.pm +2 -53
  53. package/bin/exiftool_files/lib/File/HomeDir/Windows.pm +2 -69
  54. package/bin/exiftool_files/lib/File/HomeDir.pm +5 -416
  55. package/bin/exiftool_files/lib/File/Path.pm +3 -3
  56. package/bin/exiftool_files/lib/File/Spec/Win32.pm +2 -2
  57. package/bin/exiftool_files/lib/File/Temp.pm +70 -35
  58. package/bin/exiftool_files/lib/File/Which.pm +1 -240
  59. package/bin/exiftool_files/lib/File/stat.pm +3 -2
  60. package/bin/exiftool_files/lib/IO/Compress/Adapter/Bzip2.pm +16 -17
  61. package/bin/exiftool_files/lib/IO/Compress/Adapter/Deflate.pm +19 -20
  62. package/bin/exiftool_files/lib/IO/Compress/Base/Common.pm +5 -5
  63. package/bin/exiftool_files/lib/IO/Compress/Base.pm +35 -26
  64. package/bin/exiftool_files/lib/IO/Compress/Brotli.pm +159 -0
  65. package/bin/exiftool_files/lib/IO/Compress/Bzip2.pm +50 -25
  66. package/bin/exiftool_files/lib/IO/Compress/Gzip/Constants.pm +6 -6
  67. package/bin/exiftool_files/lib/IO/Compress/Gzip.pm +58 -32
  68. package/bin/exiftool_files/lib/IO/Compress/RawDeflate.pm +63 -38
  69. package/bin/exiftool_files/lib/IO/Compress/Zlib/Extra.pm +20 -20
  70. package/bin/exiftool_files/lib/IO/Dir.pm +1 -1
  71. package/bin/exiftool_files/lib/IO/File.pm +1 -1
  72. package/bin/exiftool_files/lib/IO/Handle.pm +1 -21
  73. package/bin/exiftool_files/lib/IO/Pipe.pm +1 -1
  74. package/bin/exiftool_files/lib/IO/Seekable.pm +1 -1
  75. package/bin/exiftool_files/lib/IO/Select.pm +16 -2
  76. package/bin/exiftool_files/lib/IO/Socket/INET.pm +14 -9
  77. package/bin/exiftool_files/lib/IO/Socket/UNIX.pm +17 -1
  78. package/bin/exiftool_files/lib/IO/Socket.pm +474 -126
  79. package/bin/exiftool_files/lib/IO/String.pm +425 -0
  80. package/bin/exiftool_files/lib/IO/Uncompress/Adapter/Inflate.pm +13 -14
  81. package/bin/exiftool_files/lib/IO/Uncompress/Base.pm +142 -132
  82. package/bin/exiftool_files/lib/IO/Uncompress/Brotli.pm +119 -0
  83. package/bin/exiftool_files/lib/IO/Uncompress/Gunzip.pm +43 -37
  84. package/bin/exiftool_files/lib/IO/Uncompress/RawInflate.pm +49 -43
  85. package/bin/exiftool_files/lib/IO.pm +2 -2
  86. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +51 -7
  87. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +5 -2
  88. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +18 -5
  89. package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +29 -0
  90. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +19 -2
  91. package/bin/exiftool_files/lib/Image/ExifTool/GM.pm +17 -8
  92. package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
  93. package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +163 -101
  94. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +18 -10
  95. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +7 -6
  96. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +6 -1
  97. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +5 -0
  98. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +15 -6
  99. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +18 -9
  100. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +24 -5
  101. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +2 -1
  102. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +165 -132
  103. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +3 -0
  104. package/bin/exiftool_files/lib/Image/ExifTool.pm +45 -23
  105. package/bin/exiftool_files/lib/Image/ExifTool.pod +23 -14
  106. package/bin/exiftool_files/lib/List/Util.pm +97 -8
  107. package/bin/exiftool_files/lib/MIME/Base64.pm +5 -5
  108. package/bin/exiftool_files/lib/MIME/Charset/_Compat.pm +106 -0
  109. package/bin/exiftool_files/lib/MIME/Charset.pm +1303 -0
  110. package/bin/exiftool_files/lib/Math/BigFloat.pm +444 -27
  111. package/bin/exiftool_files/lib/Math/BigInt/Calc.pm +296 -313
  112. package/bin/exiftool_files/lib/Math/BigInt/FastCalc.pm +1 -1
  113. package/bin/exiftool_files/lib/Math/BigInt/GMP.pm +2 -115
  114. package/bin/exiftool_files/lib/Math/BigInt/LTM.pm +2 -24
  115. package/bin/exiftool_files/lib/Math/BigInt/Lib.pm +61 -32
  116. package/bin/exiftool_files/lib/Math/BigInt.pm +292 -107
  117. package/bin/exiftool_files/lib/POSIX.pm +1 -1
  118. package/bin/exiftool_files/lib/PerlIO/scalar.pm +41 -0
  119. package/bin/exiftool_files/lib/PerlIO.pm +397 -0
  120. package/bin/exiftool_files/lib/Portable/CPAN.pm +94 -94
  121. package/bin/exiftool_files/lib/Portable/Config.pm +94 -94
  122. package/bin/exiftool_files/lib/Portable/FileSpec.pm +180 -180
  123. package/bin/exiftool_files/lib/Portable/HomeDir.pm +110 -110
  124. package/bin/exiftool_files/lib/Portable/LoadYaml.pm +430 -430
  125. package/bin/exiftool_files/lib/Portable/minicpan.pm +55 -55
  126. package/bin/exiftool_files/lib/Portable.pm +246 -320
  127. package/bin/exiftool_files/lib/Scalar/Util.pm +9 -4
  128. package/bin/exiftool_files/lib/Socket.pm +16 -12
  129. package/bin/exiftool_files/lib/Storable.pm +1444 -1441
  130. package/bin/exiftool_files/lib/TAP/Base.pm +133 -0
  131. package/bin/exiftool_files/lib/TAP/Formatter/Base.pm +467 -0
  132. package/bin/exiftool_files/lib/TAP/Formatter/Color.pm +116 -0
  133. package/bin/exiftool_files/lib/TAP/Formatter/Console/ParallelSession.pm +201 -0
  134. package/bin/exiftool_files/lib/TAP/Formatter/Console/Session.pm +205 -0
  135. package/bin/exiftool_files/lib/TAP/Formatter/Console.pm +100 -0
  136. package/bin/exiftool_files/lib/TAP/Formatter/File/Session.pm +95 -0
  137. package/bin/exiftool_files/lib/TAP/Formatter/File.pm +56 -0
  138. package/bin/exiftool_files/lib/TAP/Formatter/Session.pm +220 -0
  139. package/bin/exiftool_files/lib/TAP/Harness/Beyond.pod +426 -0
  140. package/bin/exiftool_files/lib/TAP/Harness/Env.pm +215 -0
  141. package/bin/exiftool_files/lib/TAP/Harness.pm +1054 -0
  142. package/bin/exiftool_files/lib/TAP/Object.pm +155 -0
  143. package/bin/exiftool_files/lib/TAP/Parser/Aggregator.pm +414 -0
  144. package/bin/exiftool_files/lib/TAP/Parser/Grammar.pm +584 -0
  145. package/bin/exiftool_files/lib/TAP/Parser/Iterator/Array.pm +100 -0
  146. package/bin/exiftool_files/lib/TAP/Parser/Iterator/Process.pm +378 -0
  147. package/bin/exiftool_files/lib/TAP/Parser/Iterator/Stream.pm +116 -0
  148. package/bin/exiftool_files/lib/TAP/Parser/Iterator.pm +162 -0
  149. package/bin/exiftool_files/lib/TAP/Parser/IteratorFactory.pm +339 -0
  150. package/bin/exiftool_files/lib/TAP/Parser/Multiplexer.pm +194 -0
  151. package/bin/exiftool_files/lib/TAP/Parser/Result/Bailout.pm +62 -0
  152. package/bin/exiftool_files/lib/TAP/Parser/Result/Comment.pm +60 -0
  153. package/bin/exiftool_files/lib/TAP/Parser/Result/Plan.pm +119 -0
  154. package/bin/exiftool_files/lib/TAP/Parser/Result/Pragma.pm +62 -0
  155. package/bin/exiftool_files/lib/TAP/Parser/Result/Test.pm +271 -0
  156. package/bin/exiftool_files/lib/TAP/Parser/Result/Unknown.pm +48 -0
  157. package/bin/exiftool_files/lib/TAP/Parser/Result/Version.pm +62 -0
  158. package/bin/exiftool_files/lib/TAP/Parser/Result/YAML.pm +61 -0
  159. package/bin/exiftool_files/lib/TAP/Parser/Result.pm +297 -0
  160. package/bin/exiftool_files/lib/TAP/Parser/ResultFactory.pm +183 -0
  161. package/bin/exiftool_files/lib/TAP/Parser/Scheduler/Job.pm +127 -0
  162. package/bin/exiftool_files/lib/TAP/Parser/Scheduler/Spinner.pm +61 -0
  163. package/bin/exiftool_files/lib/TAP/Parser/Scheduler.pm +448 -0
  164. package/bin/exiftool_files/lib/TAP/Parser/Source.pm +381 -0
  165. package/bin/exiftool_files/lib/TAP/Parser/SourceHandler/Executable.pm +184 -0
  166. package/bin/exiftool_files/lib/TAP/Parser/SourceHandler/File.pm +136 -0
  167. package/bin/exiftool_files/lib/TAP/Parser/SourceHandler/Handle.pm +124 -0
  168. package/bin/exiftool_files/lib/TAP/Parser/SourceHandler/Perl.pm +370 -0
  169. package/bin/exiftool_files/lib/TAP/Parser/SourceHandler/RawTAP.pm +130 -0
  170. package/bin/exiftool_files/lib/TAP/Parser/SourceHandler.pm +191 -0
  171. package/bin/exiftool_files/lib/TAP/Parser/YAMLish/Reader.pm +332 -0
  172. package/bin/exiftool_files/lib/TAP/Parser/YAMLish/Writer.pm +254 -0
  173. package/bin/exiftool_files/lib/TAP/Parser.pm +1931 -0
  174. package/bin/exiftool_files/lib/Test/Builder/Formatter.pm +107 -0
  175. package/bin/exiftool_files/lib/Test/Builder/IO/Scalar.pm +659 -0
  176. package/bin/exiftool_files/lib/Test/Builder/Module.pm +182 -0
  177. package/bin/exiftool_files/lib/Test/Builder/Tester/Color.pm +51 -0
  178. package/bin/exiftool_files/lib/Test/Builder/Tester.pm +675 -0
  179. package/bin/exiftool_files/lib/Test/Builder/TodoDiag.pm +68 -0
  180. package/bin/exiftool_files/lib/Test/Builder.pm +2653 -0
  181. package/bin/exiftool_files/lib/Test/Harness.pm +618 -0
  182. package/bin/exiftool_files/lib/Test/More.pm +1997 -0
  183. package/bin/exiftool_files/lib/Test/Simple.pm +220 -0
  184. package/bin/exiftool_files/lib/Test/Tester/Capture.pm +241 -0
  185. package/bin/exiftool_files/lib/Test/Tester/CaptureRunner.pm +79 -0
  186. package/bin/exiftool_files/lib/Test/Tester/Delegate.pm +45 -0
  187. package/bin/exiftool_files/lib/Test/Tester.pm +695 -0
  188. package/bin/exiftool_files/lib/Test/Tutorial.pod +618 -0
  189. package/bin/exiftool_files/lib/Test/use/ok.pm +64 -0
  190. package/bin/exiftool_files/lib/Text/ParseWords.pm +303 -0
  191. package/bin/exiftool_files/lib/Tie/StdHandle.pm +2 -2
  192. package/bin/exiftool_files/lib/Time/HiRes.pm +73 -68
  193. package/bin/exiftool_files/lib/Time/Local.pm +82 -35
  194. package/bin/exiftool_files/lib/Time/Piece.pm +19 -4
  195. package/bin/exiftool_files/lib/Time/Seconds.pm +1 -1
  196. package/bin/exiftool_files/lib/UNIVERSAL.pm +203 -0
  197. package/bin/exiftool_files/lib/Unicode/GCString.pm +60 -0
  198. package/bin/exiftool_files/lib/Unicode/LineBreak/Constants.pm +68 -0
  199. package/bin/exiftool_files/lib/Unicode/LineBreak.pm +248 -0
  200. package/bin/exiftool_files/lib/Win32/API/Struct.pm +1 -177
  201. package/bin/exiftool_files/lib/Win32/API/Type.pm +1 -100
  202. package/bin/exiftool_files/lib/Win32/API.pm +1 -830
  203. package/bin/exiftool_files/lib/Win32/FindFile.pm +2 -123
  204. package/bin/exiftool_files/lib/Win32.pm +213 -89
  205. package/bin/exiftool_files/lib/Win32API/File.pm +1 -1
  206. package/bin/exiftool_files/lib/auto/B/B.xs.dll +0 -0
  207. package/bin/exiftool_files/lib/auto/Compress/Raw/Bzip2/Bzip2.xs.dll +0 -0
  208. package/bin/exiftool_files/lib/auto/Compress/Raw/Lzma/Lzma.xs.dll +0 -0
  209. package/bin/exiftool_files/lib/auto/Compress/Raw/Lzma/autosplit.ix +3 -0
  210. package/bin/exiftool_files/lib/auto/Compress/Raw/Zlib/Zlib.xs.dll +0 -0
  211. package/bin/exiftool_files/lib/auto/CryptX/CryptX.xs.dll +0 -0
  212. package/bin/exiftool_files/lib/auto/Cwd/Cwd.xs.dll +0 -0
  213. package/bin/exiftool_files/lib/auto/Data/Dumper/Dumper.xs.dll +0 -0
  214. package/bin/exiftool_files/lib/auto/Digest/MD5/MD5.xs.dll +0 -0
  215. package/bin/exiftool_files/lib/auto/Digest/SHA/SHA.xs.dll +0 -0
  216. package/bin/exiftool_files/lib/auto/Encode/Encode.xs.dll +0 -0
  217. package/bin/exiftool_files/lib/auto/Fcntl/Fcntl.xs.dll +0 -0
  218. package/bin/exiftool_files/lib/auto/File/Glob/Glob.xs.dll +0 -0
  219. package/bin/exiftool_files/lib/auto/IO/Compress/Brotli/Brotli.xs.dll +0 -0
  220. package/bin/exiftool_files/lib/auto/IO/IO.xs.dll +0 -0
  221. package/bin/exiftool_files/lib/auto/List/Util/Util.xs.dll +0 -0
  222. package/bin/exiftool_files/lib/auto/MIME/Base64/Base64.xs.dll +0 -0
  223. package/bin/exiftool_files/lib/auto/Math/BigInt/FastCalc/FastCalc.xs.dll +0 -0
  224. package/bin/exiftool_files/lib/auto/Math/BigInt/GMP/GMP.xs.dll +0 -0
  225. package/bin/exiftool_files/lib/auto/POSIX/POSIX.xs.dll +0 -0
  226. package/bin/exiftool_files/lib/auto/PerlIO/scalar/scalar.xs.dll +0 -0
  227. package/bin/exiftool_files/lib/auto/Socket/Socket.xs.dll +0 -0
  228. package/bin/exiftool_files/lib/auto/Storable/Storable.xs.dll +0 -0
  229. package/bin/exiftool_files/lib/auto/Time/HiRes/HiRes.xs.dll +0 -0
  230. package/bin/exiftool_files/lib/auto/Time/Piece/Piece.xs.dll +0 -0
  231. package/bin/exiftool_files/lib/auto/Unicode/LineBreak/LineBreak.xs.dll +0 -0
  232. package/bin/exiftool_files/lib/auto/Win32/API/API.xs.dll +0 -0
  233. package/bin/exiftool_files/lib/auto/Win32/FindFile/FindFile.xs.dll +0 -0
  234. package/bin/exiftool_files/lib/auto/Win32/Win32.xs.dll +0 -0
  235. package/bin/exiftool_files/lib/auto/Win32API/File/File.xs.dll +0 -0
  236. package/bin/exiftool_files/lib/auto/mro/mro.xs.dll +0 -0
  237. package/bin/exiftool_files/lib/auto/re/re.xs.dll +0 -0
  238. package/bin/exiftool_files/lib/feature.pm +49 -17
  239. package/bin/exiftool_files/lib/mro.pm +4 -20
  240. package/bin/exiftool_files/lib/overload.pm +15 -15
  241. package/bin/exiftool_files/lib/parent.pm +10 -2
  242. package/bin/exiftool_files/lib/re.pm +91 -33
  243. package/bin/exiftool_files/lib/warnings.pm +17 -6
  244. package/bin/exiftool_files/libgcc_s_seh-1.dll +0 -0
  245. package/bin/exiftool_files/liblzma-5__.dll +0 -0
  246. package/bin/exiftool_files/libstdc++-6.dll +0 -0
  247. package/bin/exiftool_files/libwinpthread-1.dll +0 -0
  248. package/bin/exiftool_files/perl.exe +0 -0
  249. package/bin/exiftool_files/perl532.dll +0 -0
  250. package/package.json +6 -4
  251. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/cs.pm +0 -978
  252. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/de.pm +0 -1975
  253. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/en_ca.pm +0 -44
  254. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/en_gb.pm +0 -124
  255. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/es.pm +0 -2921
  256. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/fi.pm +0 -1116
  257. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/fr.pm +0 -3171
  258. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/it.pm +0 -2750
  259. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ja.pm +0 -10256
  260. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ko.pm +0 -4499
  261. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/nl.pm +0 -1270
  262. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/pl.pm +0 -3019
  263. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ru.pm +0 -18220
  264. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/sk.pm +0 -441
  265. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/sv.pm +0 -714
  266. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/tr.pm +0 -452
  267. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/zh_cn.pm +0 -2225
  268. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/zh_tw.pm +0 -72
  269. package/bin/exiftool_files/libgcc_s_dw2-1.dll +0 -0
  270. package/bin/exiftool_files/perl530.dll +0 -0
@@ -0,0 +1,618 @@
1
+ =head1 NAME
2
+
3
+ Test::Tutorial - A tutorial about writing really basic tests
4
+
5
+ =head1 DESCRIPTION
6
+
7
+
8
+ I<AHHHHHHH!!!! NOT TESTING! Anything but testing!
9
+ Beat me, whip me, send me to Detroit, but don't make
10
+ me write tests!>
11
+
12
+ I<*sob*>
13
+
14
+ I<Besides, I don't know how to write the damned things.>
15
+
16
+
17
+ Is this you? Is writing tests right up there with writing
18
+ documentation and having your fingernails pulled out? Did you open up
19
+ a test and read
20
+
21
+ ######## We start with some black magic
22
+
23
+ and decide that's quite enough for you?
24
+
25
+ It's ok. That's all gone now. We've done all the black magic for
26
+ you. And here are the tricks...
27
+
28
+
29
+ =head2 Nuts and bolts of testing.
30
+
31
+ Here's the most basic test program.
32
+
33
+ #!/usr/bin/perl -w
34
+
35
+ print "1..1\n";
36
+
37
+ print 1 + 1 == 2 ? "ok 1\n" : "not ok 1\n";
38
+
39
+ Because 1 + 1 is 2, it prints:
40
+
41
+ 1..1
42
+ ok 1
43
+
44
+ What this says is: C<1..1> "I'm going to run one test." [1] C<ok 1>
45
+ "The first test passed". And that's about all magic there is to
46
+ testing. Your basic unit of testing is the I<ok>. For each thing you
47
+ test, an C<ok> is printed. Simple. L<Test::Harness> interprets your test
48
+ results to determine if you succeeded or failed (more on that later).
49
+
50
+ Writing all these print statements rapidly gets tedious. Fortunately,
51
+ there's L<Test::Simple>. It has one function, C<ok()>.
52
+
53
+ #!/usr/bin/perl -w
54
+
55
+ use Test::Simple tests => 1;
56
+
57
+ ok( 1 + 1 == 2 );
58
+
59
+ That does the same thing as the previous code. C<ok()> is the backbone
60
+ of Perl testing, and we'll be using it instead of roll-your-own from
61
+ here on. If C<ok()> gets a true value, the test passes. False, it
62
+ fails.
63
+
64
+ #!/usr/bin/perl -w
65
+
66
+ use Test::Simple tests => 2;
67
+ ok( 1 + 1 == 2 );
68
+ ok( 2 + 2 == 5 );
69
+
70
+ From that comes:
71
+
72
+ 1..2
73
+ ok 1
74
+ not ok 2
75
+ # Failed test (test.pl at line 5)
76
+ # Looks like you failed 1 tests of 2.
77
+
78
+ C<1..2> "I'm going to run two tests." This number is a I<plan>. It helps to
79
+ ensure your test program ran all the way through and didn't die or skip some
80
+ tests. C<ok 1> "The first test passed." C<not ok 2> "The second test failed".
81
+ Test::Simple helpfully prints out some extra commentary about your tests.
82
+
83
+ It's not scary. Come, hold my hand. We're going to give an example
84
+ of testing a module. For our example, we'll be testing a date
85
+ library, L<Date::ICal>. It's on CPAN, so download a copy and follow
86
+ along. [2]
87
+
88
+
89
+ =head2 Where to start?
90
+
91
+ This is the hardest part of testing, where do you start? People often get
92
+ overwhelmed at the apparent enormity of the task of testing a whole module.
93
+ The best place to start is at the beginning. L<Date::ICal> is an
94
+ object-oriented module, and that means you start by making an object. Test
95
+ C<new()>.
96
+
97
+ #!/usr/bin/perl -w
98
+
99
+ # assume these two lines are in all subsequent examples
100
+ use strict;
101
+ use warnings;
102
+
103
+ use Test::Simple tests => 2;
104
+
105
+ use Date::ICal;
106
+
107
+ my $ical = Date::ICal->new; # create an object
108
+ ok( defined $ical ); # check that we got something
109
+ ok( $ical->isa('Date::ICal') ); # and it's the right class
110
+
111
+ Run that and you should get:
112
+
113
+ 1..2
114
+ ok 1
115
+ ok 2
116
+
117
+ Congratulations! You've written your first useful test.
118
+
119
+
120
+ =head2 Names
121
+
122
+ That output isn't terribly descriptive, is it? When you have two tests you can
123
+ figure out which one is #2, but what if you have 102 tests?
124
+
125
+ Each test can be given a little descriptive name as the second
126
+ argument to C<ok()>.
127
+
128
+ use Test::Simple tests => 2;
129
+
130
+ ok( defined $ical, 'new() returned something' );
131
+ ok( $ical->isa('Date::ICal'), " and it's the right class" );
132
+
133
+ Now you'll see:
134
+
135
+ 1..2
136
+ ok 1 - new() returned something
137
+ ok 2 - and it's the right class
138
+
139
+
140
+ =head2 Test the manual
141
+
142
+ The simplest way to build up a decent testing suite is to just test what
143
+ the manual says it does. [3] Let's pull something out of the
144
+ L<Date::ICal/SYNOPSIS> and test that all its bits work.
145
+
146
+ #!/usr/bin/perl -w
147
+
148
+ use Test::Simple tests => 8;
149
+
150
+ use Date::ICal;
151
+
152
+ $ical = Date::ICal->new( year => 1964, month => 10, day => 16,
153
+ hour => 16, min => 12, sec => 47,
154
+ tz => '0530' );
155
+
156
+ ok( defined $ical, 'new() returned something' );
157
+ ok( $ical->isa('Date::ICal'), " and it's the right class" );
158
+ ok( $ical->sec == 47, ' sec()' );
159
+ ok( $ical->min == 12, ' min()' );
160
+ ok( $ical->hour == 16, ' hour()' );
161
+ ok( $ical->day == 17, ' day()' );
162
+ ok( $ical->month == 10, ' month()' );
163
+ ok( $ical->year == 1964, ' year()' );
164
+
165
+ Run that and you get:
166
+
167
+ 1..8
168
+ ok 1 - new() returned something
169
+ ok 2 - and it's the right class
170
+ ok 3 - sec()
171
+ ok 4 - min()
172
+ ok 5 - hour()
173
+ not ok 6 - day()
174
+ # Failed test (- at line 16)
175
+ ok 7 - month()
176
+ ok 8 - year()
177
+ # Looks like you failed 1 tests of 8.
178
+
179
+ Whoops, a failure! [4] L<Test::Simple> helpfully lets us know on what line the
180
+ failure occurred, but not much else. We were supposed to get 17, but we
181
+ didn't. What did we get?? Dunno. You could re-run the test in the debugger
182
+ or throw in some print statements to find out.
183
+
184
+ Instead, switch from L<Test::Simple> to L<Test::More>. L<Test::More>
185
+ does everything L<Test::Simple> does, and more! In fact, L<Test::More> does
186
+ things I<exactly> the way L<Test::Simple> does. You can literally swap
187
+ L<Test::Simple> out and put L<Test::More> in its place. That's just what
188
+ we're going to do.
189
+
190
+ L<Test::More> does more than L<Test::Simple>. The most important difference at
191
+ this point is it provides more informative ways to say "ok". Although you can
192
+ write almost any test with a generic C<ok()>, it can't tell you what went
193
+ wrong. The C<is()> function lets us declare that something is supposed to be
194
+ the same as something else:
195
+
196
+ use Test::More tests => 8;
197
+
198
+ use Date::ICal;
199
+
200
+ $ical = Date::ICal->new( year => 1964, month => 10, day => 16,
201
+ hour => 16, min => 12, sec => 47,
202
+ tz => '0530' );
203
+
204
+ ok( defined $ical, 'new() returned something' );
205
+ ok( $ical->isa('Date::ICal'), " and it's the right class" );
206
+ is( $ical->sec, 47, ' sec()' );
207
+ is( $ical->min, 12, ' min()' );
208
+ is( $ical->hour, 16, ' hour()' );
209
+ is( $ical->day, 17, ' day()' );
210
+ is( $ical->month, 10, ' month()' );
211
+ is( $ical->year, 1964, ' year()' );
212
+
213
+ "Is C<< $ical->sec >> 47?" "Is C<< $ical->min >> 12?" With C<is()> in place,
214
+ you get more information:
215
+
216
+ 1..8
217
+ ok 1 - new() returned something
218
+ ok 2 - and it's the right class
219
+ ok 3 - sec()
220
+ ok 4 - min()
221
+ ok 5 - hour()
222
+ not ok 6 - day()
223
+ # Failed test (- at line 16)
224
+ # got: '16'
225
+ # expected: '17'
226
+ ok 7 - month()
227
+ ok 8 - year()
228
+ # Looks like you failed 1 tests of 8.
229
+
230
+ Aha. C<< $ical->day >> returned 16, but we expected 17. A
231
+ quick check shows that the code is working fine, we made a mistake
232
+ when writing the tests. Change it to:
233
+
234
+ is( $ical->day, 16, ' day()' );
235
+
236
+ ... and everything works.
237
+
238
+ Any time you're doing a "this equals that" sort of test, use C<is()>.
239
+ It even works on arrays. The test is always in scalar context, so you
240
+ can test how many elements are in an array this way. [5]
241
+
242
+ is( @foo, 5, 'foo has 5 elements' );
243
+
244
+
245
+ =head2 Sometimes the tests are wrong
246
+
247
+ This brings up a very important lesson. Code has bugs. Tests are
248
+ code. Ergo, tests have bugs. A failing test could mean a bug in the
249
+ code, but don't discount the possibility that the test is wrong.
250
+
251
+ On the flip side, don't be tempted to prematurely declare a test
252
+ incorrect just because you're having trouble finding the bug.
253
+ Invalidating a test isn't something to be taken lightly, and don't use
254
+ it as a cop out to avoid work.
255
+
256
+
257
+ =head2 Testing lots of values
258
+
259
+ We're going to be wanting to test a lot of dates here, trying to trick
260
+ the code with lots of different edge cases. Does it work before 1970?
261
+ After 2038? Before 1904? Do years after 10,000 give it trouble?
262
+ Does it get leap years right? We could keep repeating the code above,
263
+ or we could set up a little try/expect loop.
264
+
265
+ use Test::More tests => 32;
266
+ use Date::ICal;
267
+
268
+ my %ICal_Dates = (
269
+ # An ICal string And the year, month, day
270
+ # hour, minute and second we expect.
271
+ '19971024T120000' => # from the docs.
272
+ [ 1997, 10, 24, 12, 0, 0 ],
273
+ '20390123T232832' => # after the Unix epoch
274
+ [ 2039, 1, 23, 23, 28, 32 ],
275
+ '19671225T000000' => # before the Unix epoch
276
+ [ 1967, 12, 25, 0, 0, 0 ],
277
+ '18990505T232323' => # before the MacOS epoch
278
+ [ 1899, 5, 5, 23, 23, 23 ],
279
+ );
280
+
281
+
282
+ while( my($ical_str, $expect) = each %ICal_Dates ) {
283
+ my $ical = Date::ICal->new( ical => $ical_str );
284
+
285
+ ok( defined $ical, "new(ical => '$ical_str')" );
286
+ ok( $ical->isa('Date::ICal'), " and it's the right class" );
287
+
288
+ is( $ical->year, $expect->[0], ' year()' );
289
+ is( $ical->month, $expect->[1], ' month()' );
290
+ is( $ical->day, $expect->[2], ' day()' );
291
+ is( $ical->hour, $expect->[3], ' hour()' );
292
+ is( $ical->min, $expect->[4], ' min()' );
293
+ is( $ical->sec, $expect->[5], ' sec()' );
294
+ }
295
+
296
+ Now we can test bunches of dates by just adding them to
297
+ C<%ICal_Dates>. Now that it's less work to test with more dates, you'll
298
+ be inclined to just throw more in as you think of them.
299
+ Only problem is, every time we add to that we have to keep adjusting
300
+ the C<< use Test::More tests => ## >> line. That can rapidly get
301
+ annoying. There are ways to make this work better.
302
+
303
+ First, we can calculate the plan dynamically using the C<plan()>
304
+ function.
305
+
306
+ use Test::More;
307
+ use Date::ICal;
308
+
309
+ my %ICal_Dates = (
310
+ ...same as before...
311
+ );
312
+
313
+ # For each key in the hash we're running 8 tests.
314
+ plan tests => keys(%ICal_Dates) * 8;
315
+
316
+ ...and then your tests...
317
+
318
+ To be even more flexible, use C<done_testing>. This means we're just
319
+ running some tests, don't know how many. [6]
320
+
321
+ use Test::More; # instead of tests => 32
322
+
323
+ ... # tests here
324
+
325
+ done_testing(); # reached the end safely
326
+
327
+ If you don't specify a plan, L<Test::More> expects to see C<done_testing()>
328
+ before your program exits. It will warn you if you forget it. You can give
329
+ C<done_testing()> an optional number of tests you expected to run, and if the
330
+ number ran differs, L<Test::More> will give you another kind of warning.
331
+
332
+
333
+ =head2 Informative names
334
+
335
+ Take a look at the line:
336
+
337
+ ok( defined $ical, "new(ical => '$ical_str')" );
338
+
339
+ We've added more detail about what we're testing and the ICal string
340
+ itself we're trying out to the name. So you get results like:
341
+
342
+ ok 25 - new(ical => '19971024T120000')
343
+ ok 26 - and it's the right class
344
+ ok 27 - year()
345
+ ok 28 - month()
346
+ ok 29 - day()
347
+ ok 30 - hour()
348
+ ok 31 - min()
349
+ ok 32 - sec()
350
+
351
+ If something in there fails, you'll know which one it was and that
352
+ will make tracking down the problem easier. Try to put a bit of
353
+ debugging information into the test names.
354
+
355
+ Describe what the tests test, to make debugging a failed test easier
356
+ for you or for the next person who runs your test.
357
+
358
+
359
+ =head2 Skipping tests
360
+
361
+ Poking around in the existing L<Date::ICal> tests, I found this in
362
+ F<t/01sanity.t> [7]
363
+
364
+ #!/usr/bin/perl -w
365
+
366
+ use Test::More tests => 7;
367
+ use Date::ICal;
368
+
369
+ # Make sure epoch time is being handled sanely.
370
+ my $t1 = Date::ICal->new( epoch => 0 );
371
+ is( $t1->epoch, 0, "Epoch time of 0" );
372
+
373
+ # XXX This will only work on unix systems.
374
+ is( $t1->ical, '19700101Z', " epoch to ical" );
375
+
376
+ is( $t1->year, 1970, " year()" );
377
+ is( $t1->month, 1, " month()" );
378
+ is( $t1->day, 1, " day()" );
379
+
380
+ # like the tests above, but starting with ical instead of epoch
381
+ my $t2 = Date::ICal->new( ical => '19700101Z' );
382
+ is( $t2->ical, '19700101Z', "Start of epoch in ICal notation" );
383
+
384
+ is( $t2->epoch, 0, " and back to ICal" );
385
+
386
+ The beginning of the epoch is different on most non-Unix operating systems [8].
387
+ Even though Perl smooths out the differences for the most part, certain ports
388
+ do it differently. MacPerl is one off the top of my head. [9] Rather than
389
+ putting a comment in the test and hoping someone will read the test while
390
+ debugging the failure, we can explicitly say it's never going to work and skip
391
+ the test.
392
+
393
+ use Test::More tests => 7;
394
+ use Date::ICal;
395
+
396
+ # Make sure epoch time is being handled sanely.
397
+ my $t1 = Date::ICal->new( epoch => 0 );
398
+ is( $t1->epoch, 0, "Epoch time of 0" );
399
+
400
+ SKIP: {
401
+ skip('epoch to ICal not working on Mac OS', 6)
402
+ if $^O eq 'MacOS';
403
+
404
+ is( $t1->ical, '19700101Z', " epoch to ical" );
405
+
406
+ is( $t1->year, 1970, " year()" );
407
+ is( $t1->month, 1, " month()" );
408
+ is( $t1->day, 1, " day()" );
409
+
410
+ # like the tests above, but starting with ical instead of epoch
411
+ my $t2 = Date::ICal->new( ical => '19700101Z' );
412
+ is( $t2->ical, '19700101Z', "Start of epoch in ICal notation" );
413
+
414
+ is( $t2->epoch, 0, " and back to ICal" );
415
+ }
416
+
417
+ A little bit of magic happens here. When running on anything but MacOS, all
418
+ the tests run normally. But when on MacOS, C<skip()> causes the entire
419
+ contents of the SKIP block to be jumped over. It never runs. Instead,
420
+ C<skip()> prints special output that tells L<Test::Harness> that the tests have
421
+ been skipped.
422
+
423
+ 1..7
424
+ ok 1 - Epoch time of 0
425
+ ok 2 # skip epoch to ICal not working on MacOS
426
+ ok 3 # skip epoch to ICal not working on MacOS
427
+ ok 4 # skip epoch to ICal not working on MacOS
428
+ ok 5 # skip epoch to ICal not working on MacOS
429
+ ok 6 # skip epoch to ICal not working on MacOS
430
+ ok 7 # skip epoch to ICal not working on MacOS
431
+
432
+ This means your tests won't fail on MacOS. This means fewer emails
433
+ from MacPerl users telling you about failing tests that you know will
434
+ never work. You've got to be careful with skip tests. These are for
435
+ tests which don't work and I<never will>. It is not for skipping
436
+ genuine bugs (we'll get to that in a moment).
437
+
438
+ The tests are wholly and completely skipped. [10] This will work.
439
+
440
+ SKIP: {
441
+ skip("I don't wanna die!");
442
+
443
+ die, die, die, die, die;
444
+ }
445
+
446
+
447
+ =head2 Todo tests
448
+
449
+ While thumbing through the L<Date::ICal> man page, I came across this:
450
+
451
+ ical
452
+
453
+ $ical_string = $ical->ical;
454
+
455
+ Retrieves, or sets, the date on the object, using any
456
+ valid ICal date/time string.
457
+
458
+ "Retrieves or sets". Hmmm. I didn't see a test for using C<ical()> to set
459
+ the date in the Date::ICal test suite. So I wrote one:
460
+
461
+ use Test::More tests => 1;
462
+ use Date::ICal;
463
+
464
+ my $ical = Date::ICal->new;
465
+ $ical->ical('20201231Z');
466
+ is( $ical->ical, '20201231Z', 'Setting via ical()' );
467
+
468
+ Run that. I saw:
469
+
470
+ 1..1
471
+ not ok 1 - Setting via ical()
472
+ # Failed test (- at line 6)
473
+ # got: '20010814T233649Z'
474
+ # expected: '20201231Z'
475
+ # Looks like you failed 1 tests of 1.
476
+
477
+ Whoops! Looks like it's unimplemented. Assume you don't have the time to fix
478
+ this. [11] Normally, you'd just comment out the test and put a note in a todo
479
+ list somewhere. Instead, explicitly state "this test will fail" by wrapping it
480
+ in a C<TODO> block:
481
+
482
+ use Test::More tests => 1;
483
+
484
+ TODO: {
485
+ local $TODO = 'ical($ical) not yet implemented';
486
+
487
+ my $ical = Date::ICal->new;
488
+ $ical->ical('20201231Z');
489
+
490
+ is( $ical->ical, '20201231Z', 'Setting via ical()' );
491
+ }
492
+
493
+ Now when you run, it's a little different:
494
+
495
+ 1..1
496
+ not ok 1 - Setting via ical() # TODO ical($ical) not yet implemented
497
+ # got: '20010822T201551Z'
498
+ # expected: '20201231Z'
499
+
500
+ L<Test::More> doesn't say "Looks like you failed 1 tests of 1". That '#
501
+ TODO' tells L<Test::Harness> "this is supposed to fail" and it treats a
502
+ failure as a successful test. You can write tests even before
503
+ you've fixed the underlying code.
504
+
505
+ If a TODO test passes, L<Test::Harness> will report it "UNEXPECTEDLY
506
+ SUCCEEDED". When that happens, remove the TODO block with C<local $TODO> and
507
+ turn it into a real test.
508
+
509
+
510
+ =head2 Testing with taint mode.
511
+
512
+ Taint mode is a funny thing. It's the globalest of all global
513
+ features. Once you turn it on, it affects I<all> code in your program
514
+ and I<all> modules used (and all the modules they use). If a single
515
+ piece of code isn't taint clean, the whole thing explodes. With that
516
+ in mind, it's very important to ensure your module works under taint
517
+ mode.
518
+
519
+ It's very simple to have your tests run under taint mode. Just throw
520
+ a C<-T> into the C<#!> line. L<Test::Harness> will read the switches
521
+ in C<#!> and use them to run your tests.
522
+
523
+ #!/usr/bin/perl -Tw
524
+
525
+ ...test normally here...
526
+
527
+ When you say C<make test> it will run with taint mode on.
528
+
529
+
530
+ =head1 FOOTNOTES
531
+
532
+ =over 4
533
+
534
+ =item 1
535
+
536
+ The first number doesn't really mean anything, but it has to be 1.
537
+ It's the second number that's important.
538
+
539
+ =item 2
540
+
541
+ For those following along at home, I'm using version 1.31. It has
542
+ some bugs, which is good -- we'll uncover them with our tests.
543
+
544
+ =item 3
545
+
546
+ You can actually take this one step further and test the manual
547
+ itself. Have a look at L<Test::Inline> (formerly L<Pod::Tests>).
548
+
549
+ =item 4
550
+
551
+ Yes, there's a mistake in the test suite. What! Me, contrived?
552
+
553
+ =item 5
554
+
555
+ We'll get to testing the contents of lists later.
556
+
557
+ =item 6
558
+
559
+ But what happens if your test program dies halfway through?! Since we
560
+ didn't say how many tests we're going to run, how can we know it
561
+ failed? No problem, L<Test::More> employs some magic to catch that death
562
+ and turn the test into a failure, even if every test passed up to that
563
+ point.
564
+
565
+ =item 7
566
+
567
+ I cleaned it up a little.
568
+
569
+ =item 8
570
+
571
+ Most Operating Systems record time as the number of seconds since a
572
+ certain date. This date is the beginning of the epoch. Unix's starts
573
+ at midnight January 1st, 1970 GMT.
574
+
575
+ =item 9
576
+
577
+ MacOS's epoch is midnight January 1st, 1904. VMS's is midnight,
578
+ November 17th, 1858, but vmsperl emulates the Unix epoch so it's not a
579
+ problem.
580
+
581
+ =item 10
582
+
583
+ As long as the code inside the SKIP block at least compiles. Please
584
+ don't ask how. No, it's not a filter.
585
+
586
+ =item 11
587
+
588
+ Do NOT be tempted to use TODO tests as a way to avoid fixing simple
589
+ bugs!
590
+
591
+ =back
592
+
593
+ =head1 AUTHORS
594
+
595
+ Michael G Schwern E<lt>schwern@pobox.comE<gt> and the perl-qa dancers!
596
+
597
+ =head1 MAINTAINERS
598
+
599
+ =over 4
600
+
601
+ =item Chad Granum E<lt>exodist@cpan.orgE<gt>
602
+
603
+ =back
604
+
605
+ =head1 COPYRIGHT
606
+
607
+ Copyright 2001 by Michael G Schwern E<lt>schwern@pobox.comE<gt>.
608
+
609
+ This documentation is free; you can redistribute it and/or modify it
610
+ under the same terms as Perl itself.
611
+
612
+ Irrespective of its distribution, all code examples in these files
613
+ are hereby placed into the public domain. You are permitted and
614
+ encouraged to use this code in your own programs for fun
615
+ or for profit as you see fit. A simple comment in the code giving
616
+ credit would be courteous but is not required.
617
+
618
+ =cut
@@ -0,0 +1,64 @@
1
+ package Test::use::ok;
2
+ use 5.005;
3
+
4
+ our $VERSION = '1.302183';
5
+
6
+
7
+ __END__
8
+
9
+ =head1 NAME
10
+
11
+ Test::use::ok - Alternative to Test::More::use_ok
12
+
13
+ =head1 SYNOPSIS
14
+
15
+ use ok 'Some::Module';
16
+
17
+ =head1 DESCRIPTION
18
+
19
+ According to the B<Test::More> documentation, it is recommended to run
20
+ C<use_ok()> inside a C<BEGIN> block, so functions are exported at
21
+ compile-time and prototypes are properly honored.
22
+
23
+ That is, instead of writing this:
24
+
25
+ use_ok( 'Some::Module' );
26
+ use_ok( 'Other::Module' );
27
+
28
+ One should write this:
29
+
30
+ BEGIN { use_ok( 'Some::Module' ); }
31
+ BEGIN { use_ok( 'Other::Module' ); }
32
+
33
+ However, people often either forget to add C<BEGIN>, or mistakenly group
34
+ C<use_ok> with other tests in a single C<BEGIN> block, which can create subtle
35
+ differences in execution order.
36
+
37
+ With this module, simply change all C<use_ok> in test scripts to C<use ok>,
38
+ and they will be executed at C<BEGIN> time. The explicit space after C<use>
39
+ makes it clear that this is a single compile-time action.
40
+
41
+ =head1 SEE ALSO
42
+
43
+ L<Test::More>
44
+
45
+ =head1 MAINTAINER
46
+
47
+ =over 4
48
+
49
+ =item Chad Granum E<lt>exodist@cpan.orgE<gt>
50
+
51
+ =back
52
+
53
+ =encoding utf8
54
+
55
+ =head1 CC0 1.0 Universal
56
+
57
+ To the extent possible under law, 唐鳳 has waived all copyright and related
58
+ or neighboring rights to L<Test-use-ok>.
59
+
60
+ This work is published from Taiwan.
61
+
62
+ L<http://creativecommons.org/publicdomain/zero/1.0>
63
+
64
+ =cut