github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/tests/functests/c0034.yml (about)

     1  TODO:
     2    - not clear if dvar in calleed should be overriden as well??
     3    - need a review on this later on
     4  
     5  doc_meta: |
     6    folder: dvars
     7    title: dvars in call
     8    head: |
     9      Demo dvars merge in local scope in execution time
    10  
    11    sections:
    12      - title: Note
    13        content: |
    14          * school object in callee
    15  
    16      - title: Demo
    17        log: yes
    18  
    19  notes:
    20    goal:
    21      - dvars expand in call level
    22      - dvars object can merge in leaf level
    23      - dvar in call task will override same name dvar in local level
    24  
    25    expected:
    26      - school object in nonprod could append new element and
    27      - also override same name element
    28  
    29    result_log: |
    30      cmd( 1):
    31        echo """1.school -> {{.school}}"""
    32      1.school -> address:
    33        state: NSW
    34        city: sydney
    35        suburb:
    36          name: sydney
    37          postcode: 2000
    38          CBD: LOCAL
    39        school: Sydney Grammar
    40      principal: Mr Right
    41      cmd( 2):
    42        echo """2.school object CBD -> {{.school_object.address.suburb.CBD}}"""
    43        2.school object CBD -> LOCAL
    44      cmd( 3):
    45        echo """3.school object-> {{.school_object.address.school}}"""
    46        3.school object-> Sydney Grammar
    47      cmd( 4):
    48        echo """4.school object-> {{.school_object.principal}}"""
    49        4.school object-> Mr Right
    50      cmd( 5):
    51        echo """5.a {{.a}}"""
    52        5.a local-a
    53      cmd( 6):
    54        echo """6.b {{.b}}"""
    55        6.b local-b
    56  
    57  scopes:
    58    -
    59      name: global
    60      vars:
    61        student:
    62          name: Tom
    63          gender: Male
    64          address:
    65            suburb:
    66              name: sydney
    67              postcode: 2000
    68              CBD: yes
    69            school: Sydney Grammar
    70  
    71    -
    72      name: nonprod
    73      members:
    74        - dev
    75        - staging
    76      vars:
    77        a: non-prod-a
    78        b: non-prod-b
    79        c: non-prod-c
    80        d: non-prod-d
    81      dvars:
    82        - name: school
    83          value: |
    84            address:
    85              suburb:
    86                name: {{.student.address.suburb.name}}
    87                postcode: 2000
    88                CBD: yes
    89              school: {{.student.address.school}}
    90          flags: [toObj]
    91  
    92    -
    93      name: dev
    94  
    95  
    96  tasks:
    97  
    98    -
    99      name: task
   100      task:
   101        -
   102          func: call
   103          vars:
   104            a: local-a
   105            b: local-b
   106          dvars:
   107            - name: school
   108              value: |
   109                address:
   110                  state: NSW
   111                  city: sydney
   112                  suburb:
   113                    name: {{.student.address.suburb.name}}
   114                    postcode: 2000
   115                    CBD: LOCAL
   116                  school: {{.student.address.school}}
   117                principal: Mr Right
   118              flags: [toObj]
   119  
   120          do:
   121            - show_school_details
   122  
   123    -
   124      name: show_school_details
   125      task:
   126  
   127        -
   128          func: shell
   129          vars:
   130            a: show-school-details-a
   131            b: show-school-details-b
   132          dvars:
   133            - name: class_room
   134              value: 3K
   135            - name: school
   136              value: |
   137                address:
   138                  suburb:
   139                    name: {{.student.address.suburb.name}}
   140                    postcode: 2000
   141                    CBD: no
   142                  school: {{.student.address.school}}
   143                principal: Mr Peter
   144                something: ref task does not have this field
   145              flags: [toObj]
   146  
   147          do:
   148            - echo """1.school -> {{.school}}"""
   149            - echo """2.school object CBD -> {{.school_object.address.suburb.CBD}}"""
   150            - echo """3.school object-> {{.school_object.address.school}}"""
   151            - echo """4.school object-> {{.school_object.principal}}"""
   152            - echo """5.a {{.a}}"""
   153            - echo """6.b {{.b}}"""
   154            - echo """7.school object-> {{.school_object|printObj}}"""