From 266ec40d9ba0d454e3b80b0a1fa3a9d8dd8aa6c1 Mon Sep 17 00:00:00 2001 From: Gilles QUERRET Date: Mon, 21 Oct 2019 16:21:07 +0200 Subject: [PATCH 1/2] Pipeline + Build + Sonar + Unit tests --- Jenkinsfile | 37 ++++++++++++++++++++++++ build.xml | 61 ++++++++++++++++++++++++++++++++++++++++ sonar-project.properties | 14 +++++++++ test/DDTest.p | 26 +++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 Jenkinsfile create mode 100644 build.xml create mode 100644 sonar-project.properties create mode 100644 test/DDTest.p diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..f78c32c --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,37 @@ +pipeline { + agent { label 'Node02' } + options { + buildDiscarder(logRotator(numToKeepStr:'5')) + timeout(time: 10, unit: 'MINUTES') + skipDefaultCheckout() + } + stages { + stage ('Build') { + steps { + checkout([ $class: 'GitSCM', branches: scm.branches, extensions: scm.extensions + [[$class: 'CleanCheckout']], userRemoteConfigs: scm.userRemoteConfigs ]) + withEnv(["DLC=${tool name: 'OpenEdge-12.1', type: 'openedge'}", "JAVA_HOME=${tool name: 'JDK8', type: 'jdk'}"]) { + bat "%DLC%\\ant\\bin\\ant -DDLC=%DLC% -lib %DLC%\\pct\\pct.jar build test dist" + } + junit 'results.xml' + stash name: 'windows-build', includes: 'target/DataDigger.zip' + archiveArtifacts artifacts: 'target/DataDigger.zip' + } + } + + stage ('Code analysis') { + steps { + script { + withEnv(["PATH+SCAN=${tool name: 'SQScanner4', type: 'hudson.plugins.sonar.SonarRunnerInstallation'}/bin", "DLC=${tool name: 'OpenEdge-12.1', type: 'openedge'}"]) { + withSonarQubeEnv('RSSW') { + if (("master" == env.BRANCH_NAME) || ("develop" == env.BRANCH_NAME) || ("develop02" == env.BRANCH_NAME)) { + bat "sonar-scanner -Dsonar.oe.dlc=%DLC% -Dsonar.branch.name=%BRANCH_NAME%" + } else { + bat "sonar-scanner -Dsonar.oe.dlc=%DLC% -Dsonar.branch.name=%BRANCH_NAME% -Dsonar.branch.target=develop02" + } + } + } + } + } + } + } +} diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..9ebc112 --- /dev/null +++ b/build.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..708e58c --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,14 @@ +sonar.projectKey=patrickTingen:DataDigger +sonar.projectName=DataDigger +sonar.projectVersion=1.0 +sonar.projectDescription=DataDigger +sonar.sources=. +sonar.sourceEncoding=utf-8 +sonar.inclusions=*.i,*.p,*.w,*.cls +sonar.tests=test +sonar.oe.binaries=target/build +sonar.oe.propath=. +sonar.oe.propath.dlc=true +sonar.oe.databases=empty_schema.df:dictdb +sonar.oe.coverage.profiler.dirs=profiler +sonar.testExecutionReportPaths=sonar.xml diff --git a/test/DDTest.p b/test/DDTest.p new file mode 100644 index 0000000..ae909bf --- /dev/null +++ b/test/DDTest.p @@ -0,0 +1,26 @@ +ROUTINE-LEVEL ON ERROR UNDO, THROW. + +USING OpenEdge.Core.Assert. + +{ DataDigger.i } + +@Test. +PROCEDURE TestCreateFolder: + DEFINE VARIABLE lib AS HANDLE NO-UNDO. + RUN dataDiggerLib.p PERSISTENT SET lib. + RUN getTables IN lib (INPUT TABLE ttTableFilter, OUTPUT TABLE ttTable). + + DEFINE VARIABLE cErr AS CHARACTER NO-UNDO. + RUN createFolder IN lib (INPUT '.\dir1\dir2\dir3'). + + FILE-INFO:FILE-NAME = "dir1". + Assert:IsTrue(INDEX(FILE-INFO:FILE-TYPE, "D") GT 0). + FILE-INFO:FILE-NAME = "dir1/dir2". + Assert:IsTrue(INDEX(FILE-INFO:FILE-TYPE, "D") GT 0). + FILE-INFO:FILE-NAME = "dir1/dir2/dirss3". + Assert:IsTrue(INDEX(FILE-INFO:FILE-TYPE, "D") GT 0). + + DELETE PROCEDURE lib. + +END PROCEDURE. + From b46ea922805b4c58196dd80b86520134a5bc56e7 Mon Sep 17 00:00:00 2001 From: cverbiest Date: Tue, 29 Oct 2019 11:37:01 -0400 Subject: [PATCH 2/2] Add field comment & test --- DataDigger.i | 4 +++- DataDiggerLib.p | 2 ++ test/DDTest.p | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/DataDigger.i b/DataDigger.i index ca806d8..71c466b 100644 --- a/DataDigger.i +++ b/DataDigger.i @@ -119,6 +119,7 @@ DEFINE TEMP-TABLE ttField NO-UNDO RCODE-INFORMATION FIELD cOldValue AS CHARACTER LABEL "Old value" FORMAT "x(256)" FIELD hColumn AS HANDLE + FIELD cComment AS CHARACTER INDEX idxPrim IS PRIMARY cTableCacheId INDEX idxName cFieldName INDEX idxOrder iOrder /* for fields browse */ @@ -525,4 +526,5 @@ phHandle = THIS-PROCEDURE:HANDLE. END PROCEDURE. /* getProcHandle */ /* _UIB-CODE-BLOCK-END */ -&ANALYZE-RESUME \ No newline at end of file +&ANALYZE-RESUME + diff --git a/DataDiggerLib.p b/DataDiggerLib.p index 2245614..352f8f6 100644 --- a/DataDiggerLib.p +++ b/DataDiggerLib.p @@ -1894,6 +1894,7 @@ PROCEDURE getFields : bField.cHelp = hBufferField:BUFFER-FIELD('_Help'):BUFFER-VALUE bField.cDesc = hBufferField:BUFFER-FIELD('_Desc'):BUFFER-VALUE bField.cViewAs = hBufferField:BUFFER-FIELD('_View-as'):BUFFER-VALUE + bField.cComment = "Generated by DataDigger" . ASSIGN bField.cXmlNodeName = getXmlNodeName(bField.cFieldName) @@ -5190,3 +5191,4 @@ END FUNCTION. /* setRegistry */ &ANALYZE-RESUME &ENDIF + diff --git a/test/DDTest.p b/test/DDTest.p index ae909bf..431cfab 100644 --- a/test/DDTest.p +++ b/test/DDTest.p @@ -24,3 +24,21 @@ PROCEDURE TestCreateFolder: END PROCEDURE. +@Test. +PROCEDURE TestGetFields: + + DEFINE VARIABLE lib AS HANDLE NO-UNDO. + RUN dataDiggerLib.p PERSISTENT SET lib. + RUN getTables IN lib (INPUT TABLE ttTableFilter, OUTPUT TABLE ttTable). + + RUN getFields IN lib (INPUT 'sports2000', INPUT 'Item', OUTPUT DATASET dsFields). + Assert:equals(DATASET dsFields:NUM-BUFFERS, 2). + Assert:equals(DATASET dsFields:GET-BUFFER-HANDLE(1):NUM-FIELDS, 32). + Assert:equals(DATASET dsFields:GET-BUFFER-HANDLE(1):BUFFER-FIELD(32):NAME, "cComment"). + + DATASET dsFields:GET-BUFFER-HANDLE(1):FIND-FIRST(). + Assert:equals(DATASET dsFields:GET-BUFFER-HANDLE(1):BUFFER-FIELD(32):BUFFER-VALUE, "Generated by DataDigger"). + + DELETE PROCEDURE lib. + +END PROCEDURE.