Fix concurrency bug while testing
This commit is contained in:
@@ -44,6 +44,6 @@ pub fn export(filters: Vec<&str>) -> Result<Vec<Task>, Error> {
|
||||
tasks
|
||||
}
|
||||
|
||||
pub fn add(add_args: Vec<&str>) -> Result<u64, Error> {
|
||||
taskwarrior::add(add_args)
|
||||
pub async fn add(add_args: Vec<&str>) -> Result<u64, Error> {
|
||||
taskwarrior::add(add_args).await
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use actix_web::{dev::Server, http, middleware, web, App, HttpResponse, HttpServer};
|
||||
use contextswitch_types::TaskDefinition;
|
||||
use listenfd::ListenFd;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde::Deserialize;
|
||||
use serde_json::json;
|
||||
use std::env;
|
||||
use std::io::Error;
|
||||
@@ -35,7 +35,7 @@ async fn list_tasks(task_query: web::Query<TaskQuery>) -> Result<HttpResponse, E
|
||||
|
||||
#[tracing::instrument(level = "debug", skip_all, fields(definition = %task_definition.definition))]
|
||||
async fn add_task(task_definition: web::Json<TaskDefinition>) -> Result<HttpResponse, Error> {
|
||||
let task_id = contextswitch::add(task_definition.definition.split(' ').collect())?;
|
||||
let task_id = contextswitch::add(task_definition.definition.split(' ').collect()).await?;
|
||||
|
||||
Ok(HttpResponse::Ok()
|
||||
.content_type("application/json")
|
||||
|
||||
@@ -8,6 +8,7 @@ use std::io::{Error, ErrorKind};
|
||||
use std::path::Path;
|
||||
use std::process::Command;
|
||||
use std::str;
|
||||
use tokio::sync::Mutex;
|
||||
use tracing::debug;
|
||||
use uuid::Uuid;
|
||||
|
||||
@@ -109,14 +110,17 @@ pub fn export(filters: Vec<&str>) -> Result<Vec<Task>, Error> {
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "debug")]
|
||||
pub fn add(add_args: Vec<&str>) -> Result<u64, Error> {
|
||||
pub async fn add(add_args: Vec<&str>) -> Result<u64, Error> {
|
||||
lazy_static! {
|
||||
static ref RE: Regex = Regex::new(r"Created task (?P<id>\d+).").unwrap();
|
||||
static ref LOCK: Mutex<u32> = Mutex::new(0);
|
||||
}
|
||||
let _lock = LOCK.lock().await;
|
||||
|
||||
let mut args = vec!["add"];
|
||||
args.extend(add_args);
|
||||
let add_output = Command::new("task").args(args).output()?;
|
||||
let output = String::from_utf8(add_output.stdout).unwrap();
|
||||
lazy_static! {
|
||||
static ref RE: Regex = Regex::new(r"Created task (?P<id>\d+).").unwrap();
|
||||
}
|
||||
let task_id_capture = RE.captures(&output).ok_or_else(|| {
|
||||
Error::new(
|
||||
ErrorKind::Other,
|
||||
|
||||
Reference in New Issue
Block a user