175 lines
7.5 KiB
Python
175 lines
7.5 KiB
Python
# Check the mark.log file that is generated by the CI to make sure it contains the expected values
|
|
|
|
import os, argparse
|
|
|
|
|
|
def parse_args():
|
|
parser = argparse.ArgumentParser(
|
|
description="Check the mark.log file that is generated by the CI to make sure it contains the expected values"
|
|
)
|
|
parser.add_argument(
|
|
"--dry", action="store_true", help="Check the mark.log file for dry-run"
|
|
)
|
|
parser.add_argument(
|
|
"--write", action="store_true", help="Check the mark.log file for write-run"
|
|
)
|
|
parser.add_argument(
|
|
"--plex", action="store_true", help="Check the mark.log file for Plex"
|
|
)
|
|
parser.add_argument(
|
|
"--jellyfin", action="store_true", help="Check the mark.log file for Jellyfin"
|
|
)
|
|
parser.add_argument(
|
|
"--emby", action="store_true", help="Check the mark.log file for Emby"
|
|
)
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
def read_marklog():
|
|
marklog = os.path.join(os.getcwd(), "mark.log")
|
|
with open(marklog, "r") as f:
|
|
lines = f.readlines()
|
|
return lines
|
|
|
|
|
|
def check_marklog(lines, expected_values):
|
|
try:
|
|
# Check to make sure the marklog contains all the expected values and nothing else
|
|
found_values = []
|
|
for line in lines:
|
|
# Remove the newline character
|
|
line = line.strip()
|
|
if line not in expected_values:
|
|
raise Exception("Line not found in marklog: " + line)
|
|
|
|
found_values.append(line)
|
|
|
|
# Check to make sure the marklog contains the same number of values as the expected values
|
|
if len(found_values) != len(expected_values):
|
|
raise Exception(
|
|
"Marklog did not contain the same number of values as the expected values, found "
|
|
+ str(len(found_values))
|
|
+ " values, expected "
|
|
+ str(len(expected_values))
|
|
+ " values\n"
|
|
+ "\n".join(found_values)
|
|
)
|
|
|
|
# Check that the two lists contain the same values
|
|
if sorted(found_values) != sorted(expected_values):
|
|
raise Exception(
|
|
"Marklog did not contain the same values as the expected values, found:\n"
|
|
+ "\n".join(sorted(found_values))
|
|
+ "\n\nExpected:\n"
|
|
+ "\n".join(sorted(expected_values))
|
|
)
|
|
|
|
return True
|
|
except Exception as e:
|
|
print(e)
|
|
return False
|
|
|
|
|
|
def main():
|
|
args = parse_args()
|
|
expected_jellyfin = [
|
|
"jellyplex_watched/Movies/Five Nights at Freddy's",
|
|
"jellyplex_watched/Movies/The Hunger Games: The Ballad of Songbirds & Snakes/301215",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/Rose",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/The End of the World/300670",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Aftermath",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Departure/300741",
|
|
"jellyplex_watched/Movies/The Family Plan",
|
|
"jellyplex_watched/Movies/Five Nights at Freddy's",
|
|
"jellyplex_watched/Movies/The Hunger Games: The Ballad of Songbirds & Snakes/5",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/Rose",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/The End of the World/5",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Departure/5",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/The Way Out",
|
|
]
|
|
expected_emby = [
|
|
"jellyplex_watched/Movies/Tears of Steel",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Aftermath",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Parallels and Interiors/240429",
|
|
"JellyUser/Movies/Tears of Steel",
|
|
"JellyUser/Shows/Monarch: Legacy of Monsters/Parallels and Interiors/4",
|
|
]
|
|
expected_plex = [
|
|
"JellyUser/Movies/Big Buck Bunny",
|
|
"JellyUser/Movies/Killers of the Flower Moon/4",
|
|
"JellyUser/Shows/Doctor Who/The Unquiet Dead",
|
|
"JellyUser/Shows/Doctor Who/Aliens of London (1)/4",
|
|
"JellyUser/Shows/Monarch: Legacy of Monsters/Secrets and Lies",
|
|
"JellyUser/Shows/Monarch: Legacy of Monsters/Parallels and Interiors/4",
|
|
"jellyplex_watched/Movies/Big Buck Bunny",
|
|
"jellyplex_watched/Movies/The Family Plan",
|
|
"jellyplex_watched/Movies/Killers of the Flower Moon/4",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/The Unquiet Dead",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/Aliens of London (1)/4",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Secrets and Lies",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/The Way Out",
|
|
]
|
|
|
|
expected_dry = expected_emby + expected_plex + expected_jellyfin
|
|
|
|
expected_write = [
|
|
"jellyplex_watched/Movies/Five Nights at Freddy's",
|
|
"jellyplex_watched/Movies/The Hunger Games: The Ballad of Songbirds & Snakes/301215",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/Rose",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/The End of the World/300670",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Aftermath",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Departure/300741",
|
|
"JellyUser/Movies/Big Buck Bunny",
|
|
"JellyUser/Movies/Killers of the Flower Moon/4",
|
|
"JellyUser/Shows/Doctor Who/The Unquiet Dead",
|
|
"JellyUser/Shows/Doctor Who/Aliens of London (1)/4",
|
|
"JellyUser/Shows/Monarch: Legacy of Monsters/Secrets and Lies",
|
|
"JellyUser/Shows/Monarch: Legacy of Monsters/Parallels and Interiors/4",
|
|
"jellyplex_watched/Movies/Tears of Steel",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Parallels and Interiors/240429",
|
|
"jellyplex_watched/Movies/Big Buck Bunny",
|
|
"jellyplex_watched/Movies/The Family Plan",
|
|
"jellyplex_watched/Movies/Five Nights at Freddy's",
|
|
"jellyplex_watched/Movies/The Hunger Games: The Ballad of Songbirds & Snakes/5",
|
|
"jellyplex_watched/Movies/Killers of the Flower Moon/4",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/Rose",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/The End of the World/5",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/The Unquiet Dead",
|
|
"jellyplex_watched/TV Shows/Doctor Who (2005)/Aliens of London (1)/4",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Departure/5",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/Secrets and Lies",
|
|
"jellyplex_watched/TV Shows/Monarch: Legacy of Monsters/The Way Out",
|
|
"JellyUser/Movies/Tears of Steel",
|
|
"JellyUser/Shows/Monarch: Legacy of Monsters/Parallels and Interiors/4",
|
|
]
|
|
|
|
# Expected values for the mark.log file, dry-run is slightly different than write-run
|
|
# due to some of the items being copied over from one server to another and now being there
|
|
# for the next server run.
|
|
if args.dry:
|
|
expected_values = expected_dry
|
|
elif args.write:
|
|
expected_values = expected_write
|
|
elif args.plex:
|
|
expected_values = expected_plex
|
|
elif args.jellyfin:
|
|
expected_values = expected_jellyfin
|
|
elif args.emby:
|
|
expected_values = expected_emby
|
|
else:
|
|
print("No server specified")
|
|
exit(1)
|
|
|
|
lines = read_marklog()
|
|
if not check_marklog(lines, expected_values):
|
|
print("Failed to validate marklog")
|
|
exit(1)
|
|
|
|
print("Successfully validated marklog")
|
|
exit(0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|