blob: 1ae4c4d78993e2b1484832b88a6867b4213c6b0d [file] [log] [blame]
/*
* Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
use anyhow::Result;
use std::{collections::HashSet, io::Read};
use crate::FlagId;
/// Read a list of flag names. The input is expected to be plain text, with each line containing
/// the name of a single flag.
pub(crate) fn read_finalized_flags<R: Read>(mut reader: R) -> Result<HashSet<FlagId>> {
let mut contents = String::new();
reader.read_to_string(&mut contents)?;
let iter = contents.lines().map(|s| s.to_owned());
Ok(HashSet::from_iter(iter))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test() {
let input = include_bytes!("../tests/finalized-flags.txt");
let flags = read_finalized_flags(&input[..]).unwrap();
assert_eq!(
flags,
HashSet::from_iter(vec![
"record_finalized_flags.test.bar".to_string(),
"record_finalized_flags.test.baz".to_string(),
])
);
}
}