oktest 1.3.0 → 1.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65c65e47a706541792e7ba1e9705dc03af1c2fe46c87141472659fb811463e76
4
- data.tar.gz: c405d466c9b63eb3897754716d220f884af655cceba5cc7c644e742caf22b465
3
+ metadata.gz: 66c4df474c029dfbb1e598274d8959e742fab20f1e158d53ac8c4d6a1bb815ce
4
+ data.tar.gz: 4e9b1c680b335a2ae4fcc8b4e698ace15ab5df9f42a143e998c7b2556b5f8f15
5
5
  SHA512:
6
- metadata.gz: 496909751ed5b3035d07091c0dc362af3586e85e144177603f15035e178fa5f1d9e31c70bd1da7c60059efd8c3275c781e5876af45ac144f4d56fccf444fea20
7
- data.tar.gz: e7d440c6dcdbccefe33e99be638dc0f70aae187ee49f0fc091ea631f55e93da822b22804bfa57d570bf9190440c248783564724fa7998df4b0e9b0a6eb0f7ed3
6
+ metadata.gz: c35a5ede9c4b9ce53c458bb18f4871782078ff933f6133b369b1058bd122a2f4d0e0f823b0e2f8e6a81fb42560d3c4a6710cead958db4ae1d9c0a53c97131255
7
+ data.tar.gz: b739cc6de446f83a92e87119c29c53022376b18495e211c555c03d2f16e82d03f465b343709b93c320f0718c3df585cca5f33d189770d37f84ad77840d5aeca3
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Oktest.rb is a new-style testing library for Ruby.
6
6
 
7
- * `ok {actual} == expected` style [assertion](#assertions).
7
+ * `ok {actual} == expected` style [assertions](#assertions).
8
8
  * [Fixture injection](#fixture-injection) inspired by dependency injection.
9
9
  * Structured test specifications like RSpec.
10
10
  * [JSON Matcher](#json-matcher) similar to JSON Schema.
@@ -43,7 +43,7 @@ Oktest.scope do #
43
43
  end #
44
44
  ```
45
45
 
46
- Oktest.rb requires Ruby 2.0 or later.
46
+ Oktest.rb requires Ruby 2.4 or later.
47
47
 
48
48
 
49
49
 
@@ -77,7 +77,12 @@ Oktest.rb requires Ruby 2.0 or later.
77
77
  * <a href="#fixture-keyword-argument"><code>fixture:</code> keyword argument</a>
78
78
  * <a href="#global-scope">Global Scope</a>
79
79
  * <a href="#helpers">Helpers</a>
80
+ * <a href="#capture_stdio"><code>capture_stdio()</code></a>
80
81
  * <a href="#capture_sio"><code>capture_sio()</code></a>
82
+ * <a href="#capture_stdout"><code>capture_stdout()</code></a>
83
+ * <a href="#capture_stderr"><code>capture_stderr()</code></a>
84
+ * <a href="#capture_command"><code>capture_command()</code></a>
85
+ * <a href="#capture_command-1"><code>capture_command!()</code></a>
81
86
  * <a href="#dummy_file"><code>dummy_file()</code></a>
82
87
  * <a href="#dummy_dir"><code>dummy_dir()</code></a>
83
88
  * <a href="#dummy_values"><code>dummy_values()</code></a>
@@ -823,7 +828,7 @@ ok {exc.class} == NoMethodError
823
828
  ok {exc.message} == "undefined method `len' for \"abc\":String"
824
829
 
825
830
  ## assert that procedure does NOT raise any exception
826
- ok {pr}.raise_nothing? # (>= Oktest 1.3)
831
+ ok {pr}.raise_nothing? # (Oktest >= 1.4)
827
832
  ok {pr}.NOT.raise? # no exception class nor error message
828
833
  not_ok {pr}.raise? # same as above
829
834
 
@@ -1303,9 +1308,9 @@ end
1303
1308
  ## Helpers
1304
1309
 
1305
1310
 
1306
- ### `capture_sio()`
1311
+ ### `capture_stdio()`
1307
1312
 
1308
- `capture_sio()` captures standard I/O.
1313
+ `capture_stdio()` captures standard I/O.
1309
1314
 
1310
1315
  test/example31_test.rb:
1311
1316
 
@@ -1318,7 +1323,7 @@ Oktest.scope do
1318
1323
 
1319
1324
  spec "example spec" do
1320
1325
  data = nil
1321
- sout, serr = capture_sio("blabla") do # !!!!!
1326
+ sout, serr = capture_stdio("blabla") do # !!!!!
1322
1327
  data = $stdin.read() # read from stdin
1323
1328
  puts "fooo" # write into stdout
1324
1329
  $stderr.puts "baaa" # write into stderr
@@ -1333,17 +1338,113 @@ Oktest.scope do
1333
1338
  end
1334
1339
  ```
1335
1340
 
1336
- * The first argument of `capture_sio()` represents data from `$stdin`.
1337
- If it is not necessary, you can omit it like `caputre_sio() do ... end`.
1341
+ * The first argument of `capture_stdio()` represents data from `$stdin`.
1342
+ If it is not necessary, you can omit it like `caputre_stdio() do ... end`.
1338
1343
  * If you need `$stdin.tty? == true` and `$stdout.tty? == true`,
1339
- call `capture_sio(tty: true) do ... end`.
1344
+ call `capture_stdio(tty: true) do ... end`.
1345
+ * Available on Oktest >= 1.4.
1346
+
1347
+
1348
+ ### `capture_sio()`
1349
+
1350
+ `capture_sio()` is an alias of `capture_stdio()`.
1351
+ This is provided for backward compatibility.
1352
+
1353
+ (`capture_stdio()` is provided as `capture_sio()` on Oktest < 1.4,
1354
+ and `capture_sio()` is renamed to `capture_stdio()` since Oktest 1.4.)
1355
+
1356
+
1357
+ ### `capture_stdout()`
1358
+
1359
+ `capture_stdout()` captures output of $stdout.
1360
+ If output of $stderr is not empty, assertion error will be raised.
1361
+
1362
+ `capture_stdout()` is almost same as the following.
1363
+
1364
+ ```ruby
1365
+ def capture_stdout(*args, **kwargs, &b)
1366
+ sout, serr = capture_stdio(*args, **kwargs, &b)
1367
+ ok {serr} == ""
1368
+ return sout
1369
+ end
1370
+ ```
1371
+
1372
+ * Available on Oktest >= 1.4.
1373
+
1374
+
1375
+ ### `capture_stderr()`
1376
+
1377
+ `capture_stderr()` captures output of $stderr.
1378
+ If output of $stdout is not empty, assertion error will be raised.
1379
+
1380
+ `capture_stderr()` is almost same as the following.
1381
+
1382
+ ```ruby
1383
+ def capture_stderr(*args, **kwargs, &b)
1384
+ sout, serr = capture_stdio(*args, **kwargs, &b)
1385
+ ok {sout} == ""
1386
+ return serr
1387
+ end
1388
+ ```
1389
+
1390
+ * Available on Oktest >= 1.4.
1391
+
1392
+
1393
+ ### `capture_command()`
1394
+
1395
+ `capture_command()` executes a command and returns output of stdout and stderr.
1396
+
1397
+ test/example32_test.rb:
1398
+
1399
+ ```ruby
1400
+ require 'oktest'
1401
+
1402
+ Oktest.scope do
1403
+
1404
+ topic "Capturing" do
1405
+
1406
+ spec "example spec" do
1407
+ input = "AAA\nBBB\n"
1408
+ sout, serr = capture_command("cat -n", input) # !!!!!
1409
+ ok {sout} == " 1\tAAA\n 2\tBBB\n"
1410
+ ok {serr} == ""
1411
+ end
1412
+
1413
+ spec "skip if command not installed" do
1414
+ begin
1415
+ sout, serr = capture_command "foobar"
1416
+ rescue Errno::ENOENT
1417
+ skip_when true, "command `foobar` not installed."
1418
+ end
1419
+ end
1420
+
1421
+ end
1422
+
1423
+ end
1424
+ ```
1425
+
1426
+ * The second argument of `capture_command()` represents `$stdin` data.
1427
+ It is optional.
1428
+ * `capture_command()` raises RuntimeError if command failed.
1429
+ * `capture_command()` accepts error handler block. The block will be called only when command failed. If error handler block is specified, `capture_command()` doesn't raise RuntimeError even if command failed.
1430
+ * `capture_command()` raises `Errno::ENOENT` exception if command not found. This exception will not be handled by error handler block.
1431
+ * Keyword parameter `tty: true` is not available.
1432
+ * Available on Oktest >= 1.4.
1433
+
1434
+
1435
+ ### `capture_command!()`
1436
+
1437
+ `capture_command!()` is similar to `capture_command()` but not raise error
1438
+ when command failed.
1439
+
1440
+ * Available on Oktest >= 1.4.
1340
1441
 
1341
1442
 
1342
1443
  ### `dummy_file()`
1343
1444
 
1344
1445
  `dummy_file()` creates a dummy file temporarily.
1345
1446
 
1346
- test/example32_test.rb:
1447
+ test/example33_test.rb:
1347
1448
 
1348
1449
  ```ruby
1349
1450
  require 'oktest'
@@ -1383,7 +1484,7 @@ end
1383
1484
 
1384
1485
  `dummy_dir()` creates a dummy directory temporarily.
1385
1486
 
1386
- test/example33_test.rb:
1487
+ test/example34_test.rb:
1387
1488
 
1388
1489
  ```ruby
1389
1490
  require 'oktest'
@@ -1425,7 +1526,7 @@ end
1425
1526
 
1426
1527
  `dummy_values()` changes hash values temporarily.
1427
1528
 
1428
- test/example34_test.rb:
1529
+ test/example35_test.rb:
1429
1530
 
1430
1531
  ```ruby
1431
1532
  require 'oktest'
@@ -1477,7 +1578,7 @@ end
1477
1578
 
1478
1579
  `dummy_attrs()` changes object attribute values temporarily.
1479
1580
 
1480
- test/example35_test.rb:
1581
+ test/example36_test.rb:
1481
1582
 
1482
1583
  ```ruby
1483
1584
  require 'oktest'
@@ -1532,7 +1633,7 @@ end
1532
1633
 
1533
1634
  `dummy_ivars()` changes instance variables in object with dummy values temporarily.
1534
1635
 
1535
- test/example36_test.rb:
1636
+ test/example37_test.rb:
1536
1637
 
1537
1638
  ```ruby
1538
1639
  require 'oktest'
@@ -1589,7 +1690,7 @@ end
1589
1690
  See [Benry::Recorder README](https://github.com/kwatch/benry-ruby/blob/ruby/benry-recorder/README.md)
1590
1691
  for detals.
1591
1692
 
1592
- test/example37_test.rb:
1693
+ test/example38_test.rb:
1593
1694
 
1594
1695
  ```ruby
1595
1696
  require 'oktest'
data/Rakefile.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  ###
4
- ### $Release: 1.3.0 $
4
+ ### $Release: 1.4.0 $
5
5
  ### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
6
6
  ### $License: MIT License $
7
7
  ###
data/benchmark/run_all.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  Dir.glob(File.join(File.dirname(__FILE__), '*_test.rb')).each do |x|
4
5
  #load x
data/bin/oktest CHANGED
@@ -1,3 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ # frozen_string_literal: true
4
+
2
5
  require 'oktest'
3
6
  Oktest.main()