@@ -120,14 +120,34 @@ srv.post('/github', async (req, res, next) => {
120120
121121///////////////////// STATUS DETAILS /////////////////////
122122
123+ /**
124+ * Serve the test records for requested commit id. Returns JSON data for the commit.
125+ * @param {string } id - A commit SHA of any length, or branch name.
126+ * @param {boolean|null } [isBranch] - If true, id treated as a branch name. Inferred from id by default.
127+ * @param {string } [module] - (Sub)module name. REPO_NAME by default.
128+ * @return {Promise } - Resolved to full commit SHA.
129+ */
130+ function fetchCommit ( id , isBranch = null , module ) {
131+ isBranch = isBranch === null ? ! lib . isSHA ( id ) : isBranch ;
132+ const data = {
133+ owner : process . env [ 'REPO_OWNER' ] ,
134+ repo : module || process . env . REPO_NAME ,
135+ id : id
136+ } ;
137+ let endpoint = `GET /repos/:owner/:repo/${ isBranch ? 'branches' : 'commits' } /:id` ;
138+ return request ( endpoint , data ) . then ( response => {
139+ return isBranch ? response . data . commit . sha : response . data . sha ;
140+ } ) ;
141+ }
142+
123143/**
124144 * Parse the short SHA or branch name and redirect to static reports directory.
125145 */
126146srv . get ( `/coverage/:id` , ( req , res ) => {
127147 let id = lib . shortID ( req . params . id ) ;
128148 let isSHA = ( req . query . branch || ! lib . isSHA ( req . params . id ) ) === false ;
129149 console . log ( 'Request for test coverage for ' + ( isSHA ? `commit ${ id } ` : `branch ${ req . params . id } ` ) ) ;
130- lib . fetchCommit ( req . params . id , ! isSHA , req . query . module )
150+ fetchCommit ( req . params . id , ! isSHA , req . query . module )
131151 . then ( id => {
132152 log ( 'Commit ID found: %s' , id ) ;
133153 res . redirect ( 301 , `/${ ENDPOINT } /coverage/${ id } ` ) ;
@@ -158,7 +178,7 @@ srv.get(`/${ENDPOINT}/records/:id`, function (req, res) {
158178 let id = lib . shortID ( req . params . id ) ;
159179 let isSHA = ( req . query . branch || ! lib . isSHA ( req . params . id ) ) === false ;
160180 console . log ( 'Request for test records for ' + ( isSHA ? `commit ${ id } ` : `branch ${ req . params . id } ` ) ) ;
161- lib . fetchCommit ( req . params . id , ! isSHA , req . query . module )
181+ fetchCommit ( req . params . id , ! isSHA , req . query . module )
162182 . then ( id => {
163183 log ( 'Commit ID found: %s' , id ) ;
164184 let record = lib . loadTestRecords ( id ) ;
@@ -203,7 +223,7 @@ srv.get(`/${ENDPOINT}/:id`, function (req, res) {
203223 `Request for test ${ log_only ? 'log' : 'stdout' } for ` +
204224 ( isSHA ? `commit ${ id } ` : `branch ${ req . params . id } ` )
205225 ) ;
206- lib . fetchCommit ( req . params . id , ! isSHA , req . query . module )
226+ fetchCommit ( req . params . id , ! isSHA , req . query . module )
207227 . then ( id => res . redirect ( 301 , '/log/' + id ) )
208228 . catch ( err => {
209229 log ( '%s' , err . message ) ;
@@ -331,7 +351,7 @@ srv.get('/:badge/:repo/:id', async (req, res) => {
331351 }
332352 let isSHA = lib . isSHA ( req . params . id ) ;
333353 // Find head commit of branch
334- return lib . fetchCommit ( req . params . id , ! isSHA , req . params . repo )
354+ return fetchCommit ( req . params . id , ! isSHA , req . params . repo )
335355 . then ( id => {
336356 data [ 'context' ] = context ;
337357 data [ 'sha' ] = id ;
@@ -603,4 +623,4 @@ queue.on('finish', (err, job) => { // On job end post result to API
603623 } ) ;
604624} ) ;
605625
606- module . exports = { updateStatus, srv, handler, setAccessToken, eventCallback} ;
626+ module . exports = { updateStatus, srv, handler, setAccessToken, eventCallback, fetchCommit } ;
0 commit comments