@@ -1278,4 +1278,41 @@ def parse(input):
12781278 . unwrap ( ) ;
12791279 } )
12801280 }
1281+
1282+ #[ test]
1283+ fn encode_omit_empty ( ) {
1284+ let mut registry = Registry :: default ( ) ;
1285+ let counter1: Family < Vec < ( & ' static str , & ' static str ) > , Counter > = Default :: default ( ) ;
1286+ let counter2: Family < Vec < ( & ' static str , & ' static str ) > , Counter > = Default :: default ( ) ;
1287+ let counter3: Family < Vec < ( & ' static str , & ' static str ) > , Counter > = Default :: default ( ) ;
1288+
1289+ registry. register ( "counter1" , "First counter" , counter1. clone ( ) ) ;
1290+ registry. register ( "counter2" , "Second counter" , counter2. clone ( ) ) ;
1291+ registry. register ( "counter3" , "Third counter" , counter3. clone ( ) ) ;
1292+
1293+ counter1. get_or_create ( & vec ! [ ( "label" , "value" ) ] ) . inc ( ) ;
1294+
1295+ let mut encoded = String :: new ( ) ;
1296+ encode ( & mut encoded, & registry) . unwrap ( ) ;
1297+
1298+ let expected = "# HELP counter1 First counter.\n " . to_owned ( )
1299+ + "# TYPE counter1 counter\n "
1300+ + "counter1_total{label=\" value\" } 1\n "
1301+ + "# EOF\n " ;
1302+ assert_eq ! ( expected, encoded) ;
1303+
1304+ counter2. get_or_create ( & vec ! [ ( "label" , "value" ) ] ) . inc ( ) ;
1305+
1306+ let mut encoded = String :: new ( ) ;
1307+ encode ( & mut encoded, & registry) . unwrap ( ) ;
1308+
1309+ let expected = "# HELP counter1 First counter.\n " . to_owned ( )
1310+ + "# TYPE counter1 counter\n "
1311+ + "counter1_total{label=\" value\" } 1\n "
1312+ + "# HELP counter2 Second counter.\n "
1313+ + "# TYPE counter2 counter\n "
1314+ + "counter2_total{label=\" value\" } 1\n "
1315+ + "# EOF\n " ;
1316+ assert_eq ! ( expected, encoded) ;
1317+ }
12811318}
0 commit comments