1+ using GitHub . DistributedTask . Expressions2 ;
2+ using GitHub . DistributedTask . ObjectTemplating ;
3+ using GitHub . DistributedTask . Pipelines . ContextData ;
4+ using GitHub . DistributedTask . Pipelines . ObjectTemplating ;
5+
6+ namespace Runner . Server
7+ {
8+ public class ActionsTests
9+ {
10+ private static TemplateContext CreateTemplateContext ( GitHub . DistributedTask . ObjectTemplating . ITraceWriter traceWriter ) {
11+ ExpressionFlags flags = ExpressionFlags . None ;
12+
13+ var templateContext = new TemplateContext ( ) {
14+ Flags = flags ,
15+ CancellationToken = CancellationToken . None ,
16+ Errors = new TemplateValidationErrors ( 10 , 500 ) ,
17+ Memory = new TemplateMemory (
18+ maxDepth : 100 ,
19+ maxEvents : 1000000 ,
20+ maxBytes : 10 * 1024 * 1024 ) ,
21+ TraceWriter = traceWriter ,
22+ Schema = PipelineTemplateSchemaFactory . GetSchema ( )
23+ } ;
24+ return templateContext ;
25+ }
26+
27+ [ Fact ]
28+ public void TestParseYamlAnchorsComplex ( )
29+ {
30+ using var content = new StringReader ( @"
31+ name: 'Test Workflow'
32+ on: [push, pull_request]
33+ jobs:
34+ build:
35+ runs-on: &name ubuntu-latest
36+ steps:
37+ - &anchor
38+ name: Checkout
39+ uses: actions/checkout@v4
40+ - name: Run Tests
41+ run: echo 'Running tests...'
42+ build2:
43+ runs-on: ubuntu-latest
44+ steps:
45+ - *anchor
46+ - *anchor
47+ - *anchor
48+ - name: Run Tests
49+ run: echo 'Running tests...'
50+ *name:
51+ runs-on: ubuntu-latest
52+ steps:
53+ - *anchor
54+ - *anchor
55+ - *anchor
56+ " ) ;
57+
58+ YamlObjectReader reader = new YamlObjectReader ( null , content , true ) ;
59+ var ctx = CreateTemplateContext ( new EmptyTraceWriter ( ) ) ;
60+ var result = TemplateReader . Read ( ctx , "workflow-root" , reader , null , out _ ) ;
61+ Assert . Equal ( 0 , ctx . Errors . Count ) ;
62+ Assert . NotNull ( result ) ;
63+ string f = result . ToContextData ( ) . ToJToken ( ) . ToString ( ) ;
64+ Console . WriteLine ( f ) ;
65+ }
66+
67+ [ Fact ]
68+ public void TestParseYamlAnchorsSimple ( )
69+ {
70+ using var content = new StringReader ( @"
71+ - &anchor
72+ key: value
73+ - *anchor
74+ " ) ;
75+
76+ YamlObjectReader reader = new YamlObjectReader ( null , content , true ) ;
77+ var ctx = CreateTemplateContext ( new EmptyTraceWriter ( ) ) ;
78+ var result = TemplateReader . Read ( ctx , "any" , reader , null , out _ ) ;
79+ Assert . Equal ( 0 , ctx . Errors . Count ) ;
80+ Assert . NotNull ( result ) ;
81+ string f = result . ToContextData ( ) . ToJToken ( ) . ToString ( ) ;
82+ Console . WriteLine ( f ) ;
83+ }
84+
85+ [ Fact ]
86+ public void TestParseYamlAnchorsSimpleSplitByMapping ( )
87+ {
88+ using var content = new StringReader ( @"
89+ a:
90+ - &anchor
91+ key: value
92+ b:
93+ - *anchor
94+ " ) ;
95+
96+ YamlObjectReader reader = new YamlObjectReader ( null , content , true ) ;
97+ var ctx = CreateTemplateContext ( new EmptyTraceWriter ( ) ) ;
98+ var result = TemplateReader . Read ( ctx , "any" , reader , null , out _ ) ;
99+ Assert . Equal ( 0 , ctx . Errors . Count ) ;
100+ Assert . NotNull ( result ) ;
101+ string f = result . ToContextData ( ) . ToJToken ( ) . ToString ( ) ;
102+ Console . WriteLine ( f ) ;
103+ }
104+ }
105+ }
0 commit comments