mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
Fix flaky tests (#3541)
* Fix flaky state_application() test * Try to fix flaky unicode_normalization() test
This commit is contained in:
parent
0fa9e0ef51
commit
7629a1b76f
3 changed files with 39 additions and 29 deletions
|
@ -8,6 +8,7 @@ use std::fs::FileTimes;
|
||||||
use std::fs::OpenOptions;
|
use std::fs::OpenOptions;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::io::Seek;
|
use std::io::Seek;
|
||||||
|
use std::io::Write;
|
||||||
use std::path::Component;
|
use std::path::Component;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
@ -54,6 +55,21 @@ pub fn write_file(path: impl AsRef<Path>, contents: impl AsRef<[u8]>) -> Result<
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn write_file_and_flush(
|
||||||
|
path: impl AsRef<Path> + Clone,
|
||||||
|
contents: impl AsRef<[u8]>,
|
||||||
|
) -> Result<()> {
|
||||||
|
let mut file = create_file(path.clone())?;
|
||||||
|
file.write_all(contents.as_ref()).context(FileIoSnafu {
|
||||||
|
path: path.clone().as_ref(),
|
||||||
|
op: FileOp::Write,
|
||||||
|
})?;
|
||||||
|
file.sync_all().context(FileIoSnafu {
|
||||||
|
path: path.as_ref(),
|
||||||
|
op: FileOp::Sync,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/// See [File::set_times].
|
/// See [File::set_times].
|
||||||
pub fn set_file_times(path: impl AsRef<Path>, times: FileTimes) -> Result<()> {
|
pub fn set_file_times(path: impl AsRef<Path>, times: FileTimes) -> Result<()> {
|
||||||
#[cfg(not(windows))]
|
#[cfg(not(windows))]
|
||||||
|
|
|
@ -546,6 +546,7 @@ pub(crate) mod test {
|
||||||
use anki_io::create_dir;
|
use anki_io::create_dir;
|
||||||
use anki_io::read_to_string;
|
use anki_io::read_to_string;
|
||||||
use anki_io::write_file;
|
use anki_io::write_file;
|
||||||
|
use anki_io::write_file_and_flush;
|
||||||
use tempfile::tempdir;
|
use tempfile::tempdir;
|
||||||
use tempfile::TempDir;
|
use tempfile::TempDir;
|
||||||
|
|
||||||
|
@ -696,7 +697,7 @@ Unused: unused.jpg
|
||||||
fn unicode_normalization() -> Result<()> {
|
fn unicode_normalization() -> Result<()> {
|
||||||
let (_dir, mgr, mut col) = common_setup()?;
|
let (_dir, mgr, mut col) = common_setup()?;
|
||||||
|
|
||||||
write_file(mgr.media_folder.join("ぱぱ.jpg"), "nfd encoding")?;
|
write_file_and_flush(mgr.media_folder.join("ぱぱ.jpg"), "nfd encoding")?;
|
||||||
|
|
||||||
let mut output = {
|
let mut output = {
|
||||||
let mut checker = col.media_checker()?;
|
let mut checker = col.media_checker()?;
|
||||||
|
|
|
@ -644,10 +644,9 @@ mod test {
|
||||||
|
|
||||||
// new->learning
|
// new->learning
|
||||||
let post_answer = col.answer_again();
|
let post_answer = col.answer_again();
|
||||||
assert_eq!(
|
let mut current = current_state(&mut col, post_answer.card_id);
|
||||||
post_answer.new_state,
|
col.set_elapsed_secs_equal(&post_answer.new_state, &mut current);
|
||||||
current_state(&mut col, post_answer.card_id)
|
assert_eq!(post_answer.new_state, current);
|
||||||
);
|
|
||||||
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
||||||
assert_eq!(card.queue, CardQueue::Learn);
|
assert_eq!(card.queue, CardQueue::Learn);
|
||||||
assert_eq!(card.remaining_steps, 2);
|
assert_eq!(card.remaining_steps, 2);
|
||||||
|
@ -656,10 +655,9 @@ mod test {
|
||||||
col.storage.db.execute_batch("update cards set due=0")?;
|
col.storage.db.execute_batch("update cards set due=0")?;
|
||||||
col.clear_study_queues();
|
col.clear_study_queues();
|
||||||
let post_answer = col.answer_good();
|
let post_answer = col.answer_good();
|
||||||
assert_eq!(
|
let mut current = current_state(&mut col, post_answer.card_id);
|
||||||
post_answer.new_state,
|
col.set_elapsed_secs_equal(&post_answer.new_state, &mut current);
|
||||||
current_state(&mut col, post_answer.card_id)
|
assert_eq!(post_answer.new_state, current);
|
||||||
);
|
|
||||||
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
||||||
assert_eq!(card.queue, CardQueue::Learn);
|
assert_eq!(card.queue, CardQueue::Learn);
|
||||||
assert_eq!(card.remaining_steps, 1);
|
assert_eq!(card.remaining_steps, 1);
|
||||||
|
@ -672,10 +670,9 @@ mod test {
|
||||||
if let CardState::Normal(NormalState::Review(state)) = &mut post_answer.new_state {
|
if let CardState::Normal(NormalState::Review(state)) = &mut post_answer.new_state {
|
||||||
state.elapsed_days = 1;
|
state.elapsed_days = 1;
|
||||||
};
|
};
|
||||||
assert_eq!(
|
let mut current = current_state(&mut col, post_answer.card_id);
|
||||||
post_answer.new_state,
|
col.set_elapsed_secs_equal(&post_answer.new_state, &mut current);
|
||||||
current_state(&mut col, post_answer.card_id)
|
assert_eq!(post_answer.new_state, current);
|
||||||
);
|
|
||||||
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
||||||
assert_eq!(card.queue, CardQueue::Review);
|
assert_eq!(card.queue, CardQueue::Review);
|
||||||
assert_eq!(card.interval, 1);
|
assert_eq!(card.interval, 1);
|
||||||
|
@ -688,10 +685,9 @@ mod test {
|
||||||
if let CardState::Normal(NormalState::Review(state)) = &mut post_answer.new_state {
|
if let CardState::Normal(NormalState::Review(state)) = &mut post_answer.new_state {
|
||||||
state.elapsed_days = 4;
|
state.elapsed_days = 4;
|
||||||
};
|
};
|
||||||
assert_eq!(
|
let mut current = current_state(&mut col, post_answer.card_id);
|
||||||
post_answer.new_state,
|
col.set_elapsed_secs_equal(&post_answer.new_state, &mut current);
|
||||||
current_state(&mut col, post_answer.card_id)
|
assert_eq!(post_answer.new_state, current);
|
||||||
);
|
|
||||||
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
||||||
assert_eq!(card.queue, CardQueue::Review);
|
assert_eq!(card.queue, CardQueue::Review);
|
||||||
assert_eq!(card.interval, 4);
|
assert_eq!(card.interval, 4);
|
||||||
|
@ -704,10 +700,9 @@ mod test {
|
||||||
if let CardState::Normal(NormalState::Relearning(state)) = &mut post_answer.new_state {
|
if let CardState::Normal(NormalState::Relearning(state)) = &mut post_answer.new_state {
|
||||||
state.review.elapsed_days = 1;
|
state.review.elapsed_days = 1;
|
||||||
};
|
};
|
||||||
assert_eq!(
|
let mut current = current_state(&mut col, post_answer.card_id);
|
||||||
post_answer.new_state,
|
col.set_elapsed_secs_equal(&post_answer.new_state, &mut current);
|
||||||
current_state(&mut col, post_answer.card_id)
|
assert_eq!(post_answer.new_state, current);
|
||||||
);
|
|
||||||
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
||||||
assert_eq!(card.queue, CardQueue::Learn);
|
assert_eq!(card.queue, CardQueue::Learn);
|
||||||
assert_eq!(card.ctype, CardType::Relearn);
|
assert_eq!(card.ctype, CardType::Relearn);
|
||||||
|
@ -722,10 +717,9 @@ mod test {
|
||||||
if let CardState::Normal(NormalState::Relearning(state)) = &mut post_answer.new_state {
|
if let CardState::Normal(NormalState::Relearning(state)) = &mut post_answer.new_state {
|
||||||
state.review.elapsed_days = 1;
|
state.review.elapsed_days = 1;
|
||||||
};
|
};
|
||||||
assert_eq!(
|
let mut current = current_state(&mut col, post_answer.card_id);
|
||||||
post_answer.new_state,
|
col.set_elapsed_secs_equal(&post_answer.new_state, &mut current);
|
||||||
current_state(&mut col, post_answer.card_id)
|
assert_eq!(post_answer.new_state, current);
|
||||||
);
|
|
||||||
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
||||||
assert_eq!(card.queue, CardQueue::Learn);
|
assert_eq!(card.queue, CardQueue::Learn);
|
||||||
assert_eq!(card.lapses, 1);
|
assert_eq!(card.lapses, 1);
|
||||||
|
@ -737,10 +731,9 @@ mod test {
|
||||||
if let CardState::Normal(NormalState::Review(state)) = &mut post_answer.new_state {
|
if let CardState::Normal(NormalState::Review(state)) = &mut post_answer.new_state {
|
||||||
state.elapsed_days = 1;
|
state.elapsed_days = 1;
|
||||||
};
|
};
|
||||||
assert_eq!(
|
let mut current = current_state(&mut col, post_answer.card_id);
|
||||||
post_answer.new_state,
|
col.set_elapsed_secs_equal(&post_answer.new_state, &mut current);
|
||||||
current_state(&mut col, post_answer.card_id)
|
assert_eq!(post_answer.new_state, current);
|
||||||
);
|
|
||||||
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
let card = col.storage.get_card(post_answer.card_id)?.unwrap();
|
||||||
assert_eq!(card.queue, CardQueue::Review);
|
assert_eq!(card.queue, CardQueue::Review);
|
||||||
assert_eq!(card.interval, 1);
|
assert_eq!(card.interval, 1);
|
||||||
|
|
Loading…
Reference in a new issue