diff --git a/emulators/prboom-plus.yml b/emulators/prboom-plus.yml index 912ff69bd..d12e1fca9 100644 --- a/emulators/prboom-plus.yml +++ b/emulators/prboom-plus.yml @@ -120,7 +120,7 @@ files: analysis: engine_wad_contents: - source_ref: "data/CMakeLists.txt:24-340 (rdatawad input lists), data/CMakeLists.txt:342-362 (WAD_SRC and WAD_CMDLINE)" + source_ref: "prboom2/data/CMakeLists.txt:24-340 (rdatawad input lists), prboom2/data/CMakeLists.txt:342-362 (WAD_SRC and WAD_CMDLINE)" note: > What rdatawad packs into prboom-plus.wad, in the order the command line builds it. @@ -135,8 +135,8 @@ analysis: - "SINETABL, TANGTABL, TANTOANG, GAMMATBL" - "CHEXDEH, BFGBEX, NERVEBEX" - "GLSHADOW, GLFP, GLVP" - - "-PRBHUD-, read by hu_stuff.c:1144" - - "the M_* OpenGL automap icons listed in gl_map.c:48-68" + - "-PRBHUD-, read by prboom2/src/hu_stuff.c:1144" + - "the M_* OpenGL automap icons listed in prboom2/src/gl_map.c:48-68" sounds: "DSDGSIT, DSDGATK, DSDGACT, DSDGDTH, DSDGPAIN" graphics: "the DIG* status bar digits, STBR*, the BOX* frame pieces, STKEYS6-8, STCFN096, M_BUTT1/2, M_COLORS, M_PALNO, M_PALSEL, M_VBOX, CROSS1-3" flats: "-N0_TEX-, between FF_START and FF_END" @@ -146,7 +146,7 @@ analysis: files: - "shaders/glvp.txt" - "shaders/glfp.txt" - source_ref: "gl_shader.c:144-152 (path built from I_DoomExeDir), gl_shader.c:84-129 (ReadLump)" + source_ref: "prboom2/src/gl_shader.c:144-152 (path built from I_DoomExeDir), prboom2/src/gl_shader.c:84-129 (ReadLump)" note: > Read from the config directory when present. ReadLump falls back to the GLVP and GLFP lumps in the ns_prboom namespace when the file is missing, @@ -160,18 +160,18 @@ analysis: - filename: "prboom-plus.cfg" source_ref: "prboom2/src/m_misc.c:1586-1600 (BOOM_CFG, path from I_DoomExeDir), prboom2/src/m_misc.c:1606 (read)" - filename: "RGB2PAL.dat" - source_ref: "gl_hires.c:938-953 (read), gl_hires.c:962-967 (opened wb and written)" + source_ref: "prboom2/src/gl_hires.c:938-953 (read), prboom2/src/gl_hires.c:962-967 (opened wb and written)" note: > A 24-bit RGB to palette lookup table built from V_GetPlaypal, so its - contents follow whichever IWAD is loaded. gl_hires.c:920-936 prefers + contents follow whichever IWAD is loaded. prboom2/src/gl_hires.c:920-936 prefers an RGB2PAL lump of the right length when a WAD supplies one. - filename: ".cache" - source_ref: "gl_hires.c:1144-1147 (read), gl_hires.c:1179 (gld_HiRes_WriteCache)" + source_ref: "prboom2/src/gl_hires.c:1144-1147 (read), prboom2/src/gl_hires.c:1179 (gld_HiRes_WriteCache)" note: "Keyed on the source image mtime and discarded when it differs." - filename: "levelstat.txt" - source_ref: "e6y.c:968" + source_ref: "prboom2/src/e6y.c:968" - filename: "levelinfo.txt" - source_ref: "prboom2/src/d_main.c:1049-1060, behind GL_DOOM and PRBOOM_DEBUG" + source_ref: "prboom2/src/d_main.c:1049-1060 (behind GL_DOOM and PRBOOM_DEBUG)" - filename: "temp_a.nut, temp_v.nut" source_ref: "prboom2/src/m_misc.c:1065-1066 (cap_tempfile1, cap_tempfile2)" @@ -189,11 +189,11 @@ analysis: - what: "autoload directories, /autoload/doom-all and one per IWAD" source_ref: "prboom2/src/d_main.c:1400-1414 (GetAutoloadBaseDir), prboom2/src/d_main.c:1500-1519 (D_AutoloadIWadDir)" - what: "demos, -playdemo, -fastdemo, -record" - source_ref: "r_demo.c:89-119, g_game.c:2570, g_game.c:3150" + source_ref: "prboom2/src/r_demo.c:89-119, prboom2/src/g_game.c:2570, prboom2/src/g_game.c:3150" - what: "external high resolution texture packs, under textures/, flats/ and patches/" - source_ref: "gl_hires.c:467-631 (hires_paths), gl_hires.c:703-719 (gl_texture_hires_dir or I_DoomExeDir)" + source_ref: "prboom2/src/gl_hires.c:467-631 (hires_paths), prboom2/src/gl_hires.c:703-719 (gl_texture_hires_dir or I_DoomExeDir)" - what: "savegames, DOOMSAVEDIR or the config directory" - source_ref: "prboom2/src/d_main.c:1019-1032, m_menu.c:957" + source_ref: "prboom2/src/d_main.c:1019-1032, prboom2/src/m_menu.c:957" - what: "response files, @name" source_ref: "prboom2/src/d_main.c:1094-1112" @@ -203,6 +203,6 @@ analysis: - what: "ffmpeg, video capture and muxing" source_ref: "prboom2/src/m_misc.c:1062-1064 (cap_soundcommand, cap_videocommand, cap_muxcommand)" - what: "wget then unzip, fetching a WAD a game server asks for" - source_ref: "d_client.c:236-257 (execlp), doc/prboom-plus.6:200-206" + source_ref: "prboom2/src/d_client.c:236-257 (execlp), prboom2/doc/prboom-plus.6:200-206" - what: "getwad_cmdline, run through system() when a needed WAD is missing" - source_ref: "r_demo.c:1641-1704 (D_TryGetWad), prboom2/src/m_misc.c:1029 (default empty, so the path is inert until configured)" + source_ref: "prboom2/src/r_demo.c:1641-1704 (D_TryGetWad), prboom2/src/m_misc.c:1029 (default empty, so the path is inert until configured)" diff --git a/tests/test_audit_regressions.py b/tests/test_audit_regressions.py index 34744187d..65ba55419 100644 --- a/tests/test_audit_regressions.py +++ b/tests/test_audit_regressions.py @@ -7414,6 +7414,40 @@ class TupleAnnotationsMatchTheirReturns(unittest.TestCase): self.assertEqual(mismatched, []) +class PrboomPlusCitesFullPaths(unittest.TestCase): + """prboom-plus cited gl_hires.c, e6y.c, d_client.c and g_game.c bare: + none resolves against the repository, so the page showed them as plain + code with no link, and "behind GL_DOOM and PRBOOM_DEBUG" was read as a + seventeenth citation. Each name has one path in the tree at the pin.""" + + def test_every_cited_file_has_its_directory(self): + import yaml + + from scripts.sourceref import source_ref_values, split_source_ref + + profile = yaml.safe_load((ROOT / "emulators" / "prboom-plus.yml").read_text(encoding="utf-8")) + refs: list[str] = [] + + def walk(node): + if isinstance(node, dict): + for key, value in node.items(): + if key == "source_ref": + refs.extend(r for _, r in source_ref_values(value)) + else: + walk(value) + elif isinstance(node, list): + for item in node: + walk(item) + + walk(profile) + parts = [p for ref in refs for p in split_source_ref(ref)] + self.assertGreater(len(parts), 40) + for part in parts: + with self.subTest(path=part.path): + self.assertIsNotNone(part.start) + self.assertTrue(part.path.startswith("prboom2/"), part.path) + + class AutoFetchIssueBodyReadsAsWritten(unittest.TestCase): """The --create-issues body was a template: Title Case headings, "The following...", an exclamation mark, numbered orders to the reader, a diff --git a/website/src/data/source-paths.json b/website/src/data/source-paths.json index d0f00e7a2..b5e05212f 100644 --- a/website/src/data/source-paths.json +++ b/website/src/data/source-paths.json @@ -2878,11 +2878,19 @@ "github.com/coelckers/prboom-plus@969515162c5aebea4ad7a125ee178dcad3d576ad": [ "prboom2/CMakeLists.txt", "prboom2/data/CMakeLists.txt", + "prboom2/doc/prboom-plus.6", "prboom2/src/CMakeLists.txt", "prboom2/src/MUSIC/flplayer.c", "prboom2/src/SDL/i_system.c", + "prboom2/src/d_client.c", "prboom2/src/d_main.c", + "prboom2/src/e6y.c", + "prboom2/src/g_game.c", + "prboom2/src/gl_hires.c", + "prboom2/src/gl_shader.c", + "prboom2/src/m_menu.c", "prboom2/src/m_misc.c", + "prboom2/src/r_demo.c", "prboom2/src/w_wad.c" ], "github.com/crawl/crawl@a5ed93406571b9682050cfc318b15b9f637d4e7e": [