diff options
| author | Marek Sokolowski <mnbvmar@gmail.com> | 2017-09-28 22:41:38 +0000 |
|---|---|---|
| committer | Marek Sokolowski <mnbvmar@gmail.com> | 2017-09-28 22:41:38 +0000 |
| commit | fb74cb1edfa64424fb5204d10a16892f972435ed (patch) | |
| tree | 7d957908f643f7220954015652c2509e3a963683 /llvm/test/tools | |
| parent | 3b87336a0c4e7974c007d489926e5e1bcf722a75 (diff) | |
| download | bcm5719-llvm-fb74cb1edfa64424fb5204d10a16892f972435ed.tar.gz bcm5719-llvm-fb74cb1edfa64424fb5204d10a16892f972435ed.zip | |
[llvm-rc] Add VERSIONINFO parsing ability. [6/8]
This extends the set of llvm-rc parser's available resources by
another one, VERSIONINFO.
Ref: msdn.microsoft.com/en-us/library/windows/desktop/aa381058.aspx
Thanks to Nico Weber for his original work in this area.
Differential Revision: https://reviews.llvm.org/D37021
llvm-svn: 314468
Diffstat (limited to 'llvm/test/tools')
8 files changed, 119 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc b/llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc index 4c7ce4025dd..ec5286c0393 100644 --- a/llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc +++ b/llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc @@ -78,3 +78,36 @@ BEGIN END 26 DIALOGEX 1, 2, 3, 4 {} + +1 VERSIONINFO +FILEVERSION 1, 2, 3, 4 +PRODUCTVERSION 5, 6, 7, 8 +FILEFLAGSMASK 50 +FILEFLAGS 555 +FILEOS 110 +FILETYPE 555555 +FILESUBTYPE 14 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + { + VALUE "CompanyName", "a" + VALUE "FileDescription", "b" + VALUE "FileVersion", "c" + VALUE "InternalName", "d" + VALUE "LegalCopyright", "e" + VALUE "LegalTrademarks1", "f" + VALUE "LegalTrademarks2", "g" + VALUE "OriginalFilename", L"h" + VALUE "ProductName", "ii", 2, 3 + VALUE "ProductVersion" + } + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + + END +END diff --git a/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-bad-type.rc b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-bad-type.rc new file mode 100644 index 00000000000..1fa230d5b0d --- /dev/null +++ b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-bad-type.rc @@ -0,0 +1,4 @@ +1 VERSIONINFO +BEGIN + INCORRECT "1", "2" +END diff --git a/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-named-main-block.rc b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-named-main-block.rc new file mode 100644 index 00000000000..affd11045c4 --- /dev/null +++ b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-named-main-block.rc @@ -0,0 +1,4 @@ +1 VERSIONINFO +BLOCK "hello" +BEGIN +END diff --git a/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-repeated-fixed.rc b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-repeated-fixed.rc new file mode 100644 index 00000000000..45588a669dc --- /dev/null +++ b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-repeated-fixed.rc @@ -0,0 +1,6 @@ +1 VERSIONINFO +FileVersion 1, 2, 3, 4 +PRODUCTVERSION 5, 6, 7, 8 +FILEVERSION 9, 10, 11, 12 +BEGIN +END diff --git a/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-unnamed-inner-block.rc b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-unnamed-inner-block.rc new file mode 100644 index 00000000000..3ed1fb6ec5e --- /dev/null +++ b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-unnamed-inner-block.rc @@ -0,0 +1,4 @@ +1 VERSIONINFO +BEGIN + BLOCK {} +END diff --git a/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-unnamed-value.rc b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-unnamed-value.rc new file mode 100644 index 00000000000..acb9eba66e4 --- /dev/null +++ b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-unnamed-value.rc @@ -0,0 +1,7 @@ +1 VERSIONINFO +BEGIN + BLOCK "VarFileInfo" + BEGIN + VALUE + END +END diff --git a/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-wrong-fixed.rc b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-wrong-fixed.rc new file mode 100644 index 00000000000..9882d881771 --- /dev/null +++ b/llvm/test/tools/llvm-rc/Inputs/parser-versioninfo-wrong-fixed.rc @@ -0,0 +1,3 @@ +1 VERSIONINFO +WEIRDFIXED 5 +BEGIN END diff --git a/llvm/test/tools/llvm-rc/parser.test b/llvm/test/tools/llvm-rc/parser.test index bc7f20325d6..1f11a853df2 100644 --- a/llvm/test/tools/llvm-rc/parser.test +++ b/llvm/test/tools/llvm-rc/parser.test @@ -64,6 +64,34 @@ ; PGOOD-NEXT: Control (5): EDITTEXT, title: , loc: (1, 2), size: [4, 7], style: 8 ; PGOOD-NEXT: Dialog (25): loc: (1, 2), size: [3, 4], help ID: 0 ; PGOOD-NEXT: DialogEx (26): loc: (1, 2), size: [3, 4], help ID: 0 +; PGOOD-NEXT: VersionInfo (1): +; PGOOD-NEXT: Fixed: FILEVERSION: 1 2 3 4 +; PGOOD-NEXT: Fixed: PRODUCTVERSION: 5 6 7 8 +; PGOOD-NEXT: Fixed: FILEFLAGSMASK: 50 +; PGOOD-NEXT: Fixed: FILEFLAGS: 555 +; PGOOD-NEXT: Fixed: FILEOS: 110 +; PGOOD-NEXT: Fixed: FILETYPE: 555555 +; PGOOD-NEXT: Fixed: FILESUBTYPE: 14 +; PGOOD-NEXT: Start of block (name: ) +; PGOOD-NEXT: Start of block (name: "StringFileInfo") +; PGOOD-NEXT: Start of block (name: "040904E4") +; PGOOD-NEXT: "CompanyName" => "a" +; PGOOD-NEXT: "FileDescription" => "b" +; PGOOD-NEXT: "FileVersion" => "c" +; PGOOD-NEXT: "InternalName" => "d" +; PGOOD-NEXT: "LegalCopyright" => "e" +; PGOOD-NEXT: "LegalTrademarks1" => "f" +; PGOOD-NEXT: "LegalTrademarks2" => "g" +; PGOOD-NEXT: "OriginalFilename" => L"h" +; PGOOD-NEXT: "ProductName" => "ii" 2 3 +; PGOOD-NEXT: "ProductVersion" => +; PGOOD-NEXT: End of block +; PGOOD-NEXT: End of block +; PGOOD-NEXT: Start of block (name: "VarFileInfo") +; PGOOD-NEXT: "Translation" => 1033 1252 +; PGOOD-NEXT: End of block +; PGOOD-NEXT: End of block + ; RUN: not llvm-rc /V %p/Inputs/parser-stringtable-no-string.rc 2>&1 | FileCheck %s --check-prefix PSTRINGTABLE1 @@ -184,3 +212,33 @@ ; RUN: not llvm-rc /V %p/Inputs/parser-dialog-unnecessary-string.rc 2>&1 | FileCheck %s --check-prefix PDIALOG5 ; PDIALOG5: llvm-rc: Error parsing file: expected integer, got "This shouldn't be here" + + +; RUN: not llvm-rc /V %p/Inputs/parser-versioninfo-wrong-fixed.rc 2>&1 | FileCheck %s --check-prefix PVERSIONINFO1 + +; PVERSIONINFO1: llvm-rc: Error parsing file: expected fixed VERSIONINFO statement type, got WEIRDFIXED + + +; RUN: not llvm-rc /V %p/Inputs/parser-versioninfo-named-main-block.rc 2>&1 | FileCheck %s --check-prefix PVERSIONINFO2 + +; PVERSIONINFO2: llvm-rc: Error parsing file: expected fixed VERSIONINFO statement type, got BLOCK + + +; RUN: not llvm-rc /V %p/Inputs/parser-versioninfo-unnamed-inner-block.rc 2>&1 | FileCheck %s --check-prefix PVERSIONINFO3 + +; PVERSIONINFO3: llvm-rc: Error parsing file: expected string, got { + + +; RUN: not llvm-rc /V %p/Inputs/parser-versioninfo-unnamed-value.rc 2>&1 | FileCheck %s --check-prefix PVERSIONINFO4 + +; PVERSIONINFO4: llvm-rc: Error parsing file: expected string, got END + + +; RUN: not llvm-rc /V %p/Inputs/parser-versioninfo-bad-type.rc 2>&1 | FileCheck %s --check-prefix PVERSIONINFO5 + +; PVERSIONINFO5: llvm-rc: Error parsing file: expected BLOCK or VALUE, got INCORRECT + + +; RUN: not llvm-rc /V %p/Inputs/parser-versioninfo-repeated-fixed.rc 2>&1 | FileCheck %s --check-prefix PVERSIONINFO6 + +; PVERSIONINFO6: llvm-rc: Error parsing file: expected yet unread fixed VERSIONINFO statement type, got FILEVERSION |

