Stufe 4c (#764): Kommentare in C#, WebUI-Skripten, CSS und HTML auf Englisch
Rund 2.600 Kommentarblöcke in 310 C#-Dateien übersetzt, Begründungen vollständig erhalten: blockweise gleiche Anzahl wie vorher, kein Block unter 60 % seiner Länge, der Code außerhalb der Kommentare per Tokenizer byte-identisch geprüft. Zitate deutscher Oberflächentexte und Testdaten bleiben deutsch. WebUI: Kommentare in JS/CSS/HTML übersetzt, JSDoc-@param an die in 4b umbenannten Parameter angeglichen. Dabei behoben: - 4b hatte "tag" (HTML-Tag) als deutsches "Tag" gelesen und zu "dayValue" gemacht (makeElement, svg, Tagesübersicht) - zurück auf tag/day. - Aufgaben "InProgress" bekamen die Plakettenart "laufend", für die es nie eine CSS-Klasse gab - jetzt "success" wie laufende Instanzen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
da4ceac7d5
commit
837a634a22
@@ -4,17 +4,17 @@ using Shouldly;
|
||||
namespace ClawdDotNet.Tools.Tests.SocialMedia;
|
||||
|
||||
/// <summary>
|
||||
/// S2 aus der Bestandsaufnahme: Die Kanal-/Video-Angabe wurde ungeprüft in eine
|
||||
/// Argument-Zeichenkette für yt-dlp interpoliert. UseShellExecute=false verhindert
|
||||
/// Shell-Metazeichen, nicht aber Options-Injection — yt-dlp kennt --exec, das beliebige
|
||||
/// Befehle ausführt.
|
||||
/// S2 from the inventory: the channel/video statement was interpolated unchecked into an
|
||||
/// argument string for yt-dlp. UseShellExecute=false prevents
|
||||
/// shell metacharacters, but not option injection — yt-dlp knows --exec, which executes arbitrary
|
||||
/// commands.
|
||||
///
|
||||
/// Die Angriffsfälle bleiben hier dauerhaft als Testfälle dokumentiert.
|
||||
/// The attack cases stay permanently documented here as test cases.
|
||||
/// </summary>
|
||||
public sealed class YouTubeUrlTests
|
||||
{
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
// Angriffe
|
||||
// Attacks
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Theory]
|
||||
@@ -44,9 +44,9 @@ public sealed class YouTubeUrlTests
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("kanal name")] // Leerzeichen
|
||||
[InlineData("kanal\"name")] // Anführungszeichen
|
||||
[InlineData("kanal\nname")] // Zeilenumbruch
|
||||
[InlineData("kanal name")] // space
|
||||
[InlineData("kanal\"name")] // quotation marks
|
||||
[InlineData("kanal\nname")] // line break
|
||||
[InlineData("kanal;name")]
|
||||
[InlineData("kanal&name")]
|
||||
[InlineData("../../etc/passwd")]
|
||||
@@ -67,7 +67,7 @@ public sealed class YouTubeUrlTests
|
||||
}
|
||||
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
// Gegenproben — legitime Eingaben müssen weiter funktionieren
|
||||
// Counter-checks — legitimate inputs must keep working
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Theory]
|
||||
@@ -93,14 +93,14 @@ public sealed class YouTubeUrlTests
|
||||
}
|
||||
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
// Argumentbildung
|
||||
// Building the arguments
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public void Die_URL_steht_hinter_dem_Optionsende_Trenner()
|
||||
{
|
||||
// "--" beendet die Optionsliste. Selbst wenn ein Wert wie eine Option aussähe,
|
||||
// würde yt-dlp ihn danach als Adresse behandeln.
|
||||
// "--" ends the option list. Even if a value looked like an option,
|
||||
// yt-dlp would treat it as an address after that.
|
||||
var args = YouTubeUrl.BuildLatestVideoIdArgs("https://www.youtube.com/@kanal/videos");
|
||||
|
||||
var separator = args.IndexOf("--");
|
||||
@@ -112,8 +112,8 @@ public sealed class YouTubeUrlTests
|
||||
[Fact]
|
||||
public void Jedes_Argument_ist_ein_eigener_Eintrag()
|
||||
{
|
||||
// Entscheidend: Kein Eintrag darf mehrere Argumente enthalten — sonst könnten
|
||||
// sie beim Start wieder aufgetrennt werden.
|
||||
// Crucial: no entry may contain several arguments — otherwise they could
|
||||
// be split apart again at startup.
|
||||
var args = YouTubeUrl.BuildAudioDownloadArgs(
|
||||
@"C:\Pfad mit Leerzeichen\datei.mp3",
|
||||
"https://www.youtube.com/watch?v=abc",
|
||||
|
||||
Reference in New Issue
Block a user