mirror of
https://github.com/chatmail/core.git
synced 2026-05-16 21:36:30 +03:00
Update to Rust 1.50
Also run rustfmt, fix new clippy warnings.
This commit is contained in:
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
|||||||
- uses: actions-rs/toolchain@v1
|
- uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: 1.49.0
|
toolchain: 1.50.0
|
||||||
override: true
|
override: true
|
||||||
- run: rustup component add rustfmt
|
- run: rustup component add rustfmt
|
||||||
- uses: actions-rs/cargo@v1
|
- uses: actions-rs/cargo@v1
|
||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- uses: actions-rs/toolchain@v1
|
- uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
toolchain: 1.49.0
|
toolchain: 1.50.0
|
||||||
components: clippy
|
components: clippy
|
||||||
override: true
|
override: true
|
||||||
- uses: actions-rs/clippy-check@v1
|
- uses: actions-rs/clippy-check@v1
|
||||||
@@ -72,7 +72,7 @@ jobs:
|
|||||||
# macOS disabled due to random failures related to caching
|
# macOS disabled due to random failures related to caching
|
||||||
#os: [ubuntu-latest, windows-latest, macOS-latest]
|
#os: [ubuntu-latest, windows-latest, macOS-latest]
|
||||||
os: [ubuntu-latest, windows-latest]
|
os: [ubuntu-latest, windows-latest]
|
||||||
rust: [1.49.0]
|
rust: [1.50.0]
|
||||||
experimental: [false]
|
experimental: [false]
|
||||||
# include:
|
# include:
|
||||||
# - os: ubuntu-latest
|
# - os: ubuntu-latest
|
||||||
|
|||||||
@@ -96,7 +96,7 @@
|
|||||||
|
|
||||||
- try harder on backup opening #2148
|
- try harder on backup opening #2148
|
||||||
|
|
||||||
- switch to rust 1.49, update toolchains, deps #2150 #2155 #2165 #2107
|
- switch to rust 1.50, update toolchains, deps #2150 #2155 #2165 #2107 #2262 #2271
|
||||||
|
|
||||||
- improve python bindings #2113 #2115 #2133 #2214
|
- improve python bindings #2113 #2115 #2133 #2214
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
set -e -x
|
set -e -x
|
||||||
|
|
||||||
# Install Rust
|
# Install Rust
|
||||||
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.49.0-x86_64-unknown-linux-gnu -y
|
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.50.0-x86_64-unknown-linux-gnu -y
|
||||||
export PATH=/root/.cargo/bin:$PATH
|
export PATH=/root/.cargo/bin:$PATH
|
||||||
rustc --version
|
rustc --version
|
||||||
|
|
||||||
# remove some 300-400 MB that we don't need for automated builds
|
# remove some 300-400 MB that we don't need for automated builds
|
||||||
rm -rf /root/.rustup/toolchains/1.49.0-x86_64-unknown-linux-gnu/share
|
rm -rf /root/.rustup/toolchains/1.50.0-x86_64-unknown-linux-gnu/share
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.49.0
|
1.50.0
|
||||||
|
|||||||
@@ -32,7 +32,9 @@ impl Default for Blocked {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql)]
|
#[derive(
|
||||||
|
Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql,
|
||||||
|
)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum ShowEmails {
|
pub enum ShowEmails {
|
||||||
Off = 0,
|
Off = 0,
|
||||||
@@ -46,7 +48,9 @@ impl Default for ShowEmails {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql)]
|
#[derive(
|
||||||
|
Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql,
|
||||||
|
)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum MediaQuality {
|
pub enum MediaQuality {
|
||||||
Balanced = 0,
|
Balanced = 0,
|
||||||
@@ -59,7 +63,9 @@ impl Default for MediaQuality {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql)]
|
#[derive(
|
||||||
|
Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql,
|
||||||
|
)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum KeyGenType {
|
pub enum KeyGenType {
|
||||||
Default = 0,
|
Default = 0,
|
||||||
@@ -73,7 +79,9 @@ impl Default for KeyGenType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql)]
|
#[derive(
|
||||||
|
Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql,
|
||||||
|
)]
|
||||||
#[repr(i8)]
|
#[repr(i8)]
|
||||||
pub enum VideochatType {
|
pub enum VideochatType {
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
|
|||||||
39
src/html.rs
39
src/html.rs
@@ -420,23 +420,16 @@ test some special html-characters as < > and & but also " and &#x
|
|||||||
let t = TestContext::new().await;
|
let t = TestContext::new().await;
|
||||||
let raw = include_bytes!("../test-data/message/apple_cid_jpg.eml");
|
let raw = include_bytes!("../test-data/message/apple_cid_jpg.eml");
|
||||||
let test = String::from_utf8_lossy(raw);
|
let test = String::from_utf8_lossy(raw);
|
||||||
assert!(test
|
assert!(test.contains("Content-Id: <8AE052EF-BC90-486F-BB78-58D3590308EC@fritz.box>"));
|
||||||
.find("Content-Id: <8AE052EF-BC90-486F-BB78-58D3590308EC@fritz.box>")
|
assert!(test.contains("cid:8AE052EF-BC90-486F-BB78-58D3590308EC@fritz.box"));
|
||||||
.is_some());
|
|
||||||
assert!(test
|
|
||||||
.find("cid:8AE052EF-BC90-486F-BB78-58D3590308EC@fritz.box")
|
|
||||||
.is_some());
|
|
||||||
assert!(test.find("data:").is_none());
|
assert!(test.find("data:").is_none());
|
||||||
|
|
||||||
// parsing converts cid: to data:
|
// parsing converts cid: to data:
|
||||||
let parser = HtmlMsgParser::from_bytes(&t.ctx, raw).await.unwrap();
|
let parser = HtmlMsgParser::from_bytes(&t.ctx, raw).await.unwrap();
|
||||||
assert!(parser.html.find("<html>").is_some());
|
assert!(parser.html.contains("<html>"));
|
||||||
assert!(parser.html.find("Content-Id:").is_none());
|
assert!(!parser.html.contains("Content-Id:"));
|
||||||
assert!(parser
|
assert!(parser.html.contains("data:image/jpeg;base64,/9j/4AAQ"));
|
||||||
.html
|
assert!(!parser.html.contains("cid:"));
|
||||||
.find("data:image/jpeg;base64,/9j/4AAQ")
|
|
||||||
.is_some());
|
|
||||||
assert!(parser.html.find("cid:").is_none());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_std::test]
|
#[async_std::test]
|
||||||
@@ -462,10 +455,10 @@ test some special html-characters as < > and & but also " and &#x
|
|||||||
assert_ne!(msg.get_from_id(), DC_CONTACT_ID_SELF);
|
assert_ne!(msg.get_from_id(), DC_CONTACT_ID_SELF);
|
||||||
assert_eq!(msg.is_dc_message, MessengerMessage::No);
|
assert_eq!(msg.is_dc_message, MessengerMessage::No);
|
||||||
assert!(!msg.is_forwarded());
|
assert!(!msg.is_forwarded());
|
||||||
assert!(msg.get_text().unwrap().find("this is plain").is_some());
|
assert!(msg.get_text().unwrap().contains("this is plain"));
|
||||||
assert!(msg.has_html());
|
assert!(msg.has_html());
|
||||||
let html = msg.get_id().get_html(&alice).await.unwrap();
|
let html = msg.get_id().get_html(&alice).await.unwrap();
|
||||||
assert!(html.find("this is <b>html</b>").is_some());
|
assert!(html.contains("this is <b>html</b>"));
|
||||||
|
|
||||||
// alice: create chat with bob and forward received html-message there
|
// alice: create chat with bob and forward received html-message there
|
||||||
let chat = alice.create_chat_with_contact("", "bob@example.net").await;
|
let chat = alice.create_chat_with_contact("", "bob@example.net").await;
|
||||||
@@ -476,10 +469,10 @@ test some special html-characters as < > and & but also " and &#x
|
|||||||
assert_eq!(msg.get_from_id(), DC_CONTACT_ID_SELF);
|
assert_eq!(msg.get_from_id(), DC_CONTACT_ID_SELF);
|
||||||
assert_eq!(msg.is_dc_message, MessengerMessage::Yes);
|
assert_eq!(msg.is_dc_message, MessengerMessage::Yes);
|
||||||
assert!(msg.is_forwarded());
|
assert!(msg.is_forwarded());
|
||||||
assert!(msg.get_text().unwrap().find("this is plain").is_some());
|
assert!(msg.get_text().unwrap().contains("this is plain"));
|
||||||
assert!(msg.has_html());
|
assert!(msg.has_html());
|
||||||
let html = msg.get_id().get_html(&alice).await.unwrap();
|
let html = msg.get_id().get_html(&alice).await.unwrap();
|
||||||
assert!(html.find("this is <b>html</b>").is_some());
|
assert!(html.contains("this is <b>html</b>"));
|
||||||
|
|
||||||
// bob: check that bob also got the html-part of the forwarded message
|
// bob: check that bob also got the html-part of the forwarded message
|
||||||
let bob = TestContext::new_bob().await;
|
let bob = TestContext::new_bob().await;
|
||||||
@@ -489,10 +482,10 @@ test some special html-characters as < > and & but also " and &#x
|
|||||||
assert_ne!(msg.get_from_id(), DC_CONTACT_ID_SELF);
|
assert_ne!(msg.get_from_id(), DC_CONTACT_ID_SELF);
|
||||||
assert_eq!(msg.is_dc_message, MessengerMessage::Yes);
|
assert_eq!(msg.is_dc_message, MessengerMessage::Yes);
|
||||||
assert!(msg.is_forwarded());
|
assert!(msg.is_forwarded());
|
||||||
assert!(msg.get_text().unwrap().find("this is plain").is_some());
|
assert!(msg.get_text().unwrap().contains("this is plain"));
|
||||||
assert!(msg.has_html());
|
assert!(msg.has_html());
|
||||||
let html = msg.get_id().get_html(&bob).await.unwrap();
|
let html = msg.get_id().get_html(&bob).await.unwrap();
|
||||||
assert!(html.find("this is <b>html</b>").is_some());
|
assert!(html.contains("this is <b>html</b>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_std::test]
|
#[async_std::test]
|
||||||
@@ -529,10 +522,10 @@ test some special html-characters as < > and & but also " and &#x
|
|||||||
assert_eq!(msg.is_dc_message, MessengerMessage::Yes);
|
assert_eq!(msg.is_dc_message, MessengerMessage::Yes);
|
||||||
assert!(msg.get_showpadlock());
|
assert!(msg.get_showpadlock());
|
||||||
assert!(msg.is_forwarded());
|
assert!(msg.is_forwarded());
|
||||||
assert!(msg.get_text().unwrap().find("this is plain").is_some());
|
assert!(msg.get_text().unwrap().contains("this is plain"));
|
||||||
assert!(msg.has_html());
|
assert!(msg.has_html());
|
||||||
let html = msg.get_id().get_html(&alice).await.unwrap();
|
let html = msg.get_id().get_html(&alice).await.unwrap();
|
||||||
assert!(html.find("this is <b>html</b>").is_some());
|
assert!(html.contains("this is <b>html</b>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_std::test]
|
#[async_std::test]
|
||||||
@@ -554,7 +547,7 @@ test some special html-characters as < > and & but also " and &#x
|
|||||||
assert!(!msg.is_forwarded());
|
assert!(!msg.is_forwarded());
|
||||||
assert!(msg.mime_modified);
|
assert!(msg.mime_modified);
|
||||||
let html = msg.get_id().get_html(&alice).await.unwrap();
|
let html = msg.get_id().get_html(&alice).await.unwrap();
|
||||||
assert!(html.find("<b>html</b> text").is_some());
|
assert!(html.contains("<b>html</b> text"));
|
||||||
|
|
||||||
// let bob receive the message
|
// let bob receive the message
|
||||||
let chat_id = bob.create_chat(&alice).await.id;
|
let chat_id = bob.create_chat(&alice).await.id;
|
||||||
@@ -564,6 +557,6 @@ test some special html-characters as < > and & but also " and &#x
|
|||||||
assert!(!msg.is_forwarded());
|
assert!(!msg.is_forwarded());
|
||||||
assert!(msg.mime_modified);
|
assert!(msg.mime_modified);
|
||||||
let html = msg.get_id().get_html(&bob).await.unwrap();
|
let html = msg.get_id().get_html(&bob).await.unwrap();
|
||||||
assert!(html.find("<b>html</b> text").is_some());
|
assert!(html.contains("<b>html</b> text"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,9 @@ use crate::{scheduler::InterruptInfo, sql};
|
|||||||
const JOB_RETRIES: u32 = 17;
|
const JOB_RETRIES: u32 = 17;
|
||||||
|
|
||||||
/// Thread IDs
|
/// Thread IDs
|
||||||
#[derive(Debug, Display, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql)]
|
#[derive(
|
||||||
|
Debug, Display, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql,
|
||||||
|
)]
|
||||||
#[repr(i32)]
|
#[repr(i32)]
|
||||||
pub(crate) enum Thread {
|
pub(crate) enum Thread {
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
|
|||||||
@@ -22,7 +22,9 @@ pub struct Lot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql)]
|
#[derive(
|
||||||
|
Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql,
|
||||||
|
)]
|
||||||
pub enum Meaning {
|
pub enum Meaning {
|
||||||
None = 0,
|
None = 0,
|
||||||
Text1Draft = 1,
|
Text1Draft = 1,
|
||||||
@@ -67,7 +69,9 @@ impl Lot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[repr(i32)]
|
#[repr(i32)]
|
||||||
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql)]
|
#[derive(
|
||||||
|
Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql,
|
||||||
|
)]
|
||||||
pub enum LotState {
|
pub enum LotState {
|
||||||
// Default
|
// Default
|
||||||
Undefined = 0,
|
Undefined = 0,
|
||||||
|
|||||||
@@ -103,7 +103,9 @@ pub(crate) enum MailinglistType {
|
|||||||
None,
|
None,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql)]
|
#[derive(
|
||||||
|
Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql,
|
||||||
|
)]
|
||||||
#[repr(i32)]
|
#[repr(i32)]
|
||||||
pub enum SystemMessage {
|
pub enum SystemMessage {
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
|
|||||||
@@ -93,8 +93,10 @@ impl<'a> BobStateHandle<'a> {
|
|||||||
info!(context, "Handling securejoin message for BobStateHandle");
|
info!(context, "Handling securejoin message for BobStateHandle");
|
||||||
match self.bobstate.handle_message(context, mime_message).await {
|
match self.bobstate.handle_message(context, mime_message).await {
|
||||||
Ok(Some(stage)) => {
|
Ok(Some(stage)) => {
|
||||||
if matches!(stage, BobHandshakeStage::Completed | BobHandshakeStage::Terminated(_))
|
if matches!(
|
||||||
{
|
stage,
|
||||||
|
BobHandshakeStage::Completed | BobHandshakeStage::Terminated(_)
|
||||||
|
) {
|
||||||
self.finish_protocol(context).await;
|
self.finish_protocol(context).await;
|
||||||
}
|
}
|
||||||
Some(stage)
|
Some(stage)
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ use crate::context::Context;
|
|||||||
use crate::dc_tools::{dc_create_id, time};
|
use crate::dc_tools::{dc_create_id, time};
|
||||||
|
|
||||||
/// Token namespace
|
/// Token namespace
|
||||||
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql)]
|
#[derive(
|
||||||
|
Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql,
|
||||||
|
)]
|
||||||
#[repr(i32)]
|
#[repr(i32)]
|
||||||
pub enum Namespace {
|
pub enum Namespace {
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user