Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Renumber Rust tests or benchmarks

Overview

renumber is a simple command-line utility that renumbers Rust tests and benchmarks.

It is particularly useful when a single test or benchmark file contains multiple functions that don’t require meaningful names, such as in test-driven development (TDD).

renumber renames these functions sequentially as _0001, _0002, _0003, and so on.

Example

Input file before renumbering

cat ./tests/test_doc.rs

Content of the input file before renumbering:

#![allow(unused)]
fn main() {
#[test]
fn _one_should_be_equal_to_one() {
  assert_eq!(1, 1);
}

#[test]
fn _one_should_not_be_equal_to_two() {
  assert_ne!(1, 2);
}

#[test]
fn _first_name_should_be_shorter_than_the_second() {
  let first_name = "John";
  let second_name = "Alexander";
  assert!(first_name.cmp(&second_name).is_gt());
}
}

Note

Test names begin with underscore, otherwise renumber will skip them.

Renumbering

renumber ./tests/test_doc.rs

Input file after renumbering

cat ./tests/test_doc.rs

Content of the input file after renumbering:

#![allow(unused)]
fn main() {
#[test]
fn _0001() {
  assert_eq!(1, 1);
}

#[test]
fn _0002() {
  assert_ne!(1, 2);
}

#[test]
fn _0003() {
  let first_name = "John";
  let second_name = "Alexander";
  assert!(first_name.cmp(&second_name).is_gt());
}
}

Hints & Tips

  • renumber takes a single command-line argument, the input file to be renumbered.
  • If renumbering is successful, the input file is OVERWRITTEN with the new, renumbered content.
  • Only functions annotated with #[test] or #[bench] and whose names begin with an underscore (_) are renamed.

Integration with JetBrains tools

macOS

Open SettingsToolsExternal Tools window:

renumber-01

Add a new configuration for renumber external tool:

renumber-02

Open keymap window on renumber external tool configuration:

renumber-03

Add new keyboard shortcut:

renumber-04