Skip to content

Commit e522bf4

Browse files
authored
Merge pull request #2528 from chrjorgensen/fix/GetMbrInfo
Fix invalid dates from GetMbrInfo
2 parents 6563af0 + 846d6eb commit e522bf4

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

src/api/components/getMemberInfo.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { IBMiMember } from "../types";
77
export class GetMemberInfo implements IBMiComponent {
88
static ID = 'GetMemberInfo';
99
private readonly procedureName = 'GETMBRINFO';
10-
private readonly currentVersion = 1;
10+
private readonly currentVersion = 2;
1111
private installedVersion = 0;
1212

1313
reset() {
@@ -160,11 +160,15 @@ function getSource(library: string, name: string, version: number) {
160160
` , rtrim( substr( Buffer, 39, 10 ) )`,
161161
` , rtrim( substr( Buffer, 49, 10 ) )`,
162162
` , timestamp_format( case substr( Buffer, 59, 1 )`,
163-
` when '1' then '20' else '19' end concat `,
164-
` substr( Buffer, 60, 12 ) , 'YYYYMMDDHH24MISS')`,
163+
` when '1' then '20' concat substr( Buffer, 60, 12 )`,
164+
` when '0' then '19' concat substr( Buffer, 60, 12 )`,
165+
` else '19700101000000'`,
166+
` end, 'YYYYMMDDHH24MISS')`,
165167
` , timestamp_format( case substr( Buffer, 72, 1 )`,
166-
` when '1' then '20' else '19' end concat `,
167-
` substr( Buffer, 73, 12 ), 'YYYYMMDDHH24MISS')`,
168+
` when '1' then '20' concat substr( Buffer, 73, 12 )`,
169+
` when '0' then '19' concat substr( Buffer, 73, 12 )`,
170+
` else '19700101000000'`,
171+
` end, 'YYYYMMDDHH24MISS')`,
168172
` , rtrim( substr( Buffer, 85, 50 ) )`,
169173
` , case substr( Buffer, 135, 1 ) when '1' then 'Y' else 'N' end`,
170174
` );`,

src/api/tests/suites/components.test.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,31 @@ describe('Component Tests', () => {
5353
expect(error).toBeInstanceOf(Tools.SqlError);
5454
expect(error.sqlstate).toBe("38501");
5555
}
56+
57+
// Check getMemberInfo for empty member.
58+
const config = connection.getConfig();
59+
const tempLib = config!.tempLibrary,
60+
tempSPF = `O_ABC`.concat(connection!.variantChars.local),
61+
tempMbr = `O_ABC`.concat(connection!.variantChars.local);
62+
63+
const result = await connection!.runCommand({
64+
command: `CRTSRCPF ${tempLib}/${tempSPF} MBR(${tempMbr})`,
65+
environment: 'ile'
66+
});
67+
68+
const memberInfoC = await component.getMemberInfo(connection, tempLib, tempSPF, tempMbr);
69+
expect(memberInfoC).toBeTruthy();
70+
expect(memberInfoC?.library).toBe(tempLib);
71+
expect(memberInfoC?.file).toBe(tempSPF);
72+
expect(memberInfoC?.name).toBe(tempMbr);
73+
expect(memberInfoC?.created).toBeTypeOf('number');
74+
expect(memberInfoC?.changed).toBeTypeOf('number');
75+
76+
// Cleanup...
77+
await connection!.runCommand({
78+
command: `DLTF ${tempLib}/${tempSPF}`,
79+
environment: 'ile'
80+
});
81+
5682
});
5783
});

0 commit comments

Comments
 (0)