Files
Nim/tests
ee7 10355cb48a strutils, rstgen: avoid deprecated strutils.delete (#20488)
The strutils `delete` func with signature

    func delete*(s: var string, first, last: int)

was deprecated in adba5eb45e, in favor of one with signature

    func delete*(s: var string, slice: Slice[int])

However, a few procedures still used the deprecated form. This commit
updates them, resolving these deprecation warnings:

    rstgen.nim(766, 12) Warning: use `delete(s, first..last)`; delete is deprecated [Deprecated]
    strutils.nim(1651, 19) Warning: use `delete(s, first..last)`; delete is deprecated [Deprecated]
    strutils.nim(1679, 7) Warning: use `delete(s, first..last)`; delete is deprecated [Deprecated]
    strutils.nim(2472, 7) Warning: use `delete(s, first..last)`; delete is deprecated [Deprecated]

Before this commit:

- `trimZeros` called `s.delete(i+1, i)` for an input that lacks a
  trailing zero (like "1.23").

- `removePrefix*(s: var string, prefix: string)` called
  `s.delete(0, -1)` when the prefix was the empty string.

which did not modify `s`, nor raise an error. But the newer slice
`delete` raises an `IndexDefect` when the start of the slice is greater
than the end, so we avoid calling the new `delete` for such a case.

Recall that exceptions inheriting from `system.Defect` are not tracked
with the `.raises: []` exception tracking mechanism [1], so this commit
does not break existing code like:

    proc foo {.raises: [].} =
      var s = "abc1.20"
      s.removePrefix("abc")
      s.trimZeros()
      doAssert s == "1.2"

The `strutils.delete` deprecation was motivated by a problem with
`system.delete` [2][3]:

    `system.delete` had surprising behavior when the index passed to it
    was out of bounds (it would delete the last entry then). Compile
    with `-d:nimStrictDelete` so that an index error is produced
    instead.

    Be aware however that your code might depend on this quirky behavior
    so a review process is required on your part before you can use
    `-d:nimStrictDelete`. To make this review easier, use the
    `-d:nimAuditDelete` switch, which pretends that `system.delete` is
    deprecated so that it is easier to see where it was used in your
    code.

    `-d:nimStrictDelete` will become the default in upcoming versions.

A similar deprecation happened with `sequtils.delete` [4], but that
deprecated form is already not used in this repo.

[1] https://github.com/nim-lang/Nim/blob/2dec69fe5aa6/doc/manual.md#exception-tracking
[2] https://github.com/nim-lang/Nim/blob/2dec69fe5aa6/changelogs/changelog_1_6_0.md#system
[3] https://github.com/nim-lang/Nim/commit/92cb76571432
[4] https://github.com/nim-lang/Nim/commit/1d6863a7899f
2022-10-05 13:57:17 -04:00
..
2017-07-25 09:28:23 +02:00
2022-09-23 13:05:05 +02:00
2021-08-21 08:22:00 +02:00
2022-09-23 13:05:05 +02:00
2022-07-06 13:06:41 +02:00
2022-09-01 18:10:00 +02:00
2022-10-02 06:42:41 +02:00
2019-05-25 07:33:33 +02:00
2014-01-13 02:10:03 +01:00
2022-09-23 13:05:05 +02:00
2021-01-21 17:31:47 +01:00
2022-10-01 16:46:51 +02:00
2022-09-23 13:05:05 +02:00
2020-12-28 14:13:21 +01:00
2022-10-02 06:42:41 +02:00
2022-09-23 13:05:05 +02:00
2022-09-23 13:05:05 +02:00
2018-12-11 21:23:22 +01:00
2021-04-06 16:20:01 +02:00
2022-09-23 13:05:05 +02:00
2022-09-23 13:05:05 +02:00
2022-09-23 13:05:05 +02:00
2022-09-23 13:05:05 +02:00
2022-10-02 06:44:10 +02:00
2022-09-23 13:05:05 +02:00
2019-09-16 12:12:44 +02:00
2022-09-23 13:05:05 +02:00
2021-03-28 00:57:22 -07:00
2021-06-03 17:12:45 +02:00
2020-11-07 08:00:41 +00:00
2022-09-23 13:05:05 +02:00
2022-09-23 13:05:05 +02:00
2020-11-18 00:14:14 +00:00
2022-09-23 13:05:05 +02:00
2022-09-23 13:05:05 +02:00
2022-09-23 13:05:05 +02:00
2021-04-06 16:20:01 +02:00
2013-03-16 23:53:07 +01:00
2020-12-28 14:13:21 +01:00

This directory contains the test cases.

Each test must have a filename of the form: t*.nim

Note: Testament is only aware of tests under a directory (eg tests/foo/) and will ignore top-level tests like tests/tbar.nim.

Specs

Each test can contain a spec in a discard """ ... """ block.

Check out the parseSpec procedure in the specs module for a full and reliable reference

action

Specifies what action this test should take.

Default: run

Options:

  • compile - compiles the module and fails the test if compilations fails.
  • run - compiles and runs the module, fails the test if compilation or execution of test code fails.
  • reject - compiles the module and fails the test if compilation succeeds.

There are certain spec keys that imply run, including output and outputsub.

Categories

Each folder under this directory represents a test category, which can be tested by running koch tests pcat <category> (or cat to avoid parallel testing, which is slower).

The folder dll contains simple DLL tests.

The folder realtimeGC contains a test for validating that the realtime GC can run properly without linking against the nimrtl.dll/so.