diff --git a/docs/parsers/dir.md b/docs/parsers/dir.md
index 4bb47213..4bdb4ca7 100644
--- a/docs/parsers/dir.md
+++ b/docs/parsers/dir.md
@@ -6,7 +6,6 @@ Options supported:
- `/T timefield`
- `/O sortorder`
- `/C, /-C`
-- `/Q`
Usage (cli):
@@ -249,21 +248,22 @@ Final processing to conform to the schema.
Parameters:
- proc_data: (List of Dictionaries) raw structured data to process
+ proc_data: (Dictionary of Lists) raw structured data to process
Returns:
List of Dictionaries. Structured data with the following schema:
-
- [
- {
- "date": string,
- "time": string,
- "dir": string,
- "size": integer,
- "filename: string
- }
- ]
+ {"parent_dir":
+ [
+ {
+ "date": string,
+ "time": string,
+ "dir": string,
+ "size": integer,
+ "filename: string
+ }
+ ]
+ }
## parse
diff --git a/jc/parsers/dir.py b/jc/parsers/dir.py
index 4cb57bfb..4a3b03f9 100644
--- a/jc/parsers/dir.py
+++ b/jc/parsers/dir.py
@@ -4,7 +4,6 @@ Options supported:
- `/T timefield`
- `/O sortorder`
- `/C, /-C`
-- `/Q`
Usage (cli):
@@ -255,33 +254,35 @@ def process(proc_data):
Parameters:
- proc_data: (List of Dictionaries) raw structured data to process
+ proc_data: (Dictionary of Lists) raw structured data to process
Returns:
List of Dictionaries. Structured data with the following schema:
-
- [
- {
- "date": string,
- "time": string,
- "dir": string,
- "size": integer,
- "filename: string
- }
- ]
+ {"parent_dir":
+ [
+ {
+ "date": string,
+ "time": string,
+ "dir": string,
+ "size": integer,
+ "filename: string
+ }
+ ]
+ }
"""
- for entry in proc_data:
- int_list = ["size"]
- for key in int_list:
- if entry.get(key):
- try:
- key_int = int(entry[key].replace(",", ""))
- except ValueError:
- entry[key] = None
- else:
- entry[key] = key_int
+ for _, dir_list in proc_data.items():
+ for entry in dir_list:
+ int_list = ["size"]
+ for key in int_list:
+ if entry.get(key):
+ try:
+ key_int = int(entry[key].replace(",", ""))
+ except ValueError:
+ entry[key] = None
+ else:
+ entry[key] = key_int
return proc_data
@@ -303,28 +304,32 @@ def parse(data, raw=False, quiet=False):
if not quiet:
jc.utils.compatibility(__name__, info.compatible)
- raw_output = []
+ raw_output = {}
if jc.utils.has_data(data):
for line in data.splitlines():
- # look for first line that starts with a date
+ if line.startswith(" Directory of"):
+ parent_dir = line.lstrip(" Directory of ")
+ continue
+ # skip lines that don't start with a date
if not re.match(r'^\d{2}/\d{2}/\d{4}', line):
continue
+ raw_output.setdefault(parent_dir, [])
output_line = {}
parsed_line = line.split()
output_line["date"] = parsed_line[0]
output_line["time"] = " ".join(parsed_line[1:3])
- output_line.setdefault("dir", None)
+ output_line.setdefault("dir", False)
output_line.setdefault("size", None)
if parsed_line[3] == "
":
- output_line["dir"] = parsed_line[3]
+ output_line["dir"] = True
else:
output_line["size"] = parsed_line[3]
output_line["filename"] = " ".join(parsed_line[4:])
- raw_output.append(output_line)
+ raw_output[parent_dir].append(output_line)
if raw:
return raw_output
diff --git a/tests/fixtures/windows-10/dir-C.json b/tests/fixtures/windows-10/dir-C.json
index b7860aff..082d217a 100644
--- a/tests/fixtures/windows-10/dir-C.json
+++ b/tests/fixtures/windows-10/dir-C.json
@@ -1 +1 @@
-[{"date": "03/24/2021", "time": "03:15 PM", "dir": "", "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": "", "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": "", "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 54784, "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": null, "size": 0, "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": null, "size": 819136, "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 48536, "filename": "sqmapi.dll"}]
\ No newline at end of file
+{"C:\\Program Files\\Internet Explorer": [{"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": 0, "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": false, "size": 819136, "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 48536, "filename": "sqmapi.dll"}]}
\ No newline at end of file
diff --git a/tests/fixtures/windows-10/dir-ODTC.json b/tests/fixtures/windows-10/dir-ODTC.json
index a767c2f5..7a561b64 100644
--- a/tests/fixtures/windows-10/dir-ODTC.json
+++ b/tests/fixtures/windows-10/dir-ODTC.json
@@ -1 +1 @@
-[{"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 54784, "filename": "ExtExport.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 48536, "filename": "sqmapi.dll"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": "", "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:49 AM", "dir": null, "size": 819136, "filename": "iexplore.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": null, "size": 0, "filename": "file name.txt"}]
\ No newline at end of file
+{"C:\\Program Files\\Internet Explorer": [{"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "ExtExport.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 48536, "filename": "sqmapi.dll"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:49 AM", "dir": false, "size": 819136, "filename": "iexplore.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": 0, "filename": "file name.txt"}]}
\ No newline at end of file
diff --git a/tests/fixtures/windows-10/dir-Q.json b/tests/fixtures/windows-10/dir-Q.json
deleted file mode 100644
index 32fef660..00000000
--- a/tests/fixtures/windows-10/dir-Q.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"date": "03/24/2021", "time": "03:15 PM", "dir": "", "size": null, "filename": "NT SERVICE\\TrustedInsta."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": "", "size": null, "filename": "NT SERVICE\\TrustedInsta.."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": "", "size": null, "filename": "NT SERVICE\\TrustedInstaen-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 54784, "filename": "NT SERVICE\\TrustedInstaExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": null, "size": 0, "filename": "BUILTIN\\Administrators file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 54784, "filename": "NT SERVICE\\TrustedInstahmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 515072, "filename": "NT SERVICE\\TrustedInstaiediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 504832, "filename": "NT SERVICE\\TrustedInstaieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 224768, "filename": "NT SERVICE\\TrustedInstaielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 421888, "filename": "NT SERVICE\\TrustedInstaIEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": null, "size": 819136, "filename": "NT SERVICE\\TrustedInstaiexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "NT SERVICE\\TrustedInstaimages"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "NT AUTHORITY\\SYSTEM SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 48536, "filename": "NT SERVICE\\TrustedInstasqmapi.dll"}]
\ No newline at end of file
diff --git a/tests/fixtures/windows-10/dir-Q.out b/tests/fixtures/windows-10/dir-Q.out
deleted file mode 100644
index a3123b39..00000000
--- a/tests/fixtures/windows-10/dir-Q.out
+++ /dev/null
@@ -1,21 +0,0 @@
- Volume in drive C has no label.
- Volume Serial Number is 246B-3B5A
-
- Directory of C:\Program Files\Internet Explorer
-
-03/24/2021 03:15 PM NT SERVICE\TrustedInsta.
-03/24/2021 03:15 PM NT SERVICE\TrustedInsta..
-12/07/2019 02:49 AM NT SERVICE\TrustedInstaen-US
-12/07/2019 02:09 AM 54,784 NT SERVICE\TrustedInstaExtExport.exe
-03/24/2021 03:15 PM 0 BUILTIN\Administrators file name.txt
-12/07/2019 02:09 AM 54,784 NT SERVICE\TrustedInstahmmapi.dll
-12/07/2019 02:09 AM 515,072 NT SERVICE\TrustedInstaiediagcmd.exe
-12/07/2019 02:09 AM 504,832 NT SERVICE\TrustedInstaieinstal.exe
-12/07/2019 02:09 AM 224,768 NT SERVICE\TrustedInstaielowutil.exe
-12/07/2019 02:09 AM 421,888 NT SERVICE\TrustedInstaIEShims.dll
-12/06/2019 02:47 PM 819,136 NT SERVICE\TrustedInstaiexplore.exe
-12/07/2019 02:14 AM NT SERVICE\TrustedInstaimages
-12/07/2019 02:14 AM NT AUTHORITY\SYSTEM SIGNUP
-12/07/2019 02:09 AM 48,536 NT SERVICE\TrustedInstasqmapi.dll
- 9 File(s) 2,643,800 bytes
- 5 Dir(s) 36,203,749,376 bytes free
diff --git a/tests/fixtures/windows-10/dir-dirs.json b/tests/fixtures/windows-10/dir-dirs.json
new file mode 100644
index 00000000..766d7551
--- /dev/null
+++ b/tests/fixtures/windows-10/dir-dirs.json
@@ -0,0 +1 @@
+{"C:\\Users\\Yoda\\Desktop\\jc\\docs": [{"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": ".."}, {"date": "03/25/2021", "time": "02:38 PM", "dir": true, "size": null, "filename": "parsers"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 2713, "filename": "readme.md"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 1338, "filename": "utils.md"}], "C:\\Users\\Yoda\\Desktop\\jc\\man": [{"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": ".."}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 4300, "filename": "jc.1"}]}
\ No newline at end of file
diff --git a/tests/fixtures/windows-10/dir-dirs.out b/tests/fixtures/windows-10/dir-dirs.out
new file mode 100644
index 00000000..70eac229
--- /dev/null
+++ b/tests/fixtures/windows-10/dir-dirs.out
@@ -0,0 +1,19 @@
+ Volume in drive C has no label.
+ Volume Serial Number is 246B-3B5A
+
+ Directory of C:\Users\Yoda\Desktop\jc\docs
+
+03/25/2021 02:36 PM .
+03/25/2021 02:36 PM ..
+03/25/2021 02:38 PM parsers
+03/25/2021 02:36 PM 2,713 readme.md
+03/25/2021 02:36 PM 1,338 utils.md
+ 2 File(s) 4,051 bytes
+
+ Directory of C:\Users\Yoda\Desktop\jc\man
+
+03/25/2021 02:36 PM .
+03/25/2021 02:36 PM ..
+03/25/2021 02:36 PM 4,300 jc.1
+ 1 File(s) 4,300 bytes
+ 2 Dir(s) 33,349,226,496 bytes free
diff --git a/tests/fixtures/windows-10/dir-files.json b/tests/fixtures/windows-10/dir-files.json
new file mode 100644
index 00000000..ced49261
--- /dev/null
+++ b/tests/fixtures/windows-10/dir-files.json
@@ -0,0 +1 @@
+{"C:\\Users\\Yoda\\Desktop\\jc": [{"date": "03/25/2021", "time": "02:38 PM", "dir": false, "size": 4253, "filename": "docgen.sh"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 1088, "filename": "LICENSE.md"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 27063, "filename": "README.md"}]}
\ No newline at end of file
diff --git a/tests/fixtures/windows-10/dir-files.out b/tests/fixtures/windows-10/dir-files.out
new file mode 100644
index 00000000..bd2fb796
--- /dev/null
+++ b/tests/fixtures/windows-10/dir-files.out
@@ -0,0 +1,16 @@
+ Volume in drive C has no label.
+ Volume Serial Number is 246B-3B5A
+
+ Directory of C:\Users\Yoda\Desktop\jc
+
+03/25/2021 02:38 PM 4,253 docgen.sh
+
+ Directory of C:\Users\Yoda\Desktop\jc
+
+03/25/2021 02:36 PM 1,088 LICENSE.md
+
+ Directory of C:\Users\Yoda\Desktop\jc
+
+03/25/2021 02:36 PM 27,063 README.md
+ 3 File(s) 32,404 bytes
+ 0 Dir(s) 33,349,652,480 bytes free
diff --git a/tests/fixtures/windows-10/dir-mix.json b/tests/fixtures/windows-10/dir-mix.json
new file mode 100644
index 00000000..c09c5e33
--- /dev/null
+++ b/tests/fixtures/windows-10/dir-mix.json
@@ -0,0 +1 @@
+{"C:\\Users\\Yoda\\Desktop\\jc": [{"date": "03/25/2021", "time": "02:38 PM", "dir": false, "size": 4253, "filename": "docgen.sh"}, {"date": "03/25/2021", "time": "02:38 PM", "dir": false, "size": 58995, "filename": "EXAMPLES.md"}], "C:\\Users\\Yoda\\Desktop\\jc\\docs": [{"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": ".."}, {"date": "03/25/2021", "time": "02:38 PM", "dir": true, "size": null, "filename": "parsers"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 2713, "filename": "readme.md"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 1338, "filename": "utils.md"}]}
\ No newline at end of file
diff --git a/tests/fixtures/windows-10/dir-mix.out b/tests/fixtures/windows-10/dir-mix.out
new file mode 100644
index 00000000..7302114e
--- /dev/null
+++ b/tests/fixtures/windows-10/dir-mix.out
@@ -0,0 +1,22 @@
+ Volume in drive C has no label.
+ Volume Serial Number is 246B-3B5A
+
+ Directory of C:\Users\Yoda\Desktop\jc
+
+03/25/2021 02:38 PM 4,253 docgen.sh
+ 1 File(s) 4,253 bytes
+
+ Directory of C:\Users\Yoda\Desktop\jc\docs
+
+03/25/2021 02:36 PM .
+03/25/2021 02:36 PM ..
+03/25/2021 02:38 PM parsers
+03/25/2021 02:36 PM 2,713 readme.md
+03/25/2021 02:36 PM 1,338 utils.md
+ 2 File(s) 4,051 bytes
+
+ Directory of C:\Users\Yoda\Desktop\jc
+
+03/25/2021 02:38 PM 58,995 EXAMPLES.md
+ 1 File(s) 58,995 bytes
+ 0 Dir(s) 34,115,264,512 bytes free
diff --git a/tests/fixtures/windows-10/dir-raw.json b/tests/fixtures/windows-10/dir-raw.json
new file mode 100644
index 00000000..4d6cd85d
--- /dev/null
+++ b/tests/fixtures/windows-10/dir-raw.json
@@ -0,0 +1 @@
+{"C:\\Program Files\\Internet Explorer": [{"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "54,784", "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": "0", "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "54,784", "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "515,072", "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "504,832", "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "224,768", "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "421,888", "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": false, "size": "819,136", "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "48,536", "filename": "sqmapi.dll"}]}
\ No newline at end of file
diff --git a/tests/fixtures/windows-10/dir.json b/tests/fixtures/windows-10/dir.json
index b7860aff..082d217a 100644
--- a/tests/fixtures/windows-10/dir.json
+++ b/tests/fixtures/windows-10/dir.json
@@ -1 +1 @@
-[{"date": "03/24/2021", "time": "03:15 PM", "dir": "", "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": "", "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": "", "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 54784, "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": null, "size": 0, "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": null, "size": 819136, "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": "", "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": null, "size": 48536, "filename": "sqmapi.dll"}]
\ No newline at end of file
+{"C:\\Program Files\\Internet Explorer": [{"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": 0, "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": false, "size": 819136, "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 48536, "filename": "sqmapi.dll"}]}
\ No newline at end of file
diff --git a/tests/test_dir.py b/tests/test_dir.py
index b6a908ac..8fdb8004 100644
--- a/tests/test_dir.py
+++ b/tests/test_dir.py
@@ -17,6 +17,10 @@ class MyTests(unittest.TestCase):
'r', encoding='utf-8') as f:
self.windows_10_dir_json = json.loads(f.read())
+ with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-raw.json'),
+ 'r', encoding='utf-8') as f:
+ self.windows_10_dir_raw_json = json.loads(f.read())
+
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-ODTC.out'),
'r', encoding='utf-8') as f:
self.windows_10_dir_ODTC = f.read()
@@ -29,24 +33,44 @@ class MyTests(unittest.TestCase):
'r', encoding='utf-8') as f:
self.windows_10_dir_C = f.read()
- with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-Q.out'),
+ with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-mix.out'),
'r', encoding='utf-8') as f:
- self.windows_10_dir_Q = f.read()
+ self.windows_10_dir_mix = f.read()
- with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-Q.json'),
+ with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-mix.json'),
'r', encoding='utf-8') as f:
- self.windows_10_dir_Q_json = json.loads(f.read())
+ self.windows_10_dir_mix_json = json.loads(f.read())
+
+ with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-files.out'),
+ 'r', encoding='utf-8') as f:
+ self.windows_10_dir_files= f.read()
+
+ with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-files.json'),
+ 'r', encoding='utf-8') as f:
+ self.windows_10_dir_files_json = json.loads(f.read())
+
+ with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-dirs.out'),
+ 'r', encoding='utf-8') as f:
+ self.windows_10_dir_dirs= f.read()
+
+ with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-dirs.json'),
+ 'r', encoding='utf-8') as f:
+ self.windows_10_dir_dirs_json = json.loads(f.read())
def test_dir_error(self):
- self.assertEqual(jc.parsers.dir.parse("Access is denied.", quiet=True), [])
+ self.assertEqual(jc.parsers.dir.parse("Access is denied.", quiet=True), {})
def test_dir_empty(self):
- self.assertEqual(jc.parsers.dir.parse("", quiet=True), [])
+ self.assertEqual(jc.parsers.dir.parse("", quiet=True), {})
def test_dir_windows_10(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir, quiet=True),
self.windows_10_dir_json)
+ def test_dir_windows_10_raw(self):
+ self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir, raw=True, quiet=True),
+ self.windows_10_dir_raw_json)
+
def test_dir_windows_10_ODTC(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_ODTC, quiet=True),
self.windows_10_dir_ODTC_json)
@@ -55,9 +79,17 @@ class MyTests(unittest.TestCase):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_C, quiet=True),
self.windows_10_dir_json)
- def test_dir_windows_10_Q(self):
- self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_Q, quiet=True),
- self.windows_10_dir_Q_json)
+ def test_dir_windows_10_mix(self):
+ self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_mix, quiet=True),
+ self.windows_10_dir_mix_json)
+
+ def test_dir_windows_10_files(self):
+ self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_files, quiet=True),
+ self.windows_10_dir_files_json)
+
+ def test_dir_windows_10_dirs(self):
+ self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_dirs, quiet=True),
+ self.windows_10_dir_dirs_json)
if __name__ == '__main__':