@@ -58,6 +58,24 @@ struct test_jobspec_job_name {
5858 { NULL , 0 },
5959};
6060
61+ struct test_jobspec_cwd {
62+ const char * filename ;
63+ const char * cwd ;
64+ } jobspec_cwd_tests [] = {
65+ { TEST_SRCDIR "/jobspec/1slot.jobspec" , "/tmp/job" },
66+ { TEST_SRCDIR "/jobspec/cwd_not_specified.jobspec" , NULL },
67+ { NULL , 0 },
68+ };
69+
70+ struct test_jobspec_queue {
71+ const char * filename ;
72+ const char * queue ;
73+ } jobspec_queue_tests [] = {
74+ { TEST_SRCDIR "/jobspec/1slot.jobspec" , NULL },
75+ { TEST_SRCDIR "/jobspec/queue_specified.jobspec" , "batch" },
76+ { NULL , 0 },
77+ };
78+
6179struct test_jobspec_duration {
6280 const char * filename ;
6381 double duration ;
@@ -347,6 +365,68 @@ static void test_jobspec_job_name (void)
347365 }
348366}
349367
368+ static void test_jobspec_cwd (void )
369+ {
370+ struct test_jobspec_cwd * test ;
371+
372+ test = jobspec_cwd_tests ;
373+ while (test -> filename ) {
374+ struct job * job = job_create (NULL , FLUX_JOBID_ANY );
375+ const char * filename = test -> filename ;
376+ const char * cwd = test -> cwd ;
377+ int ret ;
378+
379+ if (!job )
380+ BAIL_OUT ("job_create failed" );
381+
382+ ret = parse_jobspec (job , filename );
383+ ok (ret == 0 , "job_parse_jobspec parsed %s" , filename );
384+ if (cwd ) {
385+ ok (streq (cwd , job -> cwd ),
386+ "job_parse_jobspec correctly parsed job cwd %s=%s" ,
387+ cwd , job -> cwd );
388+ }
389+ else {
390+ ok (job -> cwd == NULL ,
391+ "job_parse_jobspec correctly parsed no job cwd" );
392+ }
393+
394+ job_destroy (job );
395+ test ++ ;
396+ }
397+ }
398+
399+ static void test_jobspec_queue (void )
400+ {
401+ struct test_jobspec_queue * test ;
402+
403+ test = jobspec_queue_tests ;
404+ while (test -> filename ) {
405+ struct job * job = job_create (NULL , FLUX_JOBID_ANY );
406+ const char * filename = test -> filename ;
407+ const char * queue = test -> queue ;
408+ int ret ;
409+
410+ if (!job )
411+ BAIL_OUT ("job_create failed" );
412+
413+ ret = parse_jobspec (job , filename );
414+ ok (ret == 0 , "job_parse_jobspec parsed %s" , filename );
415+ if (queue ) {
416+ ok (streq (queue , job -> queue ),
417+ "job_parse_jobspec correctly parsed job queue %s=%s" ,
418+ queue , job -> queue );
419+ }
420+ else {
421+ ok (job -> queue == NULL ,
422+ "job_parse_jobspec correctly parsed no job queue" );
423+ }
424+
425+ job_destroy (job );
426+ test ++ ;
427+ }
428+ }
429+
350430static void test_jobspec_duration (void )
351431{
352432 struct test_jobspec_duration * test ;
@@ -555,6 +635,8 @@ int main (int argc, char *argv[])
555635
556636 test_jobspec_corner_case ();
557637 test_jobspec_job_name ();
638+ test_jobspec_cwd ();
639+ test_jobspec_queue ();
558640 test_jobspec_duration ();
559641 test_R_corner_case ();
560642 test_R_ranks ();
0 commit comments