rmm commited on
Commit
8c3eb82
·
1 Parent(s): 2d694a6

test: updated to test behaviour according to debug flag state

Browse files
src/input/input_handling.py CHANGED
@@ -28,9 +28,15 @@ def _is_str_true(v:str) -> bool:
28
  ''' convert a string to boolean: if contains True or 1 (or yes), return True '''
29
  # https://stackoverflow.com/questions/715417/converting-from-a-string-to-boolean-in-python
30
  return v.lower() in ("yes", "true", "t", "1")
 
 
 
 
 
31
  # an arbitrary set of defaults so testing is less painful...
32
  # ideally we add in some randomization to the defaults
33
- dbg_populate_metadata = _is_str_true( os.getenv("DEBUG_AUTOPOPULATE_METADATA", "False"))
 
34
  # the other main option would be argparse, where we can run `streamlit run src/main.py -- --debug` or similar
35
  # - I think env vars are simple and clean enough, it isn't really a CLI that we want to offer debug options, it is for dev.
36
  if dbg_populate_metadata:
 
28
  ''' convert a string to boolean: if contains True or 1 (or yes), return True '''
29
  # https://stackoverflow.com/questions/715417/converting-from-a-string-to-boolean-in-python
30
  return v.lower() in ("yes", "true", "t", "1")
31
+
32
+ def load_debug_autopopulate() -> bool:
33
+ return _is_str_true( os.getenv("DEBUG_AUTOPOPULATE_METADATA", "False"))
34
+
35
+
36
  # an arbitrary set of defaults so testing is less painful...
37
  # ideally we add in some randomization to the defaults
38
+ dbg_populate_metadata = load_debug_autopopulate()
39
+
40
  # the other main option would be argparse, where we can run `streamlit run src/main.py -- --debug` or similar
41
  # - I think env vars are simple and clean enough, it isn't really a CLI that we want to offer debug options, it is for dev.
42
  if dbg_populate_metadata:
tests/test_demo_input_sidebar.py CHANGED
@@ -3,6 +3,7 @@ from pathlib import Path
3
  from io import BytesIO
4
  from PIL import Image
5
  import numpy as np
 
6
 
7
  import pytest
8
  from unittest.mock import MagicMock, patch
@@ -12,7 +13,7 @@ import time
12
 
13
  from input.input_handling import spoof_metadata
14
  from input.input_observation import InputObservation
15
- from input.input_handling import buffer_uploaded_files
16
 
17
  from streamlit.runtime.uploaded_file_manager import UploadedFile
18
 
@@ -184,7 +185,13 @@ def test_no_input_no_interaction():
184
  at = AppTest.from_file(SCRIPT_UNDER_TEST, default_timeout=10).run()
185
  verify_initial_session_state(at)
186
 
187
- assert at.session_state.input_author_email == spoof_metadata.get("author_email")
 
 
 
 
 
 
188
 
189
  # print (f"[I] whole tree: {at._tree}")
190
  # for elem in at.sidebar.markdown:
 
3
  from io import BytesIO
4
  from PIL import Image
5
  import numpy as np
6
+ import os
7
 
8
  import pytest
9
  from unittest.mock import MagicMock, patch
 
13
 
14
  from input.input_handling import spoof_metadata
15
  from input.input_observation import InputObservation
16
+ from input.input_handling import buffer_uploaded_files, load_debug_autopopulate
17
 
18
  from streamlit.runtime.uploaded_file_manager import UploadedFile
19
 
 
185
  at = AppTest.from_file(SCRIPT_UNDER_TEST, default_timeout=10).run()
186
  verify_initial_session_state(at)
187
 
188
+ dbg = load_debug_autopopulate()
189
+ #var = at.session_state.input_author_email
190
+ #_cprint(f"[I] input email is '{var}' type: {type(var)} | is None? {var is None} | {dbg}", PURPLE)
191
+ if dbg: # autopopulated
192
+ assert at.session_state.input_author_email == spoof_metadata.get("author_email")
193
+ else: # should be empty, the user has to fill it in
194
+ assert at.session_state.input_author_email == ""
195
 
196
  # print (f"[I] whole tree: {at._tree}")
197
  # for elem in at.sidebar.markdown:
tests/test_demo_multifile_upload.py CHANGED
@@ -26,7 +26,7 @@ from streamlit.testing.v1 import AppTest
26
 
27
 
28
  # for expectations
29
- from input.input_handling import spoof_metadata
30
  from input.input_validator import get_image_datetime, get_image_latlon
31
 
32
 
@@ -137,7 +137,11 @@ def test_no_input_no_interaction():
137
 
138
  at = AppTest.from_file("src/apptest/demo_multifile_upload.py").run()
139
  assert at.session_state.observations == {}
140
- assert at.session_state.input_author_email == spoof_metadata.get("author_email")
 
 
 
 
141
 
142
  def test_bad_email():
143
  with patch.dict(spoof_metadata, {"author_email": "notanemail"}):
 
26
 
27
 
28
  # for expectations
29
+ from input.input_handling import spoof_metadata, load_debug_autopopulate
30
  from input.input_validator import get_image_datetime, get_image_latlon
31
 
32
 
 
137
 
138
  at = AppTest.from_file("src/apptest/demo_multifile_upload.py").run()
139
  assert at.session_state.observations == {}
140
+ dbg = load_debug_autopopulate()
141
+ if dbg: # autopopulated
142
+ assert at.session_state.input_author_email == spoof_metadata.get("author_email")
143
+ else: # should be empty, the user has to fill it in
144
+ assert at.session_state.input_author_email == ""
145
 
146
  def test_bad_email():
147
  with patch.dict(spoof_metadata, {"author_email": "notanemail"}):