Skip to content

Commit 098c6a8

Browse files
committed
Add test parsing fbautostart control file
1 parent 8cba708 commit 098c6a8

File tree

4 files changed

+153
-102
lines changed

4 files changed

+153
-102
lines changed

src/lib.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,7 @@ pub mod control;
1616
pub mod version;
1717

1818
pub use self::changelog::{Changelog, ChangelogEntry};
19-
pub use self::control::{ControlFile, ControlParagraph, ControlValue, ControlEntry};
20-
pub use self::version::Version;
19+
pub use self::control::{
20+
ControlEntry, ControlFile, ControlParagraph, ControlValue,
21+
};
22+
pub use self::version::{Version, VersionElement, VersionPart};

tests/data/control-fbautostart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Source: fbautostart
2+
Section: misc
3+
Priority: optional
4+
Maintainer: Paul Tagliamonte <paultag@ubuntu.com>
5+
Build-Depends: debhelper (>= 9)
6+
Standards-Version: 3.9.3
7+
Homepage: https://launchpad.net/fbautostart
8+
Vcs-Git: git://git.debian.org/collab-maint/fbautostart.git
9+
Vcs-Browser: http://git.debian.org/?p=collab-maint/fbautostart.git
10+
11+
Package: fbautostart
12+
Architecture: any
13+
Depends: ${shlibs:Depends}, ${misc:Depends}
14+
Description: XDG compliant autostarting app for Fluxbox
15+
The fbautostart app was designed to have little to no overhead, while
16+
still maintaining the needed functionality of launching applications
17+
according to the XDG spec.
18+
.
19+
This package contains support for GNOME and KDE.
Lines changed: 26 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
1-
extern crate debian;
2-
#[macro_use]
3-
extern crate log;
4-
extern crate tempfile;
5-
61
use std::env;
72
use std::path::PathBuf;
8-
use std::str::FromStr;
93

4+
use log::*;
105
use tempfile::TempDir;
116

127
use debian::control::{parse_dep_list, ControlFile, VRel};
13-
use debian::version::{Version, VersionElement, VersionPart};
8+
use debian::{Version, VersionElement, VersionPart};
149

1510
fn data_path() -> PathBuf {
1611
// Not sure what the best way is - this works when invoked from cargo.
@@ -65,92 +60,42 @@ fn control_file_postgis() {
6560

6661
let path = data_path().join("control-postgis");
6762
let cf = ControlFile::from_file(&path).unwrap();
68-
assert!(cf.get_paragraphs().len() == 10);
63+
assert_eq!(cf.get_paragraphs().len(), 10, "number of paragraphs");
6964

7065
let gp = cf.get_paragraphs().get(0).unwrap();
7166
assert_eq!(gp.get_entry("Source").unwrap(), "postgis");
7267
}
7368

7469
#[test]
75-
fn version_basics() {
76-
let v = Version::parse("7:2.1.4-0~bpo2").unwrap();
77-
assert_eq!(v.epoch, 7);
78-
assert_eq!(&v.upstream_version.to_string(), "2.1.4");
79-
assert_eq!(&v.upstream_version.to_string(), "2.1.4");
80-
assert_eq!(&v.debian_revision.to_string(), "0~bpo2");
81-
assert_eq!(Version::from_str("7:2.1.4-0~bpo2").unwrap(), v);
82-
83-
let v = Version::parse("2.1.4-0~bpo2").unwrap();
84-
assert_eq!(v.epoch, 0);
85-
assert_eq!(&v.upstream_version.to_string(), "2.1.4");
86-
assert_eq!(&v.debian_revision.to_string(), "0~bpo2");
87-
88-
let v = Version::parse("7:2.1.4").unwrap();
89-
assert_eq!(v.epoch, 7);
90-
assert_eq!(v.upstream_version.to_string(), "2.1.4");
91-
assert_eq!(v.debian_revision.to_string(), "");
92-
93-
let v = Version::parse("2.1.4").unwrap();
94-
assert_eq!(v.epoch, 0);
95-
assert_eq!(v.upstream_version.to_string(), "2.1.4");
96-
assert_eq!(v.debian_revision.to_string(), "");
97-
98-
let v = Version::parse("1:1:1-8-8").unwrap();
99-
assert_eq!(v.epoch, 1);
100-
assert_eq!(v.upstream_version.to_string(), "1:1-8");
101-
assert_eq!(v.debian_revision.to_string(), "8");
102-
}
70+
fn control_file_fbautostart() {
71+
setup();
10372

104-
#[test]
105-
fn version_comparisons() {
106-
let v = Version::parse("7:2.1.4-0~bpo2").unwrap();
107-
assert!(v < Version::parse("8:1.8-0~bpo2").unwrap());
73+
let path = data_path().join("control-fbautostart");
74+
let cf = ControlFile::from_file(&path).unwrap();
75+
assert_eq!(cf.get_paragraphs().len(), 2, "number of paragraphs");
10876

77+
let source = cf.get_paragraphs().get(0).unwrap();
10978
assert_eq!(
110-
Version::parse("0:1.0").unwrap(),
111-
Version::parse("1.0").unwrap()
112-
);
113-
assert!(
114-
Version::parse("7:1.8-0~bpo2").unwrap()
115-
< Version::parse("8:1.8-0~bpo2").unwrap()
116-
);
117-
assert!(
118-
Version::parse("8:1.8-0~bpo1").unwrap()
119-
< Version::parse("8:1.8-0~bpo2").unwrap()
120-
);
121-
assert!(
122-
Version::parse("8:1.8-0~bpo2").unwrap()
123-
< Version::parse("8:1.8-1~bpo2").unwrap()
124-
);
125-
assert!(
126-
Version::parse("8:1.7-0~bpo2").unwrap()
127-
< Version::parse("8:1.8-0~bpo2").unwrap()
128-
);
129-
assert!(
130-
Version::parse("8:0.8-0~bpo2").unwrap()
131-
< Version::parse("8:1.8-0~bpo2").unwrap()
79+
source.get_entry("Maintainer").unwrap(),
80+
"Paul Tagliamonte <paultag@ubuntu.com>"
13281
);
82+
assert_eq!(source.get_entry("Source").unwrap(), "fbautostart");
13383

134-
assert!(
135-
Version::parse("9:1.8-0~bpo2").unwrap()
136-
> Version::parse("8:1.8-0~bpo2").unwrap()
137-
);
138-
assert!(
139-
Version::parse("8:1.8-0~bpo3").unwrap()
140-
> Version::parse("8:1.8-0~bpo2").unwrap()
141-
);
142-
assert!(
143-
Version::parse("8:1.8-2~bpo2").unwrap()
144-
> Version::parse("8:1.8-1~bpo2").unwrap()
145-
);
146-
assert!(
147-
Version::parse("8:1.9-0~bpo2").unwrap()
148-
> Version::parse("8:1.8-0~bpo2").unwrap()
149-
);
150-
assert!(
151-
Version::parse("8:2.8-0~bpo2").unwrap()
152-
> Version::parse("8:1.8-0~bpo2").unwrap()
84+
let bd_str = source.get_entry("Build-Depends").unwrap();
85+
let bd = parse_dep_list(bd_str).unwrap();
86+
assert_eq!(bd.len(), 1);
87+
assert_eq!(bd[0].alternatives.len(), 1);
88+
89+
let first_dep = &bd[0].alternatives[0];
90+
assert_eq!(first_dep.package, "debhelper");
91+
assert_eq!(
92+
first_dep.version,
93+
Some((VRel::GreaterOrEqual, Version::parse("9").unwrap()))
15394
);
95+
96+
let package = cf.get_paragraphs().get(1).unwrap();
97+
assert_eq!(package.get_entry("Package").unwrap(), "fbautostart");
98+
assert_eq!(package.get_entry("Architecture").unwrap(), "any");
15499
}
155100

156101
#[test]
@@ -205,22 +150,3 @@ fn dependency_basics() {
205150
))
206151
);
207152
}
208-
209-
#[cfg(feature = "serde")]
210-
#[test]
211-
fn serde_tests() {
212-
let data = r#"[
213-
"8:1.8-0~bpo2",
214-
"1.8-0",
215-
"1:1:1-8-8"
216-
]"#;
217-
let versions: Vec<Version> = serde_json::from_str(data).unwrap();
218-
assert_eq!(versions.len(), 3);
219-
assert_eq!(versions[0], Version::parse("8:1.8-0~bpo2").unwrap());
220-
assert_eq!(versions[1], Version::parse("1.8-0").unwrap());
221-
assert_eq!(versions[2], Version::parse("1:1:1-8-8").unwrap());
222-
223-
// test serialization
224-
let ser = serde_json::to_string(&versions).unwrap();
225-
assert_eq!(ser, r#"["8:1.8-0~bpo2","1.8-0","1:1:1-8-8"]"#);
226-
}

tests/test_version.rs

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
use std::str::FromStr;
2+
3+
use debian::Version;
4+
5+
#[test]
6+
fn version_basics() {
7+
let v = Version::parse("7:2.1.4-0~bpo2").unwrap();
8+
assert_eq!(v.epoch, 7);
9+
assert_eq!(&v.upstream_version.to_string(), "2.1.4");
10+
assert_eq!(&v.upstream_version.to_string(), "2.1.4");
11+
assert_eq!(&v.debian_revision.to_string(), "0~bpo2");
12+
assert_eq!(Version::from_str("7:2.1.4-0~bpo2").unwrap(), v);
13+
14+
let v = Version::parse("2.1.4-0~bpo2").unwrap();
15+
assert_eq!(v.epoch, 0);
16+
assert_eq!(&v.upstream_version.to_string(), "2.1.4");
17+
assert_eq!(&v.debian_revision.to_string(), "0~bpo2");
18+
19+
let v = Version::parse("7:2.1.4").unwrap();
20+
assert_eq!(v.epoch, 7);
21+
assert_eq!(v.upstream_version.to_string(), "2.1.4");
22+
assert_eq!(v.debian_revision.to_string(), "");
23+
24+
let v = Version::parse("2.1.4").unwrap();
25+
assert_eq!(v.epoch, 0);
26+
assert_eq!(v.upstream_version.to_string(), "2.1.4");
27+
assert_eq!(v.debian_revision.to_string(), "");
28+
29+
let v = Version::parse("1:1:1-8-8").unwrap();
30+
assert_eq!(v.epoch, 1);
31+
assert_eq!(v.upstream_version.to_string(), "1:1-8");
32+
assert_eq!(v.debian_revision.to_string(), "8");
33+
}
34+
35+
#[test]
36+
fn version_comparisons() {
37+
let v = Version::parse("7:2.1.4-0~bpo2").unwrap();
38+
assert!(v < Version::parse("8:1.8-0~bpo2").unwrap());
39+
40+
assert_eq!(
41+
Version::parse("0:1.0").unwrap(),
42+
Version::parse("1.0").unwrap()
43+
);
44+
assert!(
45+
Version::parse("7:1.8-0~bpo2").unwrap()
46+
< Version::parse("8:1.8-0~bpo2").unwrap()
47+
);
48+
assert!(
49+
Version::parse("8:1.8-0~bpo1").unwrap()
50+
< Version::parse("8:1.8-0~bpo2").unwrap()
51+
);
52+
assert!(
53+
Version::parse("8:1.8-0~bpo2").unwrap()
54+
< Version::parse("8:1.8-1~bpo2").unwrap()
55+
);
56+
assert!(
57+
Version::parse("8:1.7-0~bpo2").unwrap()
58+
< Version::parse("8:1.8-0~bpo2").unwrap()
59+
);
60+
assert!(
61+
Version::parse("8:0.8-0~bpo2").unwrap()
62+
< Version::parse("8:1.8-0~bpo2").unwrap()
63+
);
64+
65+
assert!(
66+
Version::parse("9:1.8-0~bpo2").unwrap()
67+
> Version::parse("8:1.8-0~bpo2").unwrap()
68+
);
69+
assert!(
70+
Version::parse("8:1.8-0~bpo3").unwrap()
71+
> Version::parse("8:1.8-0~bpo2").unwrap()
72+
);
73+
assert!(
74+
Version::parse("8:1.8-2~bpo2").unwrap()
75+
> Version::parse("8:1.8-1~bpo2").unwrap()
76+
);
77+
assert!(
78+
Version::parse("8:1.9-0~bpo2").unwrap()
79+
> Version::parse("8:1.8-0~bpo2").unwrap()
80+
);
81+
assert!(
82+
Version::parse("8:2.8-0~bpo2").unwrap()
83+
> Version::parse("8:1.8-0~bpo2").unwrap()
84+
);
85+
}
86+
87+
#[cfg(feature = "serde")]
88+
#[test]
89+
fn serde_tests() {
90+
let data = r#"[
91+
"8:1.8-0~bpo2",
92+
"1.8-0",
93+
"1:1:1-8-8"
94+
]"#;
95+
let versions: Vec<Version> = serde_json::from_str(data).unwrap();
96+
assert_eq!(versions.len(), 3);
97+
assert_eq!(versions[0], Version::parse("8:1.8-0~bpo2").unwrap());
98+
assert_eq!(versions[1], Version::parse("1.8-0").unwrap());
99+
assert_eq!(versions[2], Version::parse("1:1:1-8-8").unwrap());
100+
101+
// test serialization
102+
let ser = serde_json::to_string(&versions).unwrap();
103+
assert_eq!(ser, r#"["8:1.8-0~bpo2","1.8-0","1:1:1-8-8"]"#);
104+
}

0 commit comments

Comments
 (0)